PageRenderTime 53ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/editeur/EditPanel.as

https://gitlab.com/sakisan/editeur-aaaah
ActionScript | 400 lines | 339 code | 60 blank | 1 comment | 50 complexity | f635b334f6bb01de4a6b6698dbf968d4 MD5 | raw file
  1. package editeur
  2. {
  3. import blocks.Shape;
  4. import drawing.ShapeDrawerFactory;
  5. import flash.display.DisplayObject;
  6. import flash.display.Graphics;
  7. import flash.display.MovieClip;
  8. import flash.display.Sprite;
  9. import flash.events.Event;
  10. import flash.events.KeyboardEvent;
  11. import flash.events.MouseEvent;
  12. import flash.text.TextField;
  13. import flash.text.TextFieldType;
  14. import flash.ui.Keyboard;
  15. import properties.Getter;
  16. import properties.Properties;
  17. import properties.State;
  18. import support.GroupIterator;
  19. import support.MyButton;
  20. public class EditPanel extends MovieClip
  21. {
  22. private var editer:Editeur1;
  23. private var rest:MovieClip;
  24. private var smallWidth:Number = 65;
  25. private var bigWidth:Number = 100;
  26. private var X:Number = 5;
  27. private var Y:Number = 440;
  28. private var h:int = 18;
  29. private var spacingX:int = 10;
  30. private var spacingY:int = 6;
  31. private var selectionSubMenu:Sprite;
  32. private var groupSubMenu:Sprite;
  33. private var eraserSubMenu:Sprite;
  34. private var dragSubMenu:Sprite;
  35. public function EditPanel()
  36. {
  37. this.editer = Getter.editer;
  38. var outils:TextField = new TextField();
  39. outils.defaultTextFormat = Properties.yellowFormat;
  40. outils.text = "Outils";
  41. outils.x = X;
  42. outils.y = Y-30;
  43. addChild(outils);
  44. var options:TextField = new TextField();
  45. options.defaultTextFormat = Properties.yellowFormat;
  46. options.text = "Options";
  47. options.x = X+smallWidth+10;
  48. options.y = Y-30;
  49. addChild(options);
  50. selectionSubMenu = new Sprite();
  51. groupSubMenu = new Sprite();
  52. eraserSubMenu = new Sprite();
  53. dragSubMenu = new Sprite();
  54. setupEraser();
  55. setupSelectionButton();
  56. setupGroupButton();
  57. setupDragButton();
  58. setupOptionsButton();
  59. setupZoneSelection();
  60. setupDeleteSelection();
  61. setupDegroupButton();
  62. setupGroupAllButton();
  63. setupDuplicateButton();
  64. setupEmptyButton();
  65. setupUndoButton();
  66. setupRedoButton();
  67. setupMoveButton();
  68. setupCenterButton();
  69. setupTurnButton();
  70. addEventListener(Event.ADDED_TO_STAGE, setupStageListeners);
  71. Getter.editPanel = this;
  72. }
  73. //SETUP
  74. private function setupSelectionButton():void
  75. {
  76. var x:int = X;
  77. var y:int = Y;
  78. var selectionButton:MyButton = new MyButton(x,y,smallWidth,h,"Selection F5",Properties.selectionButtonColor);
  79. addChild(selectionButton);
  80. selectionButton.addEventListener(MouseEvent.MOUSE_DOWN, editer.selectionON);
  81. selectionButton.addEventListener(MouseEvent.MOUSE_OVER, showSelectionSubMenu);
  82. function showSelectionSubMenu():void
  83. {
  84. addChild(selectionSubMenu);
  85. hideOtherSubMenus("selection");
  86. }
  87. }
  88. private function setupGroupButton():void
  89. {
  90. var x:int = X;
  91. var y:int = Y+h+spacingY;
  92. var groupButton:MyButton = new MyButton(x,y,smallWidth,h,"Groupe F6",Properties.groupButtonColor);
  93. addChild(groupButton);
  94. groupButton.addEventListener(MouseEvent.MOUSE_DOWN, editer.groupSelection);
  95. groupButton.addEventListener(MouseEvent.MOUSE_OVER, showGroupSubMenu);
  96. function showGroupSubMenu():void
  97. {
  98. addChild(groupSubMenu);
  99. hideOtherSubMenus("group");
  100. }
  101. }
  102. private function setupEraser():void
  103. {
  104. var x:int = X;
  105. var y:int = Y+2*(h+spacingY);
  106. var eraseButton:MyButton = new MyButton(x,y,smallWidth,h,"Gomme F7",Properties.gommeButtonColor);
  107. addChild(eraseButton);
  108. eraseButton.addEventListener(MouseEvent.MOUSE_DOWN, editer.eraseON);
  109. eraseButton.addEventListener(MouseEvent.MOUSE_OVER, showEraserSubMenu);
  110. function showEraserSubMenu():void
  111. {
  112. addChild(eraserSubMenu);
  113. hideOtherSubMenus("eraser");
  114. }
  115. }
  116. private function setupDragButton():void
  117. {
  118. var x:int = X;
  119. var y:int = Y+3*(h+spacingY);
  120. var dragButton:MyButton = new MyButton(x,y,smallWidth,h,"Déplacer F8",Properties.deplacementButtonColor);
  121. addChild(dragButton);
  122. dragButton.addEventListener(MouseEvent.MOUSE_DOWN, editer.dragON);
  123. dragButton.addEventListener(MouseEvent.MOUSE_OVER, showDragSubMenu);
  124. function showDragSubMenu():void
  125. {
  126. addChild(dragSubMenu);
  127. hideOtherSubMenus("drag");
  128. }
  129. }
  130. private function setupOptionsButton():void
  131. {
  132. var x:int = X;
  133. var y:int = Y+4*(h+spacingY);
  134. var optionsButton:MyButton = new MyButton(x,y,smallWidth,h,"Options",Properties.optionsButtonColor);
  135. addChild(optionsButton);
  136. optionsButton.addEventListener(MouseEvent.MOUSE_DOWN, editer.showOptions);
  137. }
  138. private function setupZoneSelection():void
  139. {
  140. var x:int = X+smallWidth+spacingX;
  141. var y:int = Y;
  142. var h:int = 18;
  143. var zoneSelection:MyButton = new MyButton(x,y,bigWidth,h,"zone select",Properties.zoneSelectionButtonColor);
  144. selectionSubMenu.addChild(zoneSelection);
  145. zoneSelection.addEventListener(MouseEvent.MOUSE_DOWN, editer.zoneSelectionON);
  146. }
  147. private function setupDeleteSelection():void
  148. {
  149. var x:int = X+smallWidth+spacingX;
  150. var y:int = Y+h+spacingY;
  151. var deleteSelection:MyButton = new MyButton(x,y,bigWidth,h,"suppr. select.ESC",Properties.deleteSelectionButtonColor);
  152. selectionSubMenu.addChild(deleteSelection);
  153. deleteSelection.addEventListener(MouseEvent.MOUSE_DOWN, editer.deleteSelection);
  154. }
  155. private function setupDegroupButton():void
  156. {
  157. var x:int = X+smallWidth+spacingX;
  158. var y:int = Y;
  159. var degroupButton:MyButton = new MyButton(x,y,bigWidth,h,"Dégroupe",Properties.groupButtonColor);
  160. groupSubMenu.addChild(degroupButton);
  161. degroupButton.addEventListener(MouseEvent.MOUSE_DOWN, editer.degroupSelection);
  162. }
  163. private function setupGroupAllButton():void
  164. {
  165. var x:int = X+smallWidth+spacingX;
  166. var y:int = Y+h+spacingY;
  167. var groupAllButton:MyButton = new MyButton(x,y,bigWidth,h,"(dé)Grouper tout",Properties.groupAllButtonColor);
  168. groupSubMenu.addChild(groupAllButton);
  169. groupAllButton.addEventListener(MouseEvent.MOUSE_DOWN, editer.groupAll);
  170. }
  171. private function setupDuplicateButton():void
  172. {
  173. var x:int = X+smallWidth+spacingX;
  174. var y:int = Y+2*(h+spacingY);
  175. var duplicateButton:MyButton = new MyButton(x,y,bigWidth,h,"Dupliquer",Properties.duplicateButtonColor);
  176. groupSubMenu.addChild(duplicateButton);
  177. duplicateButton.addEventListener(MouseEvent.MOUSE_DOWN, editer.duplicateSelection);
  178. }
  179. private function setupEmptyButton():void
  180. {
  181. var x:int = X+smallWidth+spacingX;
  182. var y:int = Y;
  183. var emptyButton:MyButton = new MyButton(x,y,bigWidth,h,"Effacer tout",0xBB0000);
  184. eraserSubMenu.addChild(emptyButton);
  185. emptyButton.addEventListener(MouseEvent.MOUSE_DOWN, editer.emptyMap);
  186. }
  187. private function setupUndoButton():void
  188. {
  189. var x:int = X+smallWidth+spacingX;
  190. var y:int = Y+h+spacingY;
  191. var undoButton:MyButton = new MyButton(x,y,bigWidth,h,"Undo",Properties.undoButtonColor);
  192. eraserSubMenu.addChild(undoButton);
  193. undoButton.addEventListener(MouseEvent.MOUSE_DOWN, editer.loadPrevious);
  194. }
  195. private function setupRedoButton():void
  196. {
  197. var x:int = X+smallWidth+spacingX;
  198. var y:int = Y+2*(h+spacingY);
  199. var redoButton:MyButton = new MyButton(x,y,bigWidth,h,"Redo",Properties.redoButtonColor);
  200. eraserSubMenu.addChild(redoButton);
  201. redoButton.addEventListener(MouseEvent.MOUSE_DOWN, editer.loadNext);
  202. }
  203. private function setupMoveButton():void
  204. {
  205. var x:int = X+smallWidth+spacingX;
  206. var y:int = Y;
  207. var moveButton:MyButton = new MyButton(x,y,bigWidth,h,"Bouger B",Properties.moveButtonColor);
  208. dragSubMenu.addChild(moveButton);
  209. moveButton.addEventListener(MouseEvent.MOUSE_DOWN, editer.moveON);
  210. }
  211. private function setupCenterButton():void
  212. {
  213. var x:int = X+smallWidth+spacingX;
  214. var y:int = Y+h+spacingY;
  215. var moveButton:MyButton = new MyButton(x,y,bigWidth,h,"Centrer C",Properties.moveButtonColor);
  216. dragSubMenu.addChild(moveButton);
  217. moveButton.addEventListener(MouseEvent.MOUSE_DOWN, editer.resetSize);
  218. }
  219. private function setupTurnButton():void
  220. {
  221. var x:int = X+smallWidth+spacingX;
  222. var y:int = Y+(h+spacingY)*2;
  223. var turnButton:MyButton = new MyButton(x,y,bigWidth,h,"Tourner",Properties.turnButtonColor);
  224. dragSubMenu.addChild(turnButton);
  225. turnButton.addEventListener(MouseEvent.MOUSE_DOWN, editer.turnON);
  226. }
  227. private function hideOtherSubMenus(active:String):void
  228. {
  229. if(active != "selection" && contains(selectionSubMenu))
  230. removeChild(selectionSubMenu);
  231. if(active != "group" && contains(groupSubMenu))
  232. removeChild(groupSubMenu);
  233. if(active != "eraser" && contains(eraserSubMenu))
  234. removeChild(eraserSubMenu);
  235. if(active != "drag" && contains(dragSubMenu))
  236. removeChild(dragSubMenu);
  237. }
  238. private function setupStageListeners(e:Event):void
  239. {
  240. stage.addEventListener(KeyboardEvent.KEY_UP, keyUp);
  241. function keyUp(e:KeyboardEvent):void
  242. {
  243. var it:GroupIterator;var shape:Shape;
  244. if(e.keyCode == Keyboard.BACKSPACE)
  245. {
  246. if(Getter.focusElement != null){
  247. var drawboard:Drawboard = Getter.drawboard;
  248. if(drawboard.contains(Getter.focusElement))
  249. drawboard.setChildIndex(Getter.focusElement, 1);
  250. }
  251. }
  252. if(e.keyCode == Keyboard.ESCAPE)
  253. {
  254. editer.deleteSelection(e);
  255. Getter.focusElement = null;
  256. }
  257. if(e.keyCode == Keyboard.F5){
  258. Getter.drawboard.drawer = ShapeDrawerFactory.createDrawer("Null","Selection");
  259. }
  260. if(e.keyCode == Keyboard.F6){
  261. editer.groupSelection(e);
  262. }
  263. if(e.keyCode == Keyboard.F7){
  264. Getter.drawboard.drawer = ShapeDrawerFactory.createDrawer("Gomme");
  265. }
  266. if(e.keyCode == Keyboard.F8){
  267. Getter.drawboard.drawer = ShapeDrawerFactory.createDrawer("Null","Deplacement");
  268. }
  269. if(e.keyCode == 66) //b
  270. {
  271. editer.moveON();
  272. }
  273. if(e.keyCode == 67) //c
  274. {
  275. editer.resetSize();
  276. }
  277. if(e.keyCode == 89) //y
  278. {
  279. if(e.ctrlKey)
  280. editer.loadNext(e);
  281. }
  282. if(e.keyCode == 90) //z
  283. {
  284. if(e.ctrlKey)
  285. editer.loadPrevious(e);
  286. }
  287. if(e.keyCode == Keyboard.NUMPAD_ADD)
  288. {
  289. it = Getter.selection.iterator;
  290. while(it.hasNext())
  291. it.next().changeThickness(1);
  292. }
  293. if(e.keyCode == Keyboard.NUMPAD_SUBTRACT)
  294. {
  295. it = Getter.selection.iterator;
  296. while(it.hasNext())
  297. it.next().changeThickness(-1);
  298. }
  299. if(e.keyCode == Keyboard.LEFT)
  300. {
  301. it = Getter.selection.iterator;
  302. while(it.hasNext()){
  303. shape = it.next();
  304. shape.setXY(shape.xPosition-Properties.keyMove,shape.yPosition);
  305. }
  306. }
  307. if(e.keyCode == Keyboard.RIGHT)
  308. {
  309. it = Getter.selection.iterator;
  310. while(it.hasNext()){
  311. shape= it.next();
  312. shape.setXY(shape.xPosition+Properties.keyMove,shape.yPosition);
  313. }
  314. }
  315. if(e.keyCode == Keyboard.UP)
  316. {
  317. it = Getter.selection.iterator;
  318. while(it.hasNext()){
  319. shape = it.next();
  320. shape.setXY(shape.xPosition,shape.yPosition-Properties.keyMove);
  321. }
  322. }
  323. if(e.keyCode == Keyboard.DOWN)
  324. {
  325. it = Getter.selection.iterator;
  326. while(it.hasNext()){
  327. shape = it.next();
  328. shape.setXY(shape.xPosition,shape.yPosition+Properties.keyMove);
  329. }
  330. }
  331. }
  332. stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheel);
  333. function mouseWheel(e:MouseEvent):void
  334. {
  335. if(!Getter.codeRenderer.contains(DisplayObject(e.target)))
  336. editer.mouseWheelZoom(e);
  337. }
  338. }
  339. }
  340. }