home *** CD-ROM | disk | FTP | other *** search
- package com.livebrush.ui
- {
- import flash.desktop.NativeApplication;
- import flash.display.NativeMenu;
- import flash.display.NativeMenuItem;
- import flash.display.NativeWindow;
- import flash.ui.Keyboard;
-
- public class MainMenuView extends UIView
- {
- private var _layerMenuItem:NativeMenuItem;
-
- private var _modifyMenuItem:NativeMenuItem;
-
- private var _fileMenuItem:NativeMenuItem;
-
- private var _windowMenu:NativeMenuItem;
-
- private var _mainMenu:NativeMenu;
-
- private var menuItemNames:Array;
-
- private var _helpMenu:NativeMenuItem;
-
- private var menuItems:Array;
-
- private var _controlMenu:NativeMenuItem;
-
- private var _shareMenu:NativeMenuItem;
-
- private var _editMenu:NativeMenuItem;
-
- private var _styleMenu:NativeMenuItem;
-
- public function MainMenuView(ui:UI)
- {
- super(ui);
- this.menuItemNames = [];
- this.menuItems = [];
- init();
- }
-
- override protected function createView() : void
- {
- this.initNativeMenu();
- }
-
- private function initNativeMenu() : void
- {
- var mainMenuXML:XML = <menu>
- <item label="File" name="file" primKey="" isSeparator="false">
- <item label=" New" name="new" primKey="n" isSeparator="false"/>
- <item label=" Open..." name="open" primKey="o" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Save" name="save" primKey="s" isSeparator="false"/>
- <item label=" Save As... " name="saveAs" primKey="S" isSeparator="false"/>
- <item label=" Revert" name="revert" primKey="" isSeparator="false"/>
- <item label=" Cleanup" name="cleanup" primKey="" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Import" name="import" primKey="" isSeparator="false">
- <item label=" Import Project..." name="importProject" primKey="" isSeparator="false"/>
- <item label=" Import Style..." name="importStyle" primKey="" isSeparator="false"/>
- <item label=" Import Deco Set... " name="importDecoSet" primKey="" isSeparator="false"/>
- <item label=" Import Decoration... " name="importDeco" primKey="" isSeparator="false"/>
- <item label=" Import Image..." name="importImage" primKey="" isSeparator="false"/>
- <item label=" Import Dynamic Input SWF... " name="importInputSWF" primKey="" isSeparator="false"/>
- </item>
- <item label=" Export" name="export" primKey="" isSeparator="false">
- <item label=" Export Image..." name="saveImage" primKey="" isSeparator="false"/>
- <item label=" Export Layer(s) To Image... " name="saveLayerImage" primKey="" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Export Line(s) To SVG... " name="exportSVG" primKey="" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Export Style..." name="exportStyle" primKey="" isSeparator="false"/>
- <item label=" Export Deco Set... " name="exportDecoSet" primKey="" isSeparator="false"/>
- </item>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Exit" name="exit" primKey="q" isSeparator="false"/>
- </item>
- <item label="Edit" name="edit" primKey="" isSeparator="false">
- <item label=" Undo" name="undo" primKey="z" isSeparator="false"/>
- <item label=" Redo" name="redo" primKey="y" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Copy" name="copy" primKey="c" isSeparator="false"/>
- <item label=" Paste" name="paste" primKey="v" isSeparator="false"/>
- <item label=" Delete" name="delete" primKey="BACKSPACE" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Select All" name="selectAll" primKey="a" isSeparator="false"/>
- <item label=" Deselect All" name="deselectAll" primKey="A" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Preferences... " name="showGlobalPrefs" primKey="" isSeparator="false"/>
- </item>
- <item label="Layer" name="layer" primKey="" isSeparator="false">
- <item label=" Duplicate Layer" name="dupLayer" primKey="d" isSeparator="false"/>
- <item label=" Flatten Layer(s) to Image Layer" name="flattenLayers" primKey="" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Transform " name="" primKey="" isSeparator="false">
- <item label=" Flip Horizontal" name="flipX" primKey="" isSeparator="false"/>
- <item label=" Flip Vertical" name="flipY" primKey="" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Rotate 90┬░ CW" name="rotateClock" primKey="" isSeparator="false"/>
- <item label=" Rotate 90┬░ CCW" name="rotateCounter" primKey="" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Reset Scale " name="resetScale" primKey="" isSeparator="false"/>
- <item label=" Reset Rotation " name="resetRotation" primKey="" isSeparator="false"/>
- <item label=" Reset Skew " name="resetSkew" primKey="" isSeparator="false"/>
- <item label=" Reset Layer Transformations " name="resetTransform" primKey="" isSeparator="false"/>
- </item>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Simplify Line" name="simplifyLine" primKey="" isSeparator="false"/>
- <item label=" Subdivide Line" name="subdivideLine" primKey="" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Copy Selected Decos to Layer(s)" name="copyEdgeDecos" primKey="" isSeparator="false"/>
- <item label=" Remove Selected Decos from Line " name="removeEdgeDecos" primKey="" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Redraw Selected Layers " name="redrawLayers" primKey="u" isSeparator="false"/>
- </item>
- <item label="Style" name="style" primKey="" isSeparator="false">
- <item label=" Apply Current Style" name="applyStyle" primKey="" isSeparator="false"/>
- <item label=" Convert To Straight Line" name="toStraightLine" primKey="" isSeparator="false"/>
- <item label=" Convert To Smooth Line" name="toSmoothLine" primKey="" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Create Layer from Decoration " name="styleDecoToLayer" primKey="" isSeparator="false"/>
- <item label=" Create Decoration from Layer(s) " name="layersToDeco" primKey="" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Get More Styles..." name="shareStyles" primKey="" isSeparator="false"/>
- <item label=" Get More Decorations..." name="shareDecos" primKey="" isSeparator="false"/>
- </item>
- <item label="Control" name="control" primKey="" isSeparator="false">
- <item label=" Stop All Brushes " name="stopAllBrushes" primKey="B" isSeparator="false"/>
- <item label=" Stop Last Brush " name="stopLastBrush" primKey="b" isSeparator="false"/>
- </item>
- <item label="Share" name="share" primKey="" isSeparator="false">
- <item label=" Share Your Styles & Decorations... " name="shareStyles" primKey="" isSeparator="false"/>
- <item label=" Develop Input Behaviors... " name="develop" primKey="" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Share Your Designs on Facebook... " name="facebook" primKey="" isSeparator="false"/>
- <item label=" Follow Livebrush on Twitter... " name="twitter" primKey="" isSeparator="false"/>
- </item>
- <item label="Window" name="window" primKey="" isSeparator="false">
- <item label=" Brush Styles" name="toggleStyleList" primKey="w" isSeparator="false"/>
- <item label=" Style Preview " name="stylePreview" primKey="p" isSeparator="false"/>
- <item label=" Tool/Style Settings " name="toggleToolProps" primKey="e" isSeparator="false"/>
- <item label=" Layers" name="toggleLayerProps" primKey="r" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Hide/Show Interface " name="toggleUI" primKey="h" isSeparator="false"/>
- <item label=" Full Screen " name="toggleFullScreen" primKey="f" isSeparator="false"/>
- </item>
- <item label="Help" name="help" primKey="" isSeparator="false">
- <item label=" LiveBrush Help..." name="helpLink" primKey="" isSeparator="false"/>
- <item label=" Troubleshooting and Support... " name="supportLink" primKey="" isSeparator="false"/>
- <item label=" Send Feedback..." name="feedbackLink" primKey="" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Visit the forums..." name="forumLink" primKey="" isSeparator="false"/>
- <item label=" LiveBrush.com" name="homeLink" primKey="" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" Check For Updates" name="checkForUpdates" primKey="" isSeparator="false"/>
- <item label="" name="" primKey="" isSeparator="true"/>
- <item label=" About LiveBrush..." name="about" primKey="" isSeparator="false"/>
- </item>
- </menu>;
- this._mainMenu = this.xmlToNativeMenu(mainMenuXML);
- if(NativeWindow.supportsMenu)
- {
- UI.UI_HOLDER.stage.nativeWindow.menu = this.mainMenu;
- }
- else if(NativeApplication.supportsMenu)
- {
- NativeApplication.nativeApplication.menu = this.mainMenu;
- }
- this._fileMenuItem = this.getItemByName("file");
- this._layerMenuItem = this.getItemByName("layer");
- }
-
- public function updateLayerMenu() : void
- {
- }
-
- public function toggleEditShortcuts(b:Boolean) : void
- {
- this.getItemByName("copy").keyEquivalent = b ? "c" : "";
- this.getItemByName("paste").keyEquivalent = b ? "v" : "";
- this.getItemByName("selectAll").keyEquivalent = b ? "a" : "";
- this.getItemByName("deselectAll").keyEquivalent = b ? "A" : "";
- }
-
- public function toggle(b:Boolean) : void
- {
- this.setMenuItemState(this.mainMenu,b);
- }
-
- private function setItemStateByName(name:String, enabled:* = true, checked:Boolean = false) : void
- {
- this.setItemState(this.getItemByName(name),enabled,checked);
- }
-
- private function createNativeMenuItem(label:String, name:String = "", primKey:String = "", isSeparator:Boolean = false) : NativeMenuItem
- {
- var item:NativeMenuItem = new NativeMenuItem(label,isSeparator);
- item.name = name;
- if(primKey == "BACKSPACE")
- {
- item.keyEquivalentModifiers = [Keyboard.BACKSPACE];
- item.keyEquivalent = "";
- }
- else if(primKey != "")
- {
- item.keyEquivalent = primKey;
- }
- this.menuItemNames.push(item.name);
- this.menuItems.push(item);
- return item;
- }
-
- public function setMenuIndexListState(menu:NativeMenu, indexList:Array, enabled:Boolean, checked:Boolean = false) : void
- {
- for(var i:int = 0; i < indexList.length; i++)
- {
- this.setItemState(menu.items[indexList[i]],enabled,checked);
- }
- }
-
- public function getItemByName(name:String) : NativeMenuItem
- {
- return this.menuItems[this.menuItemNames.indexOf(name)];
- }
-
- private function xmlToNativeMenu(xml:XML) : NativeMenu
- {
- var item:NativeMenuItem = null;
- var subMenu:NativeMenu = null;
- var xmlItem:XML = null;
- var menu:NativeMenu = new NativeMenu();
- for each(xmlItem in xml.*)
- {
- item = menu.addItem(this.createNativeMenuItem(xmlItem.@label,xmlItem.@name,xmlItem.@primKey,xmlItem.@isSeparator == "true" ? true : false));
- if(xmlItem.children().length() > 0)
- {
- item.submenu = this.xmlToNativeMenu(xmlItem);
- }
- }
- return menu;
- }
-
- public function get layerMenu() : NativeMenu
- {
- return this._layerMenuItem.submenu;
- }
-
- public function setMenuItemState(menu:NativeMenu, enabled:Boolean, checked:Boolean = false) : void
- {
- this.setMenuItemListState(menu.items,enabled,checked);
- }
-
- public function setMenuItemListState(itemList:Array, enabled:Boolean, checked:Boolean = false) : void
- {
- for(var i:int = 0; i < itemList.length; i++)
- {
- this.setItemState(itemList[i],enabled,checked);
- }
- }
-
- public function get mainMenu() : NativeMenu
- {
- return this._mainMenu;
- }
-
- public function get fileMenu() : NativeMenu
- {
- return this._fileMenuItem.submenu;
- }
-
- public function setItemState(item:NativeMenuItem, enabled:Boolean, checked:Boolean = false) : void
- {
- item.checked = checked;
- item.enabled = enabled;
- }
-
- override protected function createController() : void
- {
- controller = new MainMenuController(this);
- }
- }
- }
-
-