diff --git a/js/materials/DMAMaterials.js b/js/materials/DMAMaterials.js index e1b06eeafa8a75bf397231d2b07288b81f323072..7bac6704bbaa436a7d66aff03a8d179fa711c43c 100644 --- a/js/materials/DMAMaterials.js +++ b/js/materials/DMAMaterials.js @@ -28,7 +28,6 @@ define(['underscore', 'three', 'appState', 'lattice', 'plist', 'threeModel'], fu function setMaterial(id, data){ - if (id && data === null) return deleteMaterial(id); if (!materialsList[id]) materialsList[id] = {}; //check if colors have changed @@ -238,33 +237,17 @@ define(['underscore', 'three', 'appState', 'lattice', 'plist', 'threeModel'], fu - //edit material definition - - var editingMaterial = null;//material definition currently being edited - - function setEditingMaterial(id){ - editingMaterial = id; - } - - function getEditingMaterial(){ - return editingMaterial; - } - - - - return { list: materialsList, setMaterial: setMaterial, + deleteMaterial: deleteMaterial, getMaterialForId: getMaterialForId, getCompositeKeys: getCompositeKeys, getVaildAvailableCompositeKeys: getVaildAvailableCompositeKeys, getChildCellTypes:getChildCellTypes, setToDefaultMaterial: setToDefaultMaterial, - setEditingMaterial: setEditingMaterial, - getEditingMaterial: getEditingMaterial, getDeleteMaterial: getDeleteMaterial }; }); \ No newline at end of file diff --git a/js/menus/MaterialEditorMenuView.js b/js/menus/MaterialEditorMenuView.js index 082002e0d13af267434773b016b7827c18e17742..04b044ba4c7fae8e9c76ae6abf5f2e010a2acf12 100644 --- a/js/menus/MaterialEditorMenuView.js +++ b/js/menus/MaterialEditorMenuView.js @@ -11,17 +11,18 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'materials', 'text!materi return MenuParentView.extend({ events: { - "click #cancelMaterial": "_cancelMaterial", - "click #deleteMaterial": "_deleteMaterial", - "click #finishMaterial": "_save", - "click #newRandomColor": "_changeRandomColor", - "click #saveMaterial": "_saveMaterialToFile" + "click #saveToFile": "_saveMaterialToFile", + "click #newRandomColor": "_changeRandomColor" }, - _initialize: function(){ + _initialize: function(options){ //bind events - if (!materials.getEditingMaterial()) console.warn("no editing material id set"); - this.material = _.clone(materials.list[materials.getEditingMaterial()]); + if (!options.myObject) { + console.warn("no editing material id passed in"); + this.model.set("currentNav", plist.allMenus.navMaterial.parent); + } + this.materialID = options.myObject; + this.material = _.clone(materials.getMaterialForId(options.myObject)); if (!this.material) this.material = { name: "Material " + materialNameIndex++, color: '#000000', @@ -50,37 +51,21 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'materials', 'text!materi this.render(); }, - _save: function(e){ - e.preventDefault(); - if (this.material.name == "") this.material.name = "Material " + materialNameIndex++; - materials.setMaterial(materials.getEditingMaterial(), _.clone(this.material)); - this._exit(); - }, - _saveMaterialToFile: function(e){ e.preventDefault(); - fileSaver.saveMaterial(materials.getEditingMaterial(), this.material); + fileSaver.saveMaterial(this.materialID, this.material); }, - _deleteMaterial: function(e){ + saveExitMenu: function(e, callback){ e.preventDefault(); - if (!materials.list[materials.getEditingMaterial()]) { - this._exit(); - return; - } - var deleted = materials.setMaterial(materials.getEditingMaterial(), null); - if (deleted) this._exit(); - }, - - _cancelMaterial: function(e){ - e.preventDefault(); - this._exit(); + if (this.material.name == "") this.material.name = "Material " + materialNameIndex++; + materials.setMaterial(this.materialID, _.clone(this.material)); + callback(); }, - _exit: function(){ - this.material = null; - materials.setEditingMaterial(null); - this.model.set("currentNav", "navDesign"); + deleteExitMenu: function(e, callback){ + var deleted = materials.deleteMaterial(this.materialID); + if (deleted) callback(); }, _makeTemplateJSON: function(){ @@ -93,6 +78,7 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'materials', 'text!materi delete self.material[key]; }); this.material = null; + this.materialID = null; }, template: _.template(template) diff --git a/js/menus/MaterialMenuView.js b/js/menus/MaterialMenuView.js index 1bf7543155738ed91a4661378419d79799d779e4..3df456fe7e4359599d97e921fb0f73aafe8d3803 100644 --- a/js/menus/MaterialMenuView.js +++ b/js/menus/MaterialMenuView.js @@ -32,30 +32,27 @@ define(['jquery', 'underscore', 'menuParent', 'plist', 'lattice', 'globals', 'ma e.stopPropagation(); e.preventDefault(); var id = $(e.target).data("id"); - lattice.setToCompositeMode(id,materials.list[id]); + lattice.setToCompositeMode(id,materials.getMaterialForId(id)); }, _editMaterial: function(e){ e.stopPropagation(); e.preventDefault(); - var id = $(e.target).data("id"); - this._openMaterialEditor(id); + this._openMaterialEditor($(e.target).data("id")); }, _newMaterial: function(e){ e.preventDefault(); - //first create dummy material - var id = "material" + this.cid + materialID++; + var id = "material" + this.cid + materialID++;//first create new material id this._openMaterialEditor(id); }, - _openMaterialEditor: function(id){ - materials.setEditingMaterial(id); - this.model.set("currentTab", "materialEditor", {silent:true}); - this.model.set("currentNav", "navMaterial"); + _openMaterialEditor: function(materialID){ + require(['menuWrapper'], function(menuWrapper){ + menuWrapper.initTabWithObject(materialID, "materialEditor", "navMaterial") + }); }, - _latticeToComposite: function(e){ lattice.setToCompositeMode(null, lattice.getCompositeData()); lattice.clearCells(); diff --git a/js/menus/MenuWrapperView.js b/js/menus/MenuWrapperView.js index 3c8efc8968cd7841c50ee18f7cd2c99a48eec441..38279957830d04ae561e9c1d61acf7d3be81550d 100644 --- a/js/menus/MenuWrapperView.js +++ b/js/menus/MenuWrapperView.js @@ -17,7 +17,10 @@ define(['jquery', 'underscore', 'plist', 'backbone', 'lattice', 'appState', 'tex "focusout .floatInput": "_softRenderTab",//force rounding if needed "focusout .intInput": "_softRenderTab", "change input:checkbox": "_clickCheckbox", - "click input:radio": "_radioSelection" + "click input:radio": "_radioSelection", + "click #deleteExitMenu": "_deleteExitMenu", + "click #cancelExitMenu": "_cancelExitMenu", + "click #saveExitMenu": "_saveExitMenu" }, initialize: function(){ diff --git a/js/menus/templates/MaterialEditorMenuView.html b/js/menus/templates/MaterialEditorMenuView.html index df017fdb2ba8ec203685b8446ee4f01e0f198212..b18f8190aea0dd3e0bc528d96b65f2519724ad9a 100644 --- a/js/menus/templates/MaterialEditorMenuView.html +++ b/js/menus/templates/MaterialEditorMenuView.html @@ -10,12 +10,12 @@ Material Properties:<br/> <span class="icons"><span class="icon-unchecked"></span><span class="icon-checked"></span></span> Conductive</label><br/> <br/> -<a id="finishMaterial" href="#" class="btn btn-block btn-lg btn-success">Save Material</a><br/> +<a id="saveExitMenu" href="#" class="btn btn-block btn-lg btn-success">Save Material</a><br/> <% if (noDelete){ %> - <a id="cancelMaterial" href="#" class="btn btn-halfWidth btn-lg btn-default">Cancel / Exit</a> - <a id="saveMaterial" href="#" class="btn btn-halfWidth btn-lg pull-right btn-default">Save To File</a><br/><br/> + <a id="cancelExitMenu" href="#" class="btn btn-halfWidth btn-lg btn-default">Cancel / Exit</a> + <a id="saveToFile" href="#" class="btn btn-halfWidth btn-lg pull-right btn-default">Save To File</a><br/><br/> <% } else { %> - <a id="deleteMaterial" href="#" class="btn btn-halfWidth btn-lg btn-default"><span class="fui-trash"></span> Delete</a> - <a id="cancelMaterial" href="#" class="btn btn-halfWidth pull-right btn-lg btn-default">Cancel / Exit</a><br/><br/> - <a id="saveMaterial" href="#" class="btn btn-block btn-lg pull-right btn-default">Save Material To File</a><br/><br/> + <a id="deleteExitMenu" href="#" class="btn btn-halfWidth btn-lg btn-default"><span class="fui-trash"></span> Delete</a> + <a id="cancelExitMenu" href="#" class="btn btn-halfWidth pull-right btn-lg btn-default">Cancel / Exit</a><br/><br/> + <a id="saveToFile" href="#" class="btn btn-block btn-lg pull-right btn-default">Save Material To File</a><br/><br/> <% } %>