From 61a419422b1a05a779fd9a66c53de3fa8ab5f65a Mon Sep 17 00:00:00 2001 From: Ananya Sen Date: Thu, 22 Mar 2012 10:28:34 -0700 Subject: - enable/disable save, saveAs, saveAll, close, closeAll as per documents open - added close file and close all menu items Signed-off-by: Ananya Sen Conflicts: js/helper-classes/3D/draw-utils.js Signed-off-by: Ananya Sen --- js/components/menu/menu-item.reel/menu-item.js | 13 +- js/controllers/document-controller.js | 26 +- js/data/menu-data.js | 830 +++++++++++++------------ js/document/text-document.js | 8 +- 4 files changed, 481 insertions(+), 396 deletions(-) (limited to 'js') diff --git a/js/components/menu/menu-item.reel/menu-item.js b/js/components/menu/menu-item.reel/menu-item.js index 64a89a6a..8d975c4b 100755 --- a/js/components/menu/menu-item.reel/menu-item.js +++ b/js/components/menu/menu-item.reel/menu-item.js @@ -61,6 +61,8 @@ exports.MenuItem = Montage.create(Component, { prepareForDraw: { value: function() { + var boundObject = this.application.ninja, strArr = null, i=0; + if(!this.data) return; if(this.data.separator) { @@ -82,9 +84,16 @@ exports.MenuItem = Montage.create(Component, { } if(this.data.enabled.boundProperty) { + strArr = this.data.enabled.boundObj.split("."); + for(i=0;i 0){ + this.closeDocument(this._documents[this._documents.length -1].uuid); + } + } + } + }, + //////////////////////////////////////////////////////////////////// // fileSaveResult: { value: function (result) { diff --git a/js/data/menu-data.js b/js/data/menu-data.js index 40512f5d..093ecf14 100755 --- a/js/data/menu-data.js +++ b/js/data/menu-data.js @@ -4,414 +4,464 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. */ -var Montage = require("montage/core/core").Montage; +var Montage = require("montage/core/core").Montage; exports.MenuData = Montage.create( Montage, { topLevelMenu: { value: [ - { - "header": "File", - "entries": [ - { - "displayText" : "New Project", - "hasSubMenu" : false, - "enabled": false, - "action": "executeNewProject" - }, - { - "displayText" : "New File", - "hasSubMenu" : false, - "enabled": true, - "action": "executeNewFile" - }, - { - "displayText" : "Open File", - "hasSubMenu" : false, - "enabled": true, - "action": "executeFileOpen" - }, - { - "displayText" : "Close File", - "hasSubMenu" : false, - "enabled": true, - "action": "executeFileClose" - }, - { - "displayText" : "", - "separator": true - }, - { - "displayText" : "Save", - "hasSubMenu" : false, - "enabled": true, - "action": "executeSave" - }, - { - "displayText" : "Save As", - "hasSubMenu" : false, - "enabled": true, - "action":"executeSaveAs" - }, - { - "displayText" : "Save All", - "hasSubMenu" : false, - "enabled": true, - "action": "executeSaveAll" - }, - { - "displayText" : "", - "separator": true - }, - { - "displayText" : "Open Project", - "hasSubMenu" : false, - "enabled": false - }, - { - "displayText" : "Open Recent", - "hasSubMenu" : false, - "enabled": false - }, - { - "displayText" : "Close Project", - "hasSubMenu" : false, - "enabled": false - } - ] - }, - { - "header": "Edit", - "entries": [ - { - "displayText" : "Undo", - "hasSubMenu" : false, - "enabled": { - "value": false, - "boundObj": "undocontroller", - "boundProperty": "canUndo" - }, - "action": "executeUndo" - }, - { - "displayText" : "Redo", - "hasSubMenu" : false, - "enabled": { - "value": false, - "boundObj": "undocontroller", - "boundProperty": "canRedo" - }, - "action": "executeRedo" - }, - { - "displayText" : "Cut", - "hasSubMenu" : false, - "enabled": true - }, - { - "displayText" : "Copy", - "hasSubMenu" : false, - "enabled": true - }, - { - "displayText" : "Paste", - "hasSubMenu" : false, - "enabled": true - } - ] - }, - { - "header": "View", - "entries": [ - { - "displayText" : "Zoom In", - "hasSubMenu" : false, - "enabled": true - }, - { - "displayText" : "Zoom Out", - "hasSubMenu" : false, - "enabled": true - }, - { - "displayText" : "", - "separator": true - }, - { - "displayText" : "Live Preview", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": false, - "boundProperty": "livePreview" - } - }, - { - "displayText" : "Chrome Preview", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": false, - "boundProperty": "chromePreview" - } - }, - { - "displayText" : "Layout View", - "hasSubMenu" : false, - "enabled": true, - "submenu": true, - "entries": [ - { - "displayText" : "View All", - "hasSubMenu" : false, - "radio": true, - "enabled": true, - "checked": { - "value": true, - "boundProperty": "layoutAll" + { + "header": "File", + "entries": [ + { + "displayText" : "New Project", + "hasSubMenu" : false, + "enabled": false, + "action": "executeNewProject" + }, + { + "displayText" : "New File", + "hasSubMenu" : false, + "enabled": true, + "action": "executeNewFile" + }, + { + "displayText" : "Open File", + "hasSubMenu" : false, + "enabled": true, + "action": "executeFileOpen" + }, + { + "displayText" : "Close File", + "hasSubMenu" : false, + "enabled": { + "value": false, + "boundObj": "documentController", + "boundProperty": "activeDocument", + "oneway": true, + "boundValueMutator": function(activeDocument){ + if(activeDocument !== null){return true;} + else{return false;} } }, - { - "displayText" : "View Items Only", - "hasSubMenu" : false, - "radio": true, - "enabled": true, - "checked": { - "value": false, - "boundProperty": "layoutItems" + "action": "executeFileClose" + }, + { + "displayText" : "Close All", + "hasSubMenu" : false, + "enabled": { + "value": false, + "boundObj": "documentController", + "boundProperty": "activeDocument", + "oneway": true, + "boundValueMutator": function(activeDocument){ + if(activeDocument !== null){return true;} + else{return false;} } }, - { - "displayText" : "Off", - "hasSubMenu" : false, - "radio": true, - "enabled": true, - "checked": { - "value": false, - "boundProperty": "layoutOff" + "action": "executeFileCloseAll" + }, + { + "displayText" : "", + "separator": true + }, + { + "displayText" : "Save", + "hasSubMenu" : false, + "enabled": { + "value": false, + "boundObj": "documentController", + "boundProperty": "canSave", + "oneway": true + }, + "action": "executeSave" + }, + { + "displayText" : "Save As", + "hasSubMenu" : false, + "enabled": { + "value": false, + "boundObj": "documentController", + "boundProperty": "activeDocument", + "oneway": true, + "boundValueMutator": function(activeDocument){ + if(activeDocument !== null){return true;} + else{return false;} } - } - ] - }, - { - "displayText" : "Snap", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": true, - "boundProperty": "snap" - } - - }, - { - "displayText" : "Snap To", - "hasSubMenu" : false, - "enabled": { - "value": true, - "boundObj": "appModel", - "boundProperty": "snap" - }, - "submenu": true, - "entries": [ - { - "displayText" : "Grid", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": true, - "boundProperty": "snapGrid" + }, + "action":"executeSaveAs" + }, + { + "displayText" : "Save All", + "hasSubMenu" : false, + "enabled": { + "value": false, + "boundObj": "documentController", + "boundProperty": "canSaveAll", + "oneway": true, + "boundValueMutator": function(canSaveAll){ + if(canSaveAll === true){return true;} + else{return false;} } }, - { - "displayText" : "Objects", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": true, - "boundProperty": "snapObjects" + "action": "executeSaveAll" + }, + { + "displayText" : "", + "separator": true + }, + { + "displayText" : "Open Project", + "hasSubMenu" : false, + "enabled": false + }, + { + "displayText" : "Open Recent", + "hasSubMenu" : false, + "enabled": false + }, + { + "displayText" : "Close Project", + "hasSubMenu" : false, + "enabled": false + } + ] + }, + { + "header": "Edit", + "entries": [ + { + "displayText" : "Undo", + "hasSubMenu" : false, + "enabled": { + "value": false, + "boundObj": "undocontroller", + "boundProperty": "canUndo", + "oneway": true + }, + "action": "executeUndo" + }, + { + "displayText" : "Redo", + "hasSubMenu" : false, + "enabled": { + "value": false, + "boundObj": "undocontroller", + "boundProperty": "canRedo", + "oneway": true + }, + "action": "executeRedo" + }, + { + "displayText" : "Cut", + "hasSubMenu" : false, + "enabled": true + }, + { + "displayText" : "Copy", + "hasSubMenu" : false, + "enabled": true + }, + { + "displayText" : "Paste", + "hasSubMenu" : false, + "enabled": true + } + ] + }, + { + "header": "View", + "entries": [ + { + "displayText" : "Zoom In", + "hasSubMenu" : false, + "enabled": true + }, + { + "displayText" : "Zoom Out", + "hasSubMenu" : false, + "enabled": true + }, + { + "displayText" : "", + "separator": true + }, + { + "displayText" : "Live Preview", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": false, + "boundProperty": "livePreview" + } + }, + { + "displayText" : "Chrome Preview", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": false, + "boundProperty": "chromePreview" + } + }, + { + "displayText" : "Layout View", + "hasSubMenu" : false, + "enabled": true, + "submenu": true, + "entries": [ + { + "displayText" : "View All", + "hasSubMenu" : false, + "radio": true, + "enabled": true, + "checked": { + "value": true, + "boundProperty": "layoutAll" + } + }, + { + "displayText" : "View Items Only", + "hasSubMenu" : false, + "radio": true, + "enabled": true, + "checked": { + "value": false, + "boundProperty": "layoutItems" + } + }, + { + "displayText" : "Off", + "hasSubMenu" : false, + "radio": true, + "enabled": true, + "checked": { + "value": false, + "boundProperty": "layoutOff" + } } + ] + }, + { + "displayText" : "Snap", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": true, + "boundProperty": "snap" + } + + }, + { + "displayText" : "Snap To", + "hasSubMenu" : false, + "enabled": { + "value": true, + "boundObj": "appModel", + "boundProperty": "snap", + "oneway": true }, - { - "displayText" : "Snap Align", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": true, - "boundProperty": "snapAlign" + "submenu": true, + "entries": [ + { + "displayText" : "Grid", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": true, + "boundProperty": "snapGrid" + } + }, + { + "displayText" : "Objects", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": true, + "boundProperty": "snapObjects" + } + }, + { + "displayText" : "Snap Align", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": true, + "boundProperty": "snapAlign" + } } + ] + }, + { + "displayText" : "Show 3D Grid", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": false, + "boundProperty": "show3dGrid" + } + }, + { + "displayText" : "", + "separator": true + }, + { + "displayText" : "Front View", + "hasSubMenu" : false, + "enabled": true, + "radio": true, + "checked": { + "value": true, + "boundProperty": "frontStageView" + } + }, + { + "displayText" : "Top View", + "hasSubMenu" : false, + "enabled": true, + "radio": true, + "checked": { + "value": true, + "boundProperty": "topStageView" + } + }, + { + "displayText" : "Side View", + "hasSubMenu" : false, + "enabled": true, + "radio": true, + "checked": { + "value": true, + "boundProperty": "sideStageView" + } + }, + { + "displayText" : "", + "separator": true + }, + { + "displayText" : "Debug", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": true, + "boundProperty": "debug" } - ] - }, - { - "displayText" : "Show 3D Grid", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": false, - "boundProperty": "show3dGrid" - } - }, - { - "displayText" : "", - "separator": true - }, - { - "displayText" : "Front View", - "hasSubMenu" : false, - "enabled": true, - "radio": true, - "checked": { - "value": true, - "boundProperty": "frontStageView" - } - }, - { - "displayText" : "Top View", - "hasSubMenu" : false, - "enabled": true, - "radio": true, - "checked": { - "value": true, - "boundProperty": "topStageView" - } - }, - { - "displayText" : "Side View", - "hasSubMenu" : false, - "enabled": true, - "radio": true, - "checked": { - "value": true, - "boundProperty": "sideStageView" - } - }, - { - "displayText" : "", - "separator": true - }, - { - "displayText" : "Debug", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": true, - "boundProperty": "debug" - } - } - ] - }, - { - "header": "Window", - "entries": [ - { - "displayText" : "Tools", - "hasSubMenu" : false, - "enabled": true - }, - { - "displayText" : "Timeline", - "hasSubMenu" : false, - "enabled": true - }, - { - "displayText" : "Properties", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": true, - "boundProperty": "PropertiesPanel" - } - }, - { - "displayText" : "Project", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": true, - "boundProperty": "ProjectPanel" - } - }, - { - "displayText" : "Color", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": true, - "boundProperty": "ColorPanel" - } - }, - { - "displayText" : "Components", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": true, - "boundProperty": "ComponentsPanel" - } - }, - { - "displayText" : "CSS", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": true, - "boundProperty": "CSSPanel" } - }, - { - "displayText" : "Materials", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": true, - "boundProperty": "MaterialsPanel" + ] + }, + { + "header": "Window", + "entries": [ + { + "displayText" : "Tools", + "hasSubMenu" : false, + "enabled": true + }, + { + "displayText" : "Timeline", + "hasSubMenu" : false, + "enabled": true + }, + { + "displayText" : "Properties", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": true, + "boundProperty": "PropertiesPanel" + } + }, + { + "displayText" : "Project", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": true, + "boundProperty": "ProjectPanel" + } + }, + { + "displayText" : "Color", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": true, + "boundProperty": "ColorPanel" + } + }, + { + "displayText" : "Components", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": true, + "boundProperty": "ComponentsPanel" + } + }, + { + "displayText" : "CSS", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": true, + "boundProperty": "CSSPanel" + } + }, + { + "displayText" : "Materials", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": true, + "boundProperty": "MaterialsPanel" + } + }, + { + "displayText" : "Presets", + "hasSubMenu" : false, + "enabled": true, + "checked": { + "value": true, + "boundProperty": "PresetsPanel" + } + }, + { + "displayText" : "Code", + "hasSubMenu" : false, + "enabled": true } - }, - { - "displayText" : "Presets", - "hasSubMenu" : false, - "enabled": true, - "checked": { - "value": true, - "boundProperty": "PresetsPanel" + ] + }, + { + "header": "Help", + "entries": [ + { + "displayText" : "Ninja FAQ", + "hasSubMenu" : false, + "enabled": true, + "action": "executeHelpFAQ" + }, + { + "displayText" : "Ninja Forums", + "hasSubMenu" : false, + "enabled": true, + "action": "executeHelpForums" + }, + { + "displayText" : "Help Topics", + "hasSubMenu" : false, + "enabled": true, + "action": "executeHelpTopics" + }, + { + "displayText" : "About Ninja...", + "hasSubMenu" : false, + "enabled": true, + "action": "executeHelpAbout" } - }, - { - "displayText" : "Code", - "hasSubMenu" : false, - "enabled": true - } - ] - }, - { - "header": "Help", - "entries": [ - { - "displayText" : "Ninja FAQ", - "hasSubMenu" : false, - "enabled": true, - "action": "executeHelpFAQ" - }, - { - "displayText" : "Ninja Forums", - "hasSubMenu" : false, - "enabled": true, - "action": "executeHelpForums" - }, - { - "displayText" : "Help Topics", - "hasSubMenu" : false, - "enabled": true, - "action": "executeHelpTopics" - }, - { - "displayText" : "About Ninja...", - "hasSubMenu" : false, - "enabled": true, - "action": "executeHelpAbout" - } - ] - } - ] + ] + } + ] } }); diff --git a/js/document/text-document.js b/js/document/text-document.js index 88464d87..54a53999 100755 --- a/js/document/text-document.js +++ b/js/document/text-document.js @@ -163,7 +163,13 @@ var TextDocument = exports.TextDocument = Montage.create(Component, { needsSave: { get: function() { return this._needsSave; }, - set: function(value) { this._needsSave = value } + set: function(value) { + var i=0, canSaveAll=false; + this._needsSave = value; + + this.application.ninja.documentController.canSave = value;//for save menu state update + this.application.ninja.documentController.canSaveAll = value;//for save menu state update..currently save all is tried to the current document only + } }, callback: { -- cgit v1.2.3