PageRenderTime 50ms CodeModel.GetById 24ms RepoModel.GetById 1ms app.codeStats 0ms

/src/eu/liquify/LiquifyComps.as

https://code.google.com/p/liquifycomps/
ActionScript | 331 lines | 309 code | 19 blank | 3 comment | 3 complexity | 308a9534d53f5dc54fdbbc5803743b40 MD5 | raw file
  1. package eu.liquify {
  2. import eu.liquify.ui.Box;
  3. import eu.liquify.ui.Button;
  4. import eu.liquify.ui.Demonstration;
  5. import eu.liquify.ui.Label;
  6. import eu.liquify.ui.Layout;
  7. import eu.liquify.ui.ProgressBar;
  8. import eu.liquify.ui.ScrollablePanel;
  9. import eu.liquify.ui.Spinner;
  10. import eu.liquify.ui.TweenNano;
  11. import eu.liquify.ui.VBox;
  12. import flash.display.DisplayObject;
  13. import flash.display.DisplayObjectContainer;
  14. import flash.display.Sprite;
  15. import flash.display.StageAlign;
  16. import flash.display.StageScaleMode;
  17. import flash.events.Event;
  18. import flash.events.MouseEvent;
  19. import flash.geom.Point;
  20. import flash.utils.describeType;
  21. import flash.utils.getQualifiedClassName;
  22. import flash.utils.setTimeout;
  23. public class LiquifyComps extends Sprite {
  24. private var items:DisplayObject;
  25. private var time:Number = 0;
  26. private var demo:Demonstration;
  27. public var textboxBox:Box;
  28. public var scrollablePanel:ScrollablePanel;
  29. public var spinner:Spinner;
  30. public var spinnerBox:Box;
  31. public var multitabBox:Box;
  32. public var listboxBox:Box;
  33. public var bindingLabel:Label;
  34. public var rotationSpinner:Spinner;
  35. public var directBindingButton:Button;
  36. public var progressBar:ProgressBar;
  37. public var multipleBindingValue:Boolean;
  38. public function LiquifyComps() {
  39. if (stage) init();
  40. else addEventListener(Event.ADDED_TO_STAGE, init);
  41. }
  42. private function init(e:Event = null):void {
  43. removeEventListener(Event.ADDED_TO_STAGE, init);
  44. stage.scaleMode = StageScaleMode.NO_SCALE;
  45. stage.align = StageAlign.TOP_LEFT;
  46. var xml:XML =
  47. <comps>
  48. <panel>
  49. <vbox label="LiquifyComps" fitToGrid="false" lines="true" spacing="30">
  50. <multitabbox id="multitabBox" label="Multitab horizontal box" lines="true" spacing="15">
  51. <vbox label="Label" fitToGrid="false">
  52. <label label="Default label" />
  53. <hbox fitToGrid="false"><label label="50px" /><label label="truncated" fixedSize="true" width="50" debugSize="true" /></hbox>
  54. <hbox fitToGrid="false"><label label="46px" /><label label="truncated" fixedSize="true" width="46" debugSize="true" /></hbox>
  55. <hbox fitToGrid="false"><label label="45px" /><label label="truncated" fixedSize="true" width="45" debugSize="true" /></hbox>
  56. <hbox fitToGrid="false"><label label="30px" /><label label="truncated" fixedSize="true" width="30" debugSize="true" /></hbox>
  57. <hbox fitToGrid="false"><label label="25px" /><label label="truncated" fixedSize="true" width="25" debugSize="true" /></hbox>
  58. <hbox fitToGrid="false"><label label="24px" /><label label="truncated" fixedSize="true" width="24" debugSize="true" /></hbox>
  59. <hbox fitToGrid="false"><label label="10px" /><label label="truncated" fixedSize="true" width="10" debugSize="true" /></hbox>
  60. </vbox>
  61. <vbox label="Button (extends Label)" fixedWidth="true" width="135">
  62. <button label="Normal button" />
  63. <button label="Toggle button" toggle="true" />
  64. <button label="Selected toggle button" toggle="true" selected="true" />
  65. </vbox>
  66. <vbox label="TextBox (includes Label)" fixedWidth="true" width="150" fitToGrid="false">
  67. <vbox>
  68. <textbox label="Label" text="Value" />
  69. <textbox label="Label" text="Centered" centered="true" />
  70. </vbox>
  71. <vbox id="textboxBox" label="Layout types">
  72. <textbox layoutType="value" label="Fixed value size" text="Value" />
  73. <textbox layoutType="label" label="Label" text="Fixed label size" />
  74. <textbox layoutType="proportional" label="Proportional size" text="50 / 50" />
  75. </vbox>
  76. </vbox>
  77. <vbox id="spinnerBox" label="Spinner (extends Textbox)" gridWidth="150">
  78. <spinner id="spinner" label="Default spinner" />
  79. <spinner label="Min and max" min="5" max="35" />
  80. <spinner label="Step size" step="10" value="10" />
  81. <spinner label="Relative step" relativeStep="true" value="1000" />
  82. </vbox>
  83. <vbox label="Drop-down listbox">
  84. <listbox label="Default listbox">
  85. <item label="One" />
  86. <item label="Two" />
  87. <item label="Three" />
  88. <item label="Four" />
  89. <item label="Five" />
  90. </listbox>
  91. <listbox label="Pair default">
  92. <item label="One" />
  93. <item label="Two" />
  94. </listbox>
  95. <listbox label="Pair autoswitch" pairAutoSwitch="true">
  96. <item label="One" />
  97. <item label="Two" />
  98. </listbox>
  99. <vbox id="listboxBox" label="Layout types">
  100. <listbox layoutType="value" label="Fixed value size" ><item label="One" /><item label="Two" /></listbox>
  101. <listbox layoutType="label" label="Fixed label size" ><item label="One" /><item label="Two" /></listbox>
  102. <listbox layoutType="proportional" label="Proportional size" ><item label="One" /><item label="Two" /></listbox>
  103. </vbox>
  104. </vbox>
  105. <vbox label="Misc." fitToGrid="false">
  106. <vbox label="Color picker">
  107. <colorpicker label="Sun" color="0xFFFF00" />
  108. </vbox>
  109. <vbox label="Progress bar">
  110. <progressbar id="progressBar" />
  111. </vbox>
  112. <vbox label="TextInput">
  113. <textinput text="Just some input." />
  114. </vbox>
  115. </vbox>
  116. </multitabbox>
  117. <hbox fitToGrid="false" spacing="10">
  118. <scrollablepanel id="scrollablePanel" fixedWidth="true" width="400">
  119. <hbox label="Scrollable panel" fitToGrid="false">
  120. <vbox label="With multiple..." fixedWidth="true" width="200">
  121. <button label="Some filler buttons" />
  122. <button label="More" />
  123. <button label="MORE" />
  124. <button label="YES!!" />
  125. <button label="awkward" />
  126. </vbox>
  127. <vbox label="... vboxes">
  128. <button label="Lorem Ipsum" />
  129. <button label="Dolor" />
  130. <button label="Sit" />
  131. <button label="Awkward" />
  132. </vbox>
  133. <vbox label="mmm yes">
  134. <button label="tactical" />
  135. <button label="witty" />
  136. <button label="word" />
  137. <button label="insertion" />
  138. </vbox>
  139. <vbox label="push it">
  140. <button label="buttons" />
  141. <button label="turn" />
  142. <button label="me" />
  143. <button label="on" />
  144. </vbox>
  145. <vbox label="MORE BUTTONS">
  146. <button toggle="true" label="YES YES YES YES YES" />
  147. <button toggle="true" label="YES YES YES YES" />
  148. <button toggle="true" label="YES YES YES" />
  149. <button toggle="true" label="YES YES" />
  150. <button toggle="true" label="YES" />
  151. </vbox>
  152. <vbox label="MORE BUTTONS">
  153. <button toggle="true" label="YES YES YES YES" />
  154. <button toggle="true" label="YES YES YES" />
  155. <button toggle="true" label="YES YES" />
  156. <button toggle="true" label="YES" />
  157. <button toggle="true" label="YES" />
  158. </vbox>
  159. <vbox label="MORE BUTTONS">
  160. <button toggle="true" label="YES YES YES" />
  161. <button toggle="true" label="YES YES" />
  162. <button toggle="true" label="YES" />
  163. <button toggle="true" label="YES" />
  164. <button toggle="true" label="YES" />
  165. </vbox>
  166. <vbox label="MORE BUTTONS">
  167. <button toggle="true" label="YES YES" />
  168. <button toggle="true" label="YES" />
  169. <button toggle="true" label="YES" />
  170. <button toggle="true" label="YES" />
  171. <button toggle="true" label="YES" />
  172. </vbox>
  173. <vbox label="MO">
  174. <button toggle="true" label="YES" selected="true" />
  175. <button toggle="true" label="YES" selected="true" />
  176. <button toggle="true" label="YES" selected="true" />
  177. <button toggle="true" label="YES" selected="true" />
  178. <button toggle="true" label="YES" selected="true" />
  179. </vbox>
  180. <vbox label="RE">
  181. <button toggle="true" label="YES" />
  182. <button toggle="true" label="YES" />
  183. <button toggle="true" label="YES" />
  184. <button toggle="true" label="YES" />
  185. <button toggle="true" label="YES" selected="true" />
  186. </vbox>
  187. <vbox label="MO">
  188. <button toggle="true" label="YES" selected="true" />
  189. <button toggle="true" label="YES" selected="true" />
  190. <button toggle="true" label="YES" />
  191. <button toggle="true" label="YES" />
  192. <button toggle="true" label="YES" />
  193. </vbox>
  194. <vbox label="RE">
  195. <button toggle="true" label="YES" selected="true" />
  196. <button toggle="true" label="YES" selected="true" />
  197. <button toggle="true" label="YES" />
  198. <button toggle="true" label="YES" selected="true" />
  199. <button toggle="true" label="YES" />
  200. </vbox>
  201. <vbox label="MO">
  202. <button toggle="true" label="YES" />
  203. <button toggle="true" label="YES" />
  204. <button toggle="true" label="YES" />
  205. <button toggle="true" label="YES" />
  206. <button toggle="true" label="YES" selected="true" />
  207. </vbox>
  208. <vbox label="RE">
  209. <button toggle="true" label="YES" />
  210. <button toggle="true" label="YES" />
  211. <button toggle="true" label="YES" />
  212. <button toggle="true" label="YES" />
  213. <button toggle="true" label="YES" selected="true" />
  214. </vbox>
  215. <vbox label="MO">
  216. <button toggle="true" label="YES" selected="true" />
  217. <button toggle="true" label="YES" selected="true" />
  218. <button toggle="true" label="YES" />
  219. <button toggle="true" label="YES" selected="true" />
  220. <button toggle="true" label="YES" />
  221. </vbox>
  222. <vbox label="RE">
  223. <button toggle="true" label="YES" selected="true" />
  224. <button toggle="true" label="YES" selected="true" />
  225. <button toggle="true" label="YES" />
  226. <button toggle="true" label="YES" />
  227. <button toggle="true" label="YES" />
  228. </vbox>
  229. <vbox label="MO">
  230. <button toggle="true" label="YES" />
  231. <button toggle="true" label="YES" />
  232. <button toggle="true" label="YES" />
  233. <button toggle="true" label="YES" />
  234. <button toggle="true" label="YES" selected="true" />
  235. </vbox>
  236. <vbox label="RE">
  237. <button toggle="true" label="YES" selected="true" />
  238. <button toggle="true" label="YES" selected="true" />
  239. <button toggle="true" label="YES" selected="true" />
  240. <button toggle="true" label="YES" selected="true" />
  241. <button toggle="true" label="YES" selected="true" />
  242. </vbox>
  243. </hbox>
  244. </scrollablepanel>
  245. <vbox label="Bindings (mostly one way)">
  246. <label label="[ binding output ]" id="bindingLabel" />
  247. <button label="Public function call" click="publicFunctionTest" />
  248. <button id="directBindingButton" label="Direct function binding" />
  249. <button label="Public getter/setter binding" toggle="true" click="publicGetterSetterTest" />
  250. <button label="Public label binding" toggle="true" click="bindingLabel.label" />
  251. <button label="Multiple binding targets" toggle="true" click="multipleBindingValue;multipleBindingTest" />
  252. <button label="Multiple binding targets - swapped" toggle="true" click="multipleBindingTest;multipleBindingValue" />
  253. <spinner label="Spinner label binding" change="bindingLabel.label" layoutType="value" fixedSize="false" />
  254. <spinner id="rotationSpinner" label="Spinner binding rotationY" change="rotationSpinner.rotationY" layoutType="value" fixedSize="false" />
  255. <colorpicker label="Color picker binding" change="bindingLabel.label" layoutType="value" fixedSize="false" />
  256. <textbox label="Textbox label binding" change="bindingLabel.label" layoutType="value" fixedSize="false" />
  257. <textinput text="TextInput binding" change="bindingLabel.label" />
  258. </vbox>
  259. </hbox>
  260. </vbox>
  261. </panel>
  262. </comps>
  263. items = Layout.parse(this, xml);
  264. if (items) addChild(items);
  265. directBindingButton.click = directBindingTest;
  266. scrollablePanel.addChild(new Button( { x: 100, label: "Demonstrate", click: runScrollableDemo } ));
  267. spinnerBox.addChild(new Button( { x: 100, label: "Demonstrate", click: runSpinnerDemo } ));
  268. multitabBox.addRawChild(new Button( { x: 150, label: "Demonstrate", click: runMultitabDemo } ));
  269. demo = new Demonstration();
  270. addChild(demo);
  271. //addChild(ConsoleUtil.instance);
  272. //ConsoleUtil.dock("bot");
  273. //ConsoleUtil.show();
  274. addEventListener(Event.ENTER_FRAME, run);
  275. }
  276. private function bindingPrint(o:Object):void {
  277. bindingLabel.label = ""+o;
  278. }
  279. public function publicFunctionTest():void {
  280. bindingPrint("Public function called");
  281. }
  282. private function directBindingTest():void {
  283. bindingPrint("Direct binding function called");
  284. }
  285. public function get publicGetterSetterTest():Boolean {
  286. return true;
  287. }
  288. public function set publicGetterSetterTest(v:Boolean):void {
  289. bindingPrint("Public setter called: "+v);
  290. }
  291. public function multipleBindingTest():void {
  292. bindingPrint("Multiple binding - "+multipleBindingValue);
  293. }
  294. private function runScrollableDemo():void {
  295. demo.showHorizontalDrag(scrollablePanel, new Point(130, 120));
  296. }
  297. private function runSpinnerDemo():void {
  298. demo.showHorizontalDrag(spinner, new Point(30, 10));
  299. }
  300. private function runMultitabDemo():void {
  301. demo.showDragSweep(multitabBox, new Point(20, 40), new Point(510, 40));
  302. }
  303. private function run(e:Event):void {
  304. textboxBox.gridWidth = 100+Math.sin(time*0.05)*50;
  305. textboxBox.resize();
  306. listboxBox.gridWidth = 90+Math.sin(time*0.05)*30;
  307. listboxBox.resize();
  308. progressBar.value = (Math.sin(time*0.01)*1.1+1)/2;
  309. time++;
  310. }
  311. }
  312. }