aboutsummaryrefslogtreecommitdiff
path: root/js/components/treeview/treeview.reel
diff options
context:
space:
mode:
Diffstat (limited to 'js/components/treeview/treeview.reel')
-rw-r--r--js/components/treeview/treeview.reel/treeview.css5
-rw-r--r--js/components/treeview/treeview.reel/treeview.html55
-rw-r--r--js/components/treeview/treeview.reel/treeview.js129
3 files changed, 189 insertions, 0 deletions
diff --git a/js/components/treeview/treeview.reel/treeview.css b/js/components/treeview/treeview.reel/treeview.css
new file mode 100644
index 00000000..018448f1
--- /dev/null
+++ b/js/components/treeview/treeview.reel/treeview.css
@@ -0,0 +1,5 @@
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> */
diff --git a/js/components/treeview/treeview.reel/treeview.html b/js/components/treeview/treeview.reel/treeview.html
new file mode 100644
index 00000000..d70b016c
--- /dev/null
+++ b/js/components/treeview/treeview.reel/treeview.html
@@ -0,0 +1,55 @@
1<!DOCTYPE html>
2<!-- <copyright>
3This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
4No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
5(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
6</copyright> -->
7<html lang="en">
8<head>
9 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
10 <link rel="stylesheet" href="treeview.css" type="text/css">
11 <script type="text/montage-serialization">
12 {
13 "owner" : {
14 "module" : "js/components/treeview/treeview.reel",
15 "name" : "Treeview",
16 "properties" : {
17 "element" : { "#" : "treeView"},
18 "defaultBranchComponent" : { "@" : "defaultBranch"},
19 "defaultLeafComponent" : { "@" : "defaultLeaf"},
20 "scrollview" : { "@" : "scrollview"},
21 "slot": {"@": "slot"}
22 }
23 },
24 "defaultBranch" : {
25 "module" : "js/components/treeview/branch.reel",
26 "name" : "Branch"
27 },
28 "defaultLeaf" : {
29 "module" : "js/components/treeview/presets-leaf.reel",
30 "name" : "Leaf"
31 },
32 "scrollview": {
33 "module": "montage/ui/scrollview.reel",
34 "name": "Scrollview",
35 "properties": {
36 "element": {"#": "treeView"},
37 "axis": "vertical"
38 }
39 },
40 "slot": {
41 "module": "montage/ui/slot.reel",
42 "name": "Slot",
43 "properties": {
44 "element": {"#": "rootBranch"}
45 }
46 }
47 }
48 </script>
49</head>
50<body>
51 <div id="treeView" class="treeView">
52 <div id="rootBranch" class="treeRoot"></div>
53 </div>
54</body>
55</html> \ No newline at end of file
diff --git a/js/components/treeview/treeview.reel/treeview.js b/js/components/treeview/treeview.reel/treeview.js
new file mode 100644
index 00000000..ebbfe685
--- /dev/null
+++ b/js/components/treeview/treeview.reel/treeview.js
@@ -0,0 +1,129 @@
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
7var Montage = require("montage/core/core").Montage,
8 Component = require("montage/ui/component").Component;
9
10exports.Treeview = Montage.create(Component, {
11
12 substitution : { value : null },
13 data : { value : null },
14
15 _hasBeenDeserialized: {
16 value: false,
17 enumerable: false
18 },
19
20 branchComponent : {
21 value: null,
22 serializable: true
23 },
24 leafComponent : {
25 value: null,
26 serializable: true
27 },
28
29 hasTemplate: {
30 value: true
31 },
32 templateDidLoad : {
33 value : function() {
34 this._initializeRootBranch();
35 }
36 },
37 _initializeRootBranch : {
38 value: function() {
39 var rootBranch;
40
41 ///// Get user-defined branch/leaf components or use defaults
42 this.branchComponent = this.branchComponent || this.defaultBranchComponent;
43
44 ///// Tell branch component what the label key is (defined in tree controller)
45 this.branchComponent.labelKey = this.contentController.labelKey;
46
47 ///// Tell branch component what the branch key is (so it can recursively generate branches)
48 this.branchComponent.branchKey = this.contentController.branchKey;
49
50 rootBranch = Montage.create(this.branchComponent);
51 rootBranch.hideLabel = !this.showRoot;
52 rootBranch.treeView = this;
53
54 this.slot.content = rootBranch;
55 rootBranch.sourceObject = this.contentController.root;
56 rootBranch.needsDraw = true;
57 this.needsDraw = true;
58
59 }
60 },
61 showRoot : {
62 value: null
63 },
64
65 _contentController: {
66 enumerable: false,
67 value: null
68 },
69
70 contentController: {
71 enumerable: false,
72 get: function() {
73 return this._contentController;
74 },
75 set: function(value) {
76 if (this._contentController === value) {
77 return;
78 }
79
80 if (this._contentController) {
81 Object.deleteBinding(this, "selectedIndexes");
82 }
83
84 this._contentController = value;
85
86 if (this._contentController) {
87
88 // And bind what we need from the new contentController
89 var selectedIndexesBindingDescriptor;
90
91 selectedIndexesBindingDescriptor = {
92 boundObject: this._contentController,
93 boundObjectPropertyPath: "selectedIndexes"
94 };
95
96 if (this._hasBeenDeserialized) {
97 Object.defineBinding(this, "selectedIndexes", selectedIndexesBindingDescriptor);
98 } else {
99 // otherwise we need to defer it until later; we haven't been deserialized yet
100 if (!this._controllerBindingsToInstall) {
101 this._controllerBindingsToInstall = {};
102 }
103 this._controllerBindingsToInstall.selectedIndexes = selectedIndexesBindingDescriptor;
104 }
105 }
106
107 }
108 },
109
110 deserializedFromTemplate: {
111 value: function() {
112 var controllerBindingDescriptorsToInstall = this._controllerBindingsToInstall;
113
114 if (controllerBindingDescriptorsToInstall) {
115 for (var key in controllerBindingDescriptorsToInstall) {
116 Object.defineBinding(this, key, controllerBindingDescriptorsToInstall[key]);
117 }
118 delete this._controllerBindingsToInstall;
119 }
120
121 this._hasBeenDeserialized = true;
122 }
123 },
124
125 selectedIndexes: {
126 enumerable: false,
127 value: null
128 }
129}); \ No newline at end of file