home *** CD-ROM | disk | FTP | other *** search
/ PCGUIA 2010 Software/Programs / PCGuia_programas.iso / Software / Utils / Livebrush / Install-LivebrushLite.air / livebrush.swf / scripts / com / livebrush / ui / MainMenuView.as < prev    next >
Encoding:
Text File  |  2009-10-26  |  13.5 KB  |  286 lines

  1. package com.livebrush.ui
  2. {
  3.    import flash.desktop.NativeApplication;
  4.    import flash.display.NativeMenu;
  5.    import flash.display.NativeMenuItem;
  6.    import flash.display.NativeWindow;
  7.    import flash.ui.Keyboard;
  8.    
  9.    public class MainMenuView extends UIView
  10.    {
  11.       private var _layerMenuItem:NativeMenuItem;
  12.       
  13.       private var _modifyMenuItem:NativeMenuItem;
  14.       
  15.       private var _fileMenuItem:NativeMenuItem;
  16.       
  17.       private var _windowMenu:NativeMenuItem;
  18.       
  19.       private var _mainMenu:NativeMenu;
  20.       
  21.       private var menuItemNames:Array;
  22.       
  23.       private var _helpMenu:NativeMenuItem;
  24.       
  25.       private var menuItems:Array;
  26.       
  27.       private var _controlMenu:NativeMenuItem;
  28.       
  29.       private var _shareMenu:NativeMenuItem;
  30.       
  31.       private var _editMenu:NativeMenuItem;
  32.       
  33.       private var _styleMenu:NativeMenuItem;
  34.       
  35.       public function MainMenuView(ui:UI)
  36.       {
  37.          super(ui);
  38.          this.menuItemNames = [];
  39.          this.menuItems = [];
  40.          init();
  41.       }
  42.       
  43.       override protected function createView() : void
  44.       {
  45.          this.initNativeMenu();
  46.       }
  47.       
  48.       private function initNativeMenu() : void
  49.       {
  50.          var mainMenuXML:XML = <menu>
  51.                 <item label="File" name="file" primKey="" isSeparator="false">
  52.                     <item label=" New" name="new" primKey="n" isSeparator="false"/>
  53.                     <item label=" Open..." name="open" primKey="o" isSeparator="false"/>
  54.                     <item label="" name="" primKey="" isSeparator="true"/>
  55.                     <item label=" Save" name="save" primKey="s" isSeparator="false"/>
  56.                     <item label=" Save As...  " name="saveAs" primKey="S" isSeparator="false"/>
  57.                     <item label=" Revert" name="revert" primKey="" isSeparator="false"/>
  58.                     <item label=" Cleanup" name="cleanup" primKey="" isSeparator="false"/>
  59.                     <item label="" name="" primKey="" isSeparator="true"/>
  60.                     <item label=" Import" name="import" primKey="" isSeparator="false">
  61.                         <item label=" Import Project..." name="importProject" primKey="" isSeparator="false"/>
  62.                         <item label=" Import Style..." name="importStyle" primKey="" isSeparator="false"/>
  63.                         <item label=" Import Deco Set...  " name="importDecoSet" primKey="" isSeparator="false"/>
  64.                         <item label=" Import Decoration...  " name="importDeco" primKey="" isSeparator="false"/>
  65.                         <item label=" Import Image..." name="importImage" primKey="" isSeparator="false"/>
  66.                         <item label=" Import Dynamic Input SWF...  " name="importInputSWF" primKey="" isSeparator="false"/>
  67.                     </item>
  68.                     <item label=" Export" name="export" primKey="" isSeparator="false">
  69.                         <item label=" Export Image..." name="saveImage" primKey="" isSeparator="false"/>
  70.                         <item label=" Export Layer(s) To Image...  " name="saveLayerImage" primKey="" isSeparator="false"/>
  71.                         <item label="" name="" primKey="" isSeparator="true"/>
  72.                         <item label=" Export Line(s) To SVG...  " name="exportSVG" primKey="" isSeparator="false"/>
  73.                         <item label="" name="" primKey="" isSeparator="true"/>
  74.                         <item label=" Export Style..." name="exportStyle" primKey="" isSeparator="false"/>
  75.                         <item label=" Export Deco Set... " name="exportDecoSet" primKey="" isSeparator="false"/>
  76.                     </item>
  77.                     <item label="" name="" primKey="" isSeparator="true"/>
  78.                     <item label=" Exit" name="exit" primKey="q" isSeparator="false"/>
  79.                 </item>
  80.                 <item label="Edit" name="edit" primKey="" isSeparator="false">
  81.                     <item label=" Undo" name="undo" primKey="z" isSeparator="false"/>
  82.                     <item label=" Redo" name="redo" primKey="y" isSeparator="false"/>
  83.                     <item label="" name="" primKey="" isSeparator="true"/>
  84.                     <item label=" Copy" name="copy" primKey="c" isSeparator="false"/>
  85.                     <item label=" Paste" name="paste" primKey="v" isSeparator="false"/>
  86.                     <item label=" Delete" name="delete" primKey="BACKSPACE" isSeparator="false"/>
  87.                     <item label="" name="" primKey="" isSeparator="true"/>
  88.                     <item label=" Select All" name="selectAll" primKey="a" isSeparator="false"/>
  89.                     <item label=" Deselect All" name="deselectAll" primKey="A" isSeparator="false"/>
  90.                     <item label="" name="" primKey="" isSeparator="true"/>
  91.                     <item label=" Preferences...  " name="showGlobalPrefs" primKey="" isSeparator="false"/>
  92.                 </item>
  93.                 <item label="Layer" name="layer" primKey="" isSeparator="false">
  94.                     <item label=" Duplicate Layer" name="dupLayer" primKey="d" isSeparator="false"/>
  95.                     <item label=" Flatten Layer(s) to Image Layer" name="flattenLayers" primKey="" isSeparator="false"/>
  96.                     <item label="" name="" primKey="" isSeparator="true"/>
  97.                     <item label=" Transform  " name="" primKey="" isSeparator="false">
  98.                         <item label=" Flip Horizontal" name="flipX" primKey="" isSeparator="false"/>
  99.                         <item label=" Flip Vertical" name="flipY" primKey="" isSeparator="false"/>
  100.                         <item label="" name="" primKey="" isSeparator="true"/>
  101.                         <item label=" Rotate 90┬░ CW" name="rotateClock" primKey="" isSeparator="false"/>
  102.                         <item label=" Rotate 90┬░ CCW" name="rotateCounter" primKey="" isSeparator="false"/>
  103.                         <item label="" name="" primKey="" isSeparator="true"/>
  104.                         <item label=" Reset Scale  " name="resetScale" primKey="" isSeparator="false"/>
  105.                         <item label=" Reset Rotation  " name="resetRotation" primKey="" isSeparator="false"/>
  106.                         <item label=" Reset Skew  " name="resetSkew" primKey="" isSeparator="false"/>
  107.                         <item label=" Reset Layer Transformations  " name="resetTransform" primKey="" isSeparator="false"/>
  108.                     </item>
  109.                     <item label="" name="" primKey="" isSeparator="true"/>
  110.                     <item label=" Simplify Line" name="simplifyLine" primKey="" isSeparator="false"/>
  111.                     <item label=" Subdivide Line" name="subdivideLine" primKey="" isSeparator="false"/>
  112.                     <item label="" name="" primKey="" isSeparator="true"/>
  113.                     <item label=" Copy Selected Decos to Layer(s)" name="copyEdgeDecos" primKey="" isSeparator="false"/>
  114.                     <item label=" Remove Selected Decos from Line  " name="removeEdgeDecos" primKey="" isSeparator="false"/>
  115.                     <item label="" name="" primKey="" isSeparator="true"/>
  116.                     <item label=" Redraw Selected Layers  " name="redrawLayers" primKey="u" isSeparator="false"/>
  117.                 </item>
  118.                 <item label="Style" name="style" primKey="" isSeparator="false">
  119.                     <item label=" Apply Current Style" name="applyStyle" primKey="" isSeparator="false"/>
  120.                     <item label=" Convert To Straight Line" name="toStraightLine" primKey="" isSeparator="false"/>
  121.                     <item label=" Convert To Smooth Line" name="toSmoothLine" primKey="" isSeparator="false"/>
  122.                     <item label="" name="" primKey="" isSeparator="true"/>
  123.                     <item label=" Create Layer from Decoration  " name="styleDecoToLayer" primKey="" isSeparator="false"/>
  124.                     <item label=" Create Decoration from Layer(s)  " name="layersToDeco" primKey="" isSeparator="false"/>
  125.                     <item label="" name="" primKey="" isSeparator="true"/>
  126.                     <item label=" Get More Styles..." name="shareStyles" primKey="" isSeparator="false"/>
  127.                     <item label=" Get More Decorations..." name="shareDecos" primKey="" isSeparator="false"/>
  128.                 </item>
  129.                 <item label="Control" name="control" primKey="" isSeparator="false">
  130.                     <item label=" Stop All Brushes  " name="stopAllBrushes" primKey="B" isSeparator="false"/>
  131.                     <item label=" Stop Last Brush  " name="stopLastBrush" primKey="b" isSeparator="false"/>
  132.                 </item>
  133.                 <item label="Share" name="share" primKey="" isSeparator="false">
  134.                     <item label=" Share Your Styles & Decorations...  " name="shareStyles" primKey="" isSeparator="false"/>
  135.                     <item label=" Develop Input Behaviors...  " name="develop" primKey="" isSeparator="false"/>
  136.                     <item label="" name="" primKey="" isSeparator="true"/>
  137.                     <item label=" Share Your Designs on Facebook...  " name="facebook" primKey="" isSeparator="false"/>
  138.                     <item label=" Follow Livebrush on Twitter...  " name="twitter" primKey="" isSeparator="false"/>
  139.                 </item>
  140.                 <item label="Window" name="window" primKey="" isSeparator="false">
  141.                     <item label=" Brush Styles" name="toggleStyleList" primKey="w" isSeparator="false"/>
  142.                     <item label=" Style Preview  " name="stylePreview" primKey="p" isSeparator="false"/>
  143.                     <item label=" Tool/Style Settings  " name="toggleToolProps" primKey="e" isSeparator="false"/>
  144.                     <item label=" Layers" name="toggleLayerProps" primKey="r" isSeparator="false"/>
  145.                     <item label="" name="" primKey="" isSeparator="true"/>
  146.                     <item label=" Hide/Show Interface  " name="toggleUI" primKey="h" isSeparator="false"/>
  147.                     <item label=" Full Screen " name="toggleFullScreen" primKey="f" isSeparator="false"/>
  148.                 </item>
  149.                 <item label="Help" name="help" primKey="" isSeparator="false">
  150.                     <item label=" LiveBrush Help..." name="helpLink" primKey="" isSeparator="false"/>
  151.                     <item label=" Troubleshooting and Support...  " name="supportLink" primKey="" isSeparator="false"/>
  152.                     <item label=" Send Feedback..." name="feedbackLink" primKey="" isSeparator="false"/>
  153.                     <item label="" name="" primKey="" isSeparator="true"/>
  154.                     <item label=" Visit the forums..." name="forumLink" primKey="" isSeparator="false"/>
  155.                     <item label=" LiveBrush.com" name="homeLink" primKey="" isSeparator="false"/>
  156.                     <item label="" name="" primKey="" isSeparator="true"/>
  157.                     <item label=" Check For Updates" name="checkForUpdates" primKey="" isSeparator="false"/>
  158.                     <item label="" name="" primKey="" isSeparator="true"/>
  159.                     <item label=" About LiveBrush..." name="about" primKey="" isSeparator="false"/>
  160.                 </item>
  161.             </menu>;
  162.          this._mainMenu = this.xmlToNativeMenu(mainMenuXML);
  163.          if(NativeWindow.supportsMenu)
  164.          {
  165.             UI.UI_HOLDER.stage.nativeWindow.menu = this.mainMenu;
  166.          }
  167.          else if(NativeApplication.supportsMenu)
  168.          {
  169.             NativeApplication.nativeApplication.menu = this.mainMenu;
  170.          }
  171.          this._fileMenuItem = this.getItemByName("file");
  172.          this._layerMenuItem = this.getItemByName("layer");
  173.       }
  174.       
  175.       public function updateLayerMenu() : void
  176.       {
  177.       }
  178.       
  179.       public function toggleEditShortcuts(b:Boolean) : void
  180.       {
  181.          this.getItemByName("copy").keyEquivalent = b ? "c" : "";
  182.          this.getItemByName("paste").keyEquivalent = b ? "v" : "";
  183.          this.getItemByName("selectAll").keyEquivalent = b ? "a" : "";
  184.          this.getItemByName("deselectAll").keyEquivalent = b ? "A" : "";
  185.       }
  186.       
  187.       public function toggle(b:Boolean) : void
  188.       {
  189.          this.setMenuItemState(this.mainMenu,b);
  190.       }
  191.       
  192.       private function setItemStateByName(name:String, enabled:* = true, checked:Boolean = false) : void
  193.       {
  194.          this.setItemState(this.getItemByName(name),enabled,checked);
  195.       }
  196.       
  197.       private function createNativeMenuItem(label:String, name:String = "", primKey:String = "", isSeparator:Boolean = false) : NativeMenuItem
  198.       {
  199.          var item:NativeMenuItem = new NativeMenuItem(label,isSeparator);
  200.          item.name = name;
  201.          if(primKey == "BACKSPACE")
  202.          {
  203.             item.keyEquivalentModifiers = [Keyboard.BACKSPACE];
  204.             item.keyEquivalent = "";
  205.          }
  206.          else if(primKey != "")
  207.          {
  208.             item.keyEquivalent = primKey;
  209.          }
  210.          this.menuItemNames.push(item.name);
  211.          this.menuItems.push(item);
  212.          return item;
  213.       }
  214.       
  215.       public function setMenuIndexListState(menu:NativeMenu, indexList:Array, enabled:Boolean, checked:Boolean = false) : void
  216.       {
  217.          for(var i:int = 0; i < indexList.length; i++)
  218.          {
  219.             this.setItemState(menu.items[indexList[i]],enabled,checked);
  220.          }
  221.       }
  222.       
  223.       public function getItemByName(name:String) : NativeMenuItem
  224.       {
  225.          return this.menuItems[this.menuItemNames.indexOf(name)];
  226.       }
  227.       
  228.       private function xmlToNativeMenu(xml:XML) : NativeMenu
  229.       {
  230.          var item:NativeMenuItem = null;
  231.          var subMenu:NativeMenu = null;
  232.          var xmlItem:XML = null;
  233.          var menu:NativeMenu = new NativeMenu();
  234.          for each(xmlItem in xml.*)
  235.          {
  236.             item = menu.addItem(this.createNativeMenuItem(xmlItem.@label,xmlItem.@name,xmlItem.@primKey,xmlItem.@isSeparator == "true" ? true : false));
  237.             if(xmlItem.children().length() > 0)
  238.             {
  239.                item.submenu = this.xmlToNativeMenu(xmlItem);
  240.             }
  241.          }
  242.          return menu;
  243.       }
  244.       
  245.       public function get layerMenu() : NativeMenu
  246.       {
  247.          return this._layerMenuItem.submenu;
  248.       }
  249.       
  250.       public function setMenuItemState(menu:NativeMenu, enabled:Boolean, checked:Boolean = false) : void
  251.       {
  252.          this.setMenuItemListState(menu.items,enabled,checked);
  253.       }
  254.       
  255.       public function setMenuItemListState(itemList:Array, enabled:Boolean, checked:Boolean = false) : void
  256.       {
  257.          for(var i:int = 0; i < itemList.length; i++)
  258.          {
  259.             this.setItemState(itemList[i],enabled,checked);
  260.          }
  261.       }
  262.       
  263.       public function get mainMenu() : NativeMenu
  264.       {
  265.          return this._mainMenu;
  266.       }
  267.       
  268.       public function get fileMenu() : NativeMenu
  269.       {
  270.          return this._fileMenuItem.submenu;
  271.       }
  272.       
  273.       public function setItemState(item:NativeMenuItem, enabled:Boolean, checked:Boolean = false) : void
  274.       {
  275.          item.checked = checked;
  276.          item.enabled = enabled;
  277.       }
  278.       
  279.       override protected function createController() : void
  280.       {
  281.          controller = new MainMenuController(this);
  282.       }
  283.    }
  284. }
  285.  
  286.