diff options
Diffstat (limited to 'js/panels/properties.reel/sections/custom.reel/custom.js')
-rwxr-xr-x | js/panels/properties.reel/sections/custom.reel/custom.js | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/js/panels/properties.reel/sections/custom.reel/custom.js b/js/panels/properties.reel/sections/custom.reel/custom.js index 3c595980..876fe110 100755 --- a/js/panels/properties.reel/sections/custom.reel/custom.js +++ b/js/panels/properties.reel/sections/custom.reel/custom.js | |||
@@ -15,11 +15,13 @@ var ColorSelect = require("js/panels/properties.reel/sections/custom-rows/color- | |||
15 | 15 | ||
16 | // Components Needed to make this work | 16 | // Components Needed to make this work |
17 | var Hottext = require("js/components/hottextunit.reel").HotTextUnit; | 17 | var Hottext = require("js/components/hottextunit.reel").HotTextUnit; |
18 | var HT = require("js/components/hottext.reel").HotText; | ||
18 | var Dropdown = require("js/components/combobox.reel").Combobox; | 19 | var Dropdown = require("js/components/combobox.reel").Combobox; |
19 | var TextField = require("js/components/textfield.reel").TextField; | 20 | var TextField = require("js/components/textfield.reel").TextField; |
20 | var FileInput = require("js/components/ui/file-input.reel").FileInput; | 21 | var FileInput = require("js/components/ui/file-input.reel").FileInput; |
21 | var Checkbox = require("js/components/checkbox.reel").Checkbox; | 22 | var Checkbox = require("js/components/checkbox.reel").Checkbox; |
22 | var ColorChip = require("js/components/ui/color-chip.reel").ColorChip; | 23 | var ColorChip = require("js/components/ui/color-chip.reel").ColorChip; |
24 | var Button = require("montage/ui/button.reel").Button; | ||
23 | 25 | ||
24 | exports.CustomSection = Montage.create(Component, { | 26 | exports.CustomSection = Montage.create(Component, { |
25 | 27 | ||
@@ -128,6 +130,15 @@ exports.CustomSection = Montage.create(Component, { | |||
128 | } | 130 | } |
129 | }, | 131 | }, |
130 | 132 | ||
133 | handleAction: { | ||
134 | value:function(event) { | ||
135 | if(event._event.wasSetByCode) return; | ||
136 | |||
137 | var obj = event.currentTarget; | ||
138 | this._dispatchPropEvent({"type": "change", "id": obj.id, "prop": obj.prop, "value": obj.value, "control": obj}); | ||
139 | } | ||
140 | }, | ||
141 | |||
131 | _dispatchPropEvent: { | 142 | _dispatchPropEvent: { |
132 | value: function(event) { | 143 | value: function(event) { |
133 | // console.log(event); | 144 | // console.log(event); |
@@ -158,15 +169,44 @@ exports.CustomSection = Montage.create(Component, { | |||
158 | value: function(fields) { | 169 | value: function(fields) { |
159 | switch(fields.type) { | 170 | switch(fields.type) { |
160 | case "hottext" : return this.createHottext(fields); | 171 | case "hottext" : return this.createHottext(fields); |
172 | case "ht" : return this.createHT(fields); | ||
161 | case "dropdown" : return this.createDropdown(fields); | 173 | case "dropdown" : return this.createDropdown(fields); |
162 | case "textbox" : return this.createTextField(fields); | 174 | case "textbox" : return this.createTextField(fields); |
163 | case "file" : return this.createFileInput(fields); | 175 | case "file" : return this.createFileInput(fields); |
164 | case "checkbox" : return this.createCheckbox(fields); | 176 | case "checkbox" : return this.createCheckbox(fields); |
165 | case "chip" : return this.createColorChip(fields); | 177 | case "chip" : return this.createColorChip(fields); |
178 | case "button" : return this.createButton(fields); | ||
166 | } | 179 | } |
167 | } | 180 | } |
168 | }, | 181 | }, |
169 | 182 | ||
183 | createHT: { | ||
184 | value: function(aField) { | ||
185 | |||
186 | // Generate Hottext | ||
187 | var obj = HT.create(); | ||
188 | |||
189 | // Set Values for HottextRow | ||
190 | if (aField.id) obj.id = aField.id; | ||
191 | if (aField.value) obj.value = aField.value; | ||
192 | if (aField.min) obj._minValue = aField.min; | ||
193 | if (aField.max) obj._maxValue = aField.max; | ||
194 | if (aField.prop) obj.prop = aField.prop; | ||
195 | |||
196 | //Initiate onChange Events | ||
197 | obj.addEventListener("change", this, false); | ||
198 | obj.addEventListener("changing", this, false); | ||
199 | |||
200 | //Bind object value to controls list so it can be manipulated | ||
201 | Object.defineBinding(this.controls, aField.id, { | ||
202 | boundObject: obj, | ||
203 | boundObjectPropertyPath: "value" | ||
204 | }); | ||
205 | |||
206 | return obj; | ||
207 | } | ||
208 | }, | ||
209 | |||
170 | //Breaking Up Switch Case Statement to functions to return a row | 210 | //Breaking Up Switch Case Statement to functions to return a row |
171 | createHottext: { | 211 | createHottext: { |
172 | value: function(aField) { | 212 | value: function(aField) { |
@@ -317,6 +357,19 @@ exports.CustomSection = Montage.create(Component, { | |||
317 | if (aField.value) obj.label = aField.value; | 357 | if (aField.value) obj.label = aField.value; |
318 | if (aField.prop) obj.prop = aField.prop; | 358 | if (aField.prop) obj.prop = aField.prop; |
319 | 359 | ||
360 | if (aField.enabled) { | ||
361 | if(aField.enabled.boundObject) { | ||
362 | // TODO - For now, always bind to this.controls[someProperty] | ||
363 | Object.defineBinding(obj, "enabled", { | ||
364 | boundObject: this.controls, | ||
365 | boundObjectPropertyPath: aField.enabled.boundProperty, | ||
366 | oneway: false | ||
367 | }); | ||
368 | } else { | ||
369 | obj.enabled = aField.enabled; | ||
370 | } | ||
371 | } | ||
372 | |||
320 | //Initiate onChange Events | 373 | //Initiate onChange Events |
321 | obj.addEventListener("change", this, false); | 374 | obj.addEventListener("change", this, false); |
322 | 375 | ||
@@ -351,6 +404,39 @@ exports.CustomSection = Montage.create(Component, { | |||
351 | 404 | ||
352 | return obj; | 405 | return obj; |
353 | } | 406 | } |
407 | }, | ||
408 | |||
409 | createButton: { | ||
410 | value: function(aField) { | ||
411 | var obj = Button.create(); | ||
412 | |||
413 | // Set Values for Button | ||
414 | if (aField.id) obj.id = aField.id; | ||
415 | if (aField.label) obj.label = aField.label; | ||
416 | if (aField.prop) obj.prop = aField.prop; | ||
417 | |||
418 | // Special casing button so slot uses "button" tag instead of "div" | ||
419 | obj.type = "button"; | ||
420 | |||
421 | if (aField.enabled) { | ||
422 | if(aField.enabled.boundObject) { | ||
423 | // TODO - For now, always bind to this.controls[someProperty] | ||
424 | Object.defineBinding(obj, "enabled", { | ||
425 | boundObject: this.controls, | ||
426 | boundObjectPropertyPath: aField.enabled.boundProperty, | ||
427 | oneway: true | ||
428 | }); | ||
429 | } else { | ||
430 | obj.enabled = aField.enabled; | ||
431 | } | ||
432 | } | ||
433 | |||
434 | obj.addEventListener("action", this, false); | ||
435 | |||
436 | this.controls[aField.id] = obj; | ||
437 | |||
438 | return obj; | ||
439 | } | ||
354 | } | 440 | } |
355 | 441 | ||
356 | }); \ No newline at end of file | 442 | }); \ No newline at end of file |