diff options
Diffstat (limited to 'js/components')
8 files changed, 142 insertions, 40 deletions
diff --git a/js/components/editable.reel/editable.js b/js/components/editable.reel/editable.js index 103e418f..88b93b2c 100644 --- a/js/components/editable.reel/editable.js +++ b/js/components/editable.reel/editable.js | |||
@@ -93,12 +93,43 @@ exports.Editable = Montage.create(Component, { | |||
93 | } | 93 | } |
94 | } | 94 | } |
95 | }, | 95 | }, |
96 | |||
97 | _value : { value: null }, | ||
96 | value : { | 98 | value : { |
97 | get: function() { | 99 | get : function() { return this._value; }, |
98 | return this._element.textContent; | 100 | set : function(value) { |
99 | }, | 101 | if(value === this._value) { return; } |
100 | set: function(str) { | 102 | |
101 | this._element.textContent = str; | 103 | var node = this._getFirstTextNode(); |
104 | node.textContent = value; | ||
105 | |||
106 | this._value = value; | ||
107 | } | ||
108 | }, | ||
109 | _getFirstTextNode : { | ||
110 | value : function(el) { | ||
111 | ///// optional el argument specified container element | ||
112 | var e = el || this._element, | ||
113 | nodes = e.childNodes, node; | ||
114 | |||
115 | if(nodes.length) { | ||
116 | for(var i=0; i<nodes.length; i++) { | ||
117 | if(nodes[i].nodeType === 3) { | ||
118 | ///// found the first text node | ||
119 | node = nodes[i]; | ||
120 | break; | ||
121 | } | ||
122 | } | ||
123 | } | ||
124 | |||
125 | ///// Text node not found | ||
126 | if(!node) { | ||
127 | node = document.createTextNode(''); | ||
128 | e.appendChild(node); | ||
129 | } | ||
130 | |||
131 | |||
132 | return node; | ||
102 | } | 133 | } |
103 | }, | 134 | }, |
104 | 135 | ||
@@ -207,6 +238,8 @@ exports.Editable = Montage.create(Component, { | |||
207 | ///// Text input has changed values | 238 | ///// Text input has changed values |
208 | handleInput : { | 239 | handleInput : { |
209 | value : function(e) { | 240 | value : function(e) { |
241 | this.value = this._getFirstTextNode().textContent; | ||
242 | |||
210 | if(!this.isDirty) { | 243 | if(!this.isDirty) { |
211 | this.isDirty = true; | 244 | this.isDirty = true; |
212 | } | 245 | } |
@@ -230,6 +263,8 @@ exports.Editable = Montage.create(Component, { | |||
230 | value: function(e) { | 263 | value: function(e) { |
231 | e.preventDefault(); | 264 | e.preventDefault(); |
232 | document.execCommand('insertHTML', null, e._event.clipboardData.getData("Text")); | 265 | document.execCommand('insertHTML', null, e._event.clipboardData.getData("Text")); |
266 | this.value = this._element.textContent; | ||
267 | |||
233 | this._sendEvent('paste', e); | 268 | this._sendEvent('paste', e); |
234 | } | 269 | } |
235 | }, | 270 | }, |
diff --git a/js/components/hintable.reel/hintable.js b/js/components/hintable.reel/hintable.js index 08e87bf0..810f0d65 100644 --- a/js/components/hintable.reel/hintable.js +++ b/js/components/hintable.reel/hintable.js | |||
@@ -189,17 +189,18 @@ exports.Hintable = Montage.create(Editable, { | |||
189 | handleInput : { | 189 | handleInput : { |
190 | value : function handleInput(e) { | 190 | value : function handleInput(e) { |
191 | this._super(arguments); | 191 | this._super(arguments); |
192 | 192 | ||
193 | var val = this.value, | 193 | var val = this.value, |
194 | matches, hint; | 194 | matches, hint; |
195 | //console.log('val = "' + val + '"'); | 195 | //console.log('val = "' + val + '"'); |
196 | //// Handle auto-suggest if configured | 196 | //// Handle auto-suggest if configured |
197 | if(this.hints instanceof Array) { | 197 | if(this.hints && this.hints.length) { |
198 | 198 | ||
199 | if(val.length > 0) { // content is not empty | 199 | if(val.length > 0) { // content is not empty |
200 | 200 | ||
201 | this._matchIndex = 0; | 201 | this._matchIndex = 0; |
202 | this.matches = this.hints.filter(function(h) { | 202 | this.matches = this.hints.filter(function(h) { |
203 | if(!h) { return false; } | ||
203 | return h.indexOf(val) === 0; | 204 | return h.indexOf(val) === 0; |
204 | }).sort(); | 205 | }).sort(); |
205 | 206 | ||
@@ -275,32 +276,6 @@ exports.Hintable = Montage.create(Editable, { | |||
275 | return Array.prototype.slice.call(arrayLikeObj); | 276 | return Array.prototype.slice.call(arrayLikeObj); |
276 | } | 277 | } |
277 | }, | 278 | }, |
278 | _getFirstTextNode : { | ||
279 | value : function(el) { | ||
280 | ///// optional el argument specified container element | ||
281 | var e = el || this._element, | ||
282 | nodes = e.childNodes, node; | ||
283 | |||
284 | if(nodes.length) { | ||
285 | for(var i=0; i<nodes.length; i++) { | ||
286 | if(nodes[i].nodeType === 3) { | ||
287 | ///// found the first text node | ||
288 | node = nodes[i]; | ||
289 | break; | ||
290 | } | ||
291 | } | ||
292 | } | ||
293 | |||
294 | ///// Text node not found | ||
295 | if(!node) { | ||
296 | node = document.createTextNode(''); | ||
297 | e.appendChild(node); | ||
298 | } | ||
299 | |||
300 | |||
301 | return node; | ||
302 | } | ||
303 | }, | ||
304 | _super : { | 279 | _super : { |
305 | value : function(args) { | 280 | value : function(args) { |
306 | this.inheritsFrom[arguments.callee.caller.name].apply(this, args); | 281 | this.inheritsFrom[arguments.callee.caller.name].apply(this, args); |
@@ -309,7 +284,8 @@ exports.Hintable = Montage.create(Editable, { | |||
309 | 284 | ||
310 | /* --------- CONFIG ---------- */ | 285 | /* --------- CONFIG ---------- */ |
311 | hints : { | 286 | hints : { |
312 | value : ['Testing a hint.', 'Testing another hint.', 'Testing the last hint.'] | 287 | value : ['Testing a hint.', 'Testing another hint.', 'Testing the last hint.'], |
288 | distinct: true | ||
313 | }, | 289 | }, |
314 | hintClass : { | 290 | hintClass : { |
315 | value : "hintable-hint" | 291 | value : "hintable-hint" |
diff --git a/js/components/layout/tools-list.reel/tools-list.html b/js/components/layout/tools-list.reel/tools-list.html index 3a9661f5..5b175f49 100755 --- a/js/components/layout/tools-list.reel/tools-list.html +++ b/js/components/layout/tools-list.reel/tools-list.html | |||
@@ -1,4 +1,4 @@ | |||
1 | <!DOCTYPE HTML> | 1 | <!DOCTYPE HTML> |
2 | <!-- <copyright> | 2 | <!-- <copyright> |
3 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> | 3 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> |
4 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> | 4 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> |
@@ -95,6 +95,9 @@ | |||
95 | "ZoomTool1": { | 95 | "ZoomTool1": { |
96 | "prototype": "js/tools/ZoomTool" | 96 | "prototype": "js/tools/ZoomTool" |
97 | }, | 97 | }, |
98 | "BindingTool1": { | ||
99 | "prototype": "js/tools/BindingTool" | ||
100 | }, | ||
98 | 101 | ||
99 | "disable": { | 102 | "disable": { |
100 | "prototype": "montage/ui/condition.reel", | 103 | "prototype": "montage/ui/condition.reel", |
@@ -126,7 +129,11 @@ | |||
126 | "EraserTool": {"@": "EraserTool1"}, | 129 | "EraserTool": {"@": "EraserTool1"}, |
127 | "RotateStageTool3D": {"@": "RotateStageTool3D1"}, | 130 | "RotateStageTool3D": {"@": "RotateStageTool3D1"}, |
128 | "PanTool": {"@": "PanTool1"}, | 131 | "PanTool": {"@": "PanTool1"}, |
129 | "ZoomTool": {"@": "ZoomTool1"} | 132 | "ZoomTool": {"@": "ZoomTool1"}, |
133 | "bindingTool": {"@": "BindingTool1"}, | ||
134 | "components": [ | ||
135 | {"@": "repetition1"} | ||
136 | ] | ||
130 | } | 137 | } |
131 | } | 138 | } |
132 | } | 139 | } |
diff --git a/js/components/layout/tools-properties.reel/tools-properties.html b/js/components/layout/tools-properties.reel/tools-properties.html index 6b766532..07444010 100755 --- a/js/components/layout/tools-properties.reel/tools-properties.html +++ b/js/components/layout/tools-properties.reel/tools-properties.html | |||
@@ -1,4 +1,4 @@ | |||
1 | <!DOCTYPE HTML> | 1 | <!DOCTYPE HTML> |
2 | <!-- <copyright> | 2 | <!-- <copyright> |
3 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> | 3 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> |
4 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> | 4 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> |
@@ -102,6 +102,12 @@ | |||
102 | "element": {"#": "zoomProperties"} | 102 | "element": {"#": "zoomProperties"} |
103 | } | 103 | } |
104 | }, | 104 | }, |
105 | "bindingProperties": { | ||
106 | "prototype": "js/components/tools-properties/binding-properties.reel", | ||
107 | "properties": { | ||
108 | "element": {"#": "bindingProperties"} | ||
109 | } | ||
110 |