diff options
Diffstat (limited to 'js/panels/Materials/materials-popup.reel/materials-popup.js')
-rwxr-xr-x | js/panels/Materials/materials-popup.reel/materials-popup.js | 1148 |
1 files changed, 540 insertions, 608 deletions
diff --git a/js/panels/Materials/materials-popup.reel/materials-popup.js b/js/panels/Materials/materials-popup.reel/materials-popup.js index 7c5493c6..501df282 100755 --- a/js/panels/Materials/materials-popup.reel/materials-popup.js +++ b/js/panels/Materials/materials-popup.reel/materials-popup.js | |||
@@ -30,7 +30,11 @@ POSSIBILITY OF SUCH DAMAGE. | |||
30 | 30 | ||
31 | var Montage = require("montage/core/core").Montage, | 31 | var Montage = require("montage/core/core").Montage, |
32 | Component = require("montage/ui/component").Component, | 32 | Component = require("montage/ui/component").Component, |
33 | MaterialsModel = require("js/models/materials-model").MaterialsModel; | 33 | MaterialsModel = require("js/models/materials-model").MaterialsModel, |
34 | NJUtils = require("js/lib/NJUtils").NJUtils, | ||
35 | World = require("js/lib/drawing/world").World, | ||
36 | Rectangle = require("js/lib/geom/rectangle").Rectangle, | ||
37 | ShapesController = require("js/controllers/elements/shapes-controller").ShapesController; | ||
34 | 38 | ||
35 | //////////////////////////////////////////////////////////////////////// | 39 | //////////////////////////////////////////////////////////////////////// |
36 | //Exporting as MaterialsPopup | 40 | //Exporting as MaterialsPopup |
@@ -46,31 +50,55 @@ exports.MaterialsPopup = Montage.create(Component, { | |||
46 | serializable: true | 50 | serializable: true |
47 | }, | 51 | }, |
48 | 52 | ||
53 | saveAsButton: { | ||
54 | value: null, | ||
55 | serializable: true | ||
56 | }, | ||
57 | |||
58 | resetButton: { | ||
59 | value: null, | ||
60 | serializable: true | ||
61 | }, | ||
62 | |||
63 | materialsLibraryRef: { | ||
64 | value: null | ||
65 | }, | ||
66 | |||
49 | materialTitle: { | 67 | materialTitle: { |
50 | value: null, | 68 | value: null, |
51 | serializable: true | 69 | serializable: true |
52 | }, | 70 | }, |
53 | 71 | ||
54 | // Material Properties | 72 | previewCanvas: { |
73 | value: null, | ||
74 | serializable: true | ||
75 | }, | ||
76 | |||
77 | previewShape: { | ||
78 | value: null, | ||
79 | serializable: true | ||
80 | }, | ||
81 | |||
82 | // Material Properties | ||
55 | _materialName: { | 83 | _materialName: { |
56 | enumerable: true, | 84 | enumerable: true, |
57 | value: "" | 85 | value: "" |
58 | }, | 86 | }, |
59 | 87 | ||
60 | _useSelection: { value: false, enumerable: true }, | 88 | _useSelection: { value: false, enumerable: true }, |
61 | _whichMaterial: { value: "fill", enumerable: true }, | 89 | _whichMaterial: { value: "fill", enumerable: true }, |
62 | _originalValues: {value: null, enumerable: true }, | 90 | _originalValues: {value: null, enumerable: true }, |
63 | 91 | ||
64 | captureAction: { | 92 | captureAction: { |
65 | value:function(event) { | 93 | value:function(event) { |
66 | switch(event._currentTarget.label) | 94 | switch(event._currentTarget.label) |
67 | { | 95 | { |
68 | case "Cancel": | 96 | case "Cancel": |
69 | console.log("Cancel material edit"); | 97 | // console.log("Cancel material edit"); |
70 | this.revertToOriginalValues(); | 98 | this.revertToOriginalValues(); |
71 | break; | 99 | break; |
72 | case "OK": | 100 | case "OK": |
73 | console.log("Committing material with the following values:"); | 101 | // console.log("Committing material with the following values:"); |
74 | for(var i=0, len=this.materialsProperties.childComponents.length; i< len; i++) | 102 | for(var i=0, len=this.materialsProperties.childComponents.length; i< len; i++) |
75 | { | 103 | { |
76 | var childControl = this.materialsProperties.childComponents[i]; | 104 | var childControl = this.materialsProperties.childComponents[i]; |
@@ -88,53 +116,81 @@ exports.MaterialsPopup = Montage.create(Component, { | |||
88 | console.log("--------------"); | 116 | console.log("--------------"); |
89 | 117 | ||
90 | } | 118 | } |
91 | break; | 119 | break; |
92 | } | 120 | case "Save As...": |
121 | this.saveAs(); | ||
122 | break; | ||
123 | case "Reset": | ||
124 | this.reset(); | ||
125 | break; | ||
126 | } | ||
93 | 127 | ||
94 | // Notify Materials Library to close popup | 128 | // Notify Materials Library to close popup |
95 | NJevent("hideMaterialPopup"); | 129 | NJevent("hideMaterialPopup"); |
96 | } | 130 | } |
97 | }, | 131 | }, |
98 | 132 | ||
99 | revertToOriginalValues: | 133 | saveAs: |
100 | { | 134 | { |
101 | value: function() | 135 | value: function() |
102 | { | 136 | { |
103 | if (this._originalValues) | 137 | // console.log("Save As..."); |
104 | { | 138 | var materialCopy = prompt("Save material as", this._materialName + "_Copy"); |
105 | this._material.importJSON( this._originalValues ); | 139 | |
106 | 140 | if (materialCopy) | |
107 | if (this._useSelection) | 141 | { |
108 | { | 142 | this.materialsLibraryRef.duplicateMaterial(materialCopy); |
109 | var selection = this.application.ninja.selectedElements; | 143 | } |
110 | if (selection && (selection.length > 0)) | 144 | } |
111 | { | 145 | }, |
112 | var nObjs = selection.length; | 146 | |
113 | for (var iObj=0; iObj<nObjs; iObj++) | 147 | reset: |
114 | { | 148 | { |
115 | var canvas = selection[iObj]; | 149 | value: function() |
116 | var obj; | 150 | { |
117 | if (canvas.elementModel && canvas.elementModel.shapeModel) obj = canvas.elementModel.shapeModel.GLGeomObj; | 151 | // console.log("Reset"); |
118 | if (obj) | 152 | } |
119 | { | 153 | }, |
120 | var matArray = obj._materialArray; | 154 | |
121 | var matTypeArray = obj._materialTypeArray; | 155 | revertToOriginalValues: |
122 | var nMats = matArray.length; | 156 | { |
123 | for (var iMat=0; iMat<nMats; iMat++) | 157 | value: function() |
124 | { | 158 | { |
125 | if (matTypeArray[iMat] === this._whichMaterial) | 159 | if (this._originalValues) |
126 | matArray[iMat].importJSON( this._originalValues ); | 160 | { |
127 | } | 161 | this._material.importJSON( this._originalValues ); |
128 | var world = obj.getWorld(); | 162 | |
129 | if (world) | 163 | if (this._useSelection) |
130 | world.restartRenderLoop(); | 164 | { |
131 | } | 165 | var selection = this.application.ninja.selectedElements; |
132 | } | 166 | if (selection && (selection.length > 0)) |
133 | } | 167 | { |
134 | } | 168 | var nObjs = selection.length; |
135 | } | 169 | for (var iObj=0; iObj<nObjs; iObj++) |
136 | } | 170 | { |
137 | }, | 171 | var canvas = selection[iObj]; |
172 | var obj; | ||
173 | if (canvas.elementModel && canvas.elementModel.shapeModel) obj = canvas.elementModel.shapeModel.GLGeomObj; | ||
174 | if (obj) | ||
175 | { | ||
176 | var matArray = obj._materialArray; | ||
177 | var matTypeArray = obj._materialTypeArray; | ||
178 | var nMats = matArray.length; | ||
179 | for (var iMat=0; iMat<nMats; iMat++) | ||
180 | { | ||
181 | if (matTypeArray[iMat] === this._whichMaterial) | ||
182 | matArray[iMat].importJSON( this._originalValues ); | ||
183 | } | ||
184 | var world = obj.getWorld(); | ||
185 | if (world) | ||
186 | world.restartRenderLoop(); | ||
187 | } | ||
188 | } | ||
189 | } | ||
190 | } | ||
191 | } | ||
192 | } | ||
193 | }, | ||
138 | 194 | ||
139 | updatePreview: | 195 | updatePreview: |
140 | { | 196 | { |
@@ -155,346 +211,384 @@ exports.MaterialsPopup = Montage.create(Component, { | |||
155 | { | 211 | { |
156 | value: function(event) | 212 | value: function(event) |
157 | { |