diff options
Diffstat (limited to 'js/panels/binding/edit-binding-view.reel/edit-binding-view.js')
-rw-r--r-- | js/panels/binding/edit-binding-view.reel/edit-binding-view.js | 359 |
1 files changed, 359 insertions, 0 deletions
diff --git a/js/panels/binding/edit-binding-view.reel/edit-binding-view.js b/js/panels/binding/edit-binding-view.reel/edit-binding-view.js new file mode 100644 index 00000000..4b20f74a --- /dev/null +++ b/js/panels/binding/edit-binding-view.reel/edit-binding-view.js | |||
@@ -0,0 +1,359 @@ | |||
1 | /* <copyright> | ||
2 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> | ||
3 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> | ||
4 | (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. | ||
5 | </copyright> */ | ||
6 | |||
7 | var Montage = require("montage/core/core").Montage, | ||
8 | Component = require("montage/ui/component").Component, | ||
9 | Converter = require("montage/core/converter/converter").Converter; | ||
10 | |||
11 | |||
12 | var editBindingView = exports.EditBindingView = Montage.create(Component, { | ||
13 | sourceObjectIconElement : { value: null }, | ||
14 | boundObjectIconElement : { value: null }, | ||
15 | |||
16 | objectIdentifiers : { | ||
17 | value: null | ||
18 | }, | ||
19 | getObjectIdentifiers : { | ||
20 | value: function() { | ||
21 | return this.application.ninja.objectsController.objects.map(function(object) { | ||
22 | return object.identifier; | ||
23 | }); | ||
24 | } | ||
25 | }, | ||
26 | |||
27 | /* ------------------- | ||
28 | Object Identifier (for associating with object) | ||
29 | ------------------- */ | ||
30 | |||
31 | _sourceObjectIdentifier : { value: null }, | ||
32 | sourceObjectIdentifier : { | ||
33 | get : function() { return this._sourceObjectIdentifier; }, | ||
34 | set : function(value) { | ||
35 | if(value === this._sourceObjectIdentifier) { return; } | ||
36 | |||
37 | this._sourceObjectIdentifier = value; | ||
38 | |||
39 | this.needsDraw = true; | ||
40 | } | ||
41 | }, | ||
42 | |||
43 | _boundObjectIdentifier : { value: null }, | ||
44 | boundObjectIdentifier : { | ||
45 | get : function() { return this._boundObjectIdentifier; }, | ||
46 | set : function(value) { | ||
47 | if(value === this._boundObjectIdentifier) { return; } | ||
48 | |||
49 | this._boundObjectIdentifier = value; | ||
50 | |||
51 | this.needsDraw = true; | ||
52 | } | ||
53 | }, | ||
54 | |||
55 | |||
56 | /* ------------------- | ||
57 | Binding Properties | ||
58 | ------------------- */ | ||
59 | |||
60 | _sourceObject : { value: null }, | ||
61 | sourceObject : { | ||
62 | get : function() { return this._sourceObject; }, | ||
63 | set : function(value) { | ||
64 | if(value === this._sourceObject) { return; } | ||
65 | |||
66 | this._sourceObject = value; | ||
67 | |||
68 | if(value) { | ||
69 | this.sourceObjectPropertyPathField.hints = this.application.ninja.objectsController.getPropertiesFromObject(value); | ||
70 | } | ||
71 | |||
72 | this.needsDraw = true; | ||
73 | } | ||
74 | }, | ||
75 | |||
76 | _boundObject : { value: null }, | ||
77 | boundObject : { | ||
78 | get : function() { return this._boundObject; }, | ||
79 | set : function(value) { | ||
80 | if(value === this._boundObject) { return; } | ||
81 | this._boundObject = value; | ||
82 | |||
83 | if(value) { | ||
84 | this.boundObjectPropertyPathField.hints = this.application.ninja.objectsController.getPropertiesFromObject(value); | ||
85 | } | ||
86 | |||
87 | this.needsDraw = true; | ||
88 | } | ||
89 | }, | ||
90 | |||
91 | _sourceObjectPropertyPath : { value: null }, | ||
92 | sourceObjectPropertyPath : { | ||
93 | get : function() { return this._sourceObjectPropertyPath; }, | ||
94 | set : function(value) { | ||
95 | if(value === this._sourceObjectPropertyPath) { return; } | ||
96 | |||
97 | this._sourceObjectPropertyPath = value; | ||
98 | |||
99 | this.needsDraw = true; | ||
100 | } | ||
101 | }, | ||
102 | |||
103 | _boundObjectPropertyPath : { value: null }, | ||
104 | boundObjectPropertyPath : { | ||
105 | get : function() { return this._boundObjectPropertyPath; }, | ||
106 | set : function(value) { | ||
107 | if(value === this._boundObjectPropertyPath) { return; } | ||
108 | |||
109 | this._boundObjectPropertyPath = value; | ||
110 | |||
111 | this.needsDraw = true; | ||
112 | } | ||
113 | }, | ||
114 | |||
115 | _oneway: { | ||
116 | value: null | ||
117 | }, | ||
118 | oneway: { | ||
119 | get: function() { | ||
120 | return this._oneway; | ||
121 | }, | ||
122 | set: function(value) { | ||
123 | if(value === this._oneway) { return; } | ||
124 | |||
125 | this._oneway = !!value; | ||
126 | |||
127 | this.needsDraw = true; | ||
128 | } | ||
129 | }, | ||
130 | |||
131 | /* ------------------- | ||
132 | Binding Args Object | ||
133 | ------------------- */ | ||
134 | |||
135 | _bindingArgs : { | ||
136 | value: null | ||
137 | }, | ||
138 | bindingArgs :{ | ||
139 | get: function() { | ||
140 | return this._bindingArgs; | ||
141 | }, | ||
142 | set: function(value) { | ||
143 | if(value === this._bindingArgs) { return; } | ||
144 | |||
145 | // clear form values | ||
146 | this.clearForm(); | ||
147 | |||
148 | this._bindingArgs = value; | ||
149 | |||
150 | if(value) { | ||
151 | // set up hints for hintable components | ||
152 | this.objectIdentifiers = this.getObjectIdentifiers(); | ||
153 | this.boundObjectField.hints = this.objectIdentifiers; | ||
154 | this.sourceObjectField.hints = this.objectIdentifiers; | ||
155 | |||
156 | if(value.sourceObject) { | ||
157 | this.sourceObjectIdentifier = value.sourceObject.identifier || value.sourceObject._montage_metadata.label; | ||
158 | this.sourceObjectPropertyPath = value.sourceObjectPropertyPath || ''; | ||
159 | } | ||
160 | |||
161 | if(value.boundObject) { | ||
162 | this.boundObjectIdentifier = value.boundObject.identifier || ''; | ||
163 | this.boundObjectPropertyPath = value.boundObjectPropertyPath || ''; | ||
164 | this.isNewBinding = false; | ||
165 | } else { | ||
166 | this.isNewBinding = true; | ||
167 | } | ||
168 | |||
169 | this.oneway = value.oneway; | ||
170 | } | ||
171 | |||
172 | this.needsDraw = true; | ||
173 | } | ||
174 | }, | ||
175 | |||
176 | /* ------------------- | ||
177 | Form properties | ||
178 | ------------------- */ | ||
179 | |||
180 | dirty: { value: null }, | ||
181 | isNewBinding : { value: null }, | ||
182 | |||
183 | "sourceObjectField" : {value: null, enumerable: true }, | ||
184 | "boundObjectField" : {value: null, enumerable: true }, | ||
185 | "sourceObjectPropertyPathField" : {value: null, enumerable: true }, | ||
186 | "boundObjectPropertyPathField" : {value: null, enumerable: true }, | ||
187 | "directionCheckbox" : {value: null, enumerable: true }, | ||
188 | "deleteButton" : {value: null }, | ||
189 | "saveButton" : {value: null }, | ||
190 | "cancelButton" : {value: null }, | ||
191 | |||
192 | clearForm : { | ||
193 | value: function() { | ||
194 | var fields = ["sourceObjectField", | ||
195 | "boundObjectField", | ||
196 | "sourceObjectPropertyPathField", | ||
197 | "boundObjectPropertyPathField"]; | ||
198 | |||
199 | fields.forEach(function(fieldName) { | ||
200 | this[fieldName].value = ""; | ||
201 | }, this); | ||
202 | |||
203 | this._bindingArgs = null; | ||
204 | |||
205 | this.dirty = false; | ||
206 | } | ||
207 | }, | ||
208 | |||
209 | saveForm : { | ||
210 | value: function() { | ||
211 | var controller = this.application.ninja.objectsController, | ||
212 | newBindingArgs = { | ||
213 | sourceObject : this.sourceObject, | ||
214 | sourceObjectPropertyPath : this.sourceObjectPropertyPath, | ||
215 |