aboutsummaryrefslogtreecommitdiff
path: root/js/components
diff options
context:
space:
mode:
Diffstat (limited to 'js/components')
-rw-r--r--js/components/editable.reel/editable.js45
-rw-r--r--js/components/hintable.reel/hintable.js34
-rwxr-xr-xjs/components/layout/tools-list.reel/tools-list.html11
-rwxr-xr-xjs/components/layout/tools-properties.reel/tools-properties.html12
-rw-r--r--js/components/toolbar.reel/toolbar.html3
-rwxr-xr-xjs/components/tools-properties/binding-properties.reel/binding-properties.css17
-rwxr-xr-xjs/components/tools-properties/binding-properties.reel/binding-properties.html35
-rwxr-xr-xjs/components/tools-properties/binding-properties.reel/binding-properties.js25
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