diff options
Diffstat (limited to 'js/panels/Panel.reel/Panel.js')
-rwxr-xr-x | js/panels/Panel.reel/Panel.js | 279 |
1 files changed, 113 insertions, 166 deletions
diff --git a/js/panels/Panel.reel/Panel.js b/js/panels/Panel.reel/Panel.js index c8dd0456..e0bf3f18 100755 --- a/js/panels/Panel.reel/Panel.js +++ b/js/panels/Panel.reel/Panel.js | |||
@@ -9,227 +9,174 @@ var Component = require("montage/ui/component").Component; | |||
9 | 9 | ||
10 | exports.Panel = Montage.create(Component, { | 10 | exports.Panel = Montage.create(Component, { |
11 | 11 | ||
12 | 12 | name: { value: "Panel" }, | |
13 | reelDidLoad: { | 13 | collapsedHeight: {value: 26}, |
14 | value: function() { | 14 | _collapsed: {value: false}, |
15 | } | 15 | _height: { value: 200 }, |
16 | }, | 16 | minHeight: {value: 200 }, |
17 | 17 | maxHeight: { value: null}, | |
18 | collapsedHeight: { | 18 | flexible: {value: true}, |
19 | value:26 | 19 | _locked: { value: false}, |
20 | }, | 20 | isResizing: {value: false }, |
21 | 21 | resizer: {value: null }, | |
22 | _isFirstDraw: { | 22 | modulePath: {value: null}, |
23 | value:false | 23 | moduleName: {value: null}, |
24 | }, | 24 | _contentComponent: {value: null}, |
25 | 25 | ||
26 | _panelBase: { | 26 | contentComponent: { |
27 | value: null | 27 | get: function() { |
28 | }, | 28 | return this._contentComponent; |
29 | |||
30 | panelBase: { | ||
31 | get: function() | ||
32 | { | ||
33 | return this._panelBase; | ||
34 | }, | 29 | }, |
35 | set: function(value) | 30 | set: function(val) { |
36 | { | 31 | if (val !== null && val !== this._contentComponent) { |
37 | this._panelBase = value; | 32 | this.panelContent.content = val; |
38 | this.needsDraw = true; | 33 | this.panelContent.needsDraw = true; |
34 | this._contentComponent = val; | ||
35 | } | ||
39 | } | 36 | } |
40 | }, | 37 | }, |
41 | 38 | ||
42 | _panelContent: { | 39 | collapsed: { |
43 | value: null | 40 | get: function() { |
44 | }, | 41 | return this._collapsed; |
45 | |||
46 | panelContent: { | ||
47 | get: function() | ||
48 | { | ||
49 | return this._panelContent; | ||
50 | }, | 42 | }, |
51 | set: function(value) | 43 | set: function(val) { |
52 | { | 44 | if (this._collapsed !== val) { |
53 | if (this._panelContent === value) { | 45 | this._collapsed = val; |
54 | return; | 46 | this.needsDraw = true; |
55 | } | 47 | } |
56 | this._panelContent = value; | ||
57 | this.needsDraw = true; | ||
58 | } | 48 | } |
59 | }, | 49 | }, |
60 | 50 | ||
61 | collapseToggle: { | 51 | height: { |
62 | value: function() { | 52 | get: function() { |
63 | if (this.panelBase.forcedCollapse) { | 53 | if (this._height < this.minHeight) { |
64 | this.panelBase.forcedCollapse = false; | 54 | this._height = this.minHeight; |
65 | this.panelBase.collapsed = false; | 55 | } |
66 | this.needsDraw = true; | 56 | return this._height; |
67 | 57 | }, | |
68 | } else { | 58 | set: function(val) { |
69 | this.panelBase.collapsed = !this.panelBase.collapsed; | 59 | if(this._height !== val) { |
60 | this._height = val; | ||
70 | this.needsDraw = true; | 61 | this.needsDraw = true; |
71 | } | 62 | } |
72 | NJevent("panelCollapsed", this); | ||
73 | } | ||
74 | }, | ||
75 | |||
76 | closePanel: { | ||
77 | value: function() { | ||
78 | NJevent("panelClose", this); | ||
79 | } | ||
80 | }, | ||
81 | |||
82 | handleMouseover: { | ||
83 | value: function() { | ||
84 | this.element.draggable = true; | ||
85 | } | ||
86 | }, | ||
87 | |||
88 | handleMouseout: { | ||
89 | value: function() { | ||
90 | this.element.draggable = false; | ||
91 | } | 63 | } |
92 | }, | 64 | }, |
93 | 65 | ||
94 | _resizer: { | 66 | _resizedHeight: { |
95 | value: null | 67 | value: 0 |
96 | }, | 68 | }, |
97 | 69 | ||
98 | resizer: { | 70 | locked: { |
99 | get: function() { | 71 | get: function() { |
100 | return this._resizer; | 72 | return this._locked; |
101 | }, | 73 | }, |
102 | set: function(val) { | 74 | set: function(val) { |
103 | this._resizer = val; | 75 | if (this.flexible) { |
76 | this._locked = val; | ||
77 | this.needsDraw = true; | ||
78 | } | ||
104 | } | 79 | } |
105 | }, | 80 | }, |
106 | 81 | ||
107 | 82 | handleBtnCollapseAction: { | |
108 | resized: { | ||
109 | value: function() { | 83 | value: function() { |
110 | this.panelBase.contentHeight = parseInt(this.element.style.height); | 84 | this.collapsed = !this.collapsed; |
111 | this.needsDraw = true; | 85 | this.needsDraw = true; |
112 | } | 86 | } |
113 | }, | 87 | }, |
114 | 88 | ||
115 | //TODO: Find out why without This following function drop event wont fire ??? | 89 | handleBtnCloseAction: { |
116 | handleEvent: { | 90 | value: function() { |
117 | value:function(e) { | 91 | this.panelContent.content = null; |
118 | e.preventDefault(); | ||
119 | e.stopImmediatePropagation(); | ||
120 | |||
121 | } | ||
122 | }, | ||
123 | |||
124 | captureDragover: { | ||
125 | value:function(e) { | ||
126 | e.preventDefault(); | ||
127 | e.stopImmediatePropagation(); | ||
128 | this.element.style.backgroundColor = "#917B56"; | ||
129 | } | 92 | } |
130 | }, | 93 | }, |
131 | 94 | ||
132 | captureDragleave: { | 95 | prepareForDraw: { |
133 | value: function() { | 96 | value: function() { |
134 | this.element.style.backgroundColor = ""; | 97 | //TODO: This line should not be here this line hits each time a panel is loaded. Will Need to move to instance call; |
98 | this.application.ninja.colorController.colorView = this.application.ninja.colorController.colorPanelBase.create(); | ||
99 | var myContent; | ||
100 | var that = this; | ||
101 | |||
102 | myContent = require.async(this.modulePath) | ||
103 | .then(function(panelContent) { | ||
104 | var componentRequire = panelContent[that.moduleName]; | ||
105 | that.contentComponent = componentRequire.create(); | ||
106 | }) | ||
107 | .end(); | ||
135 | } | 108 | } |
136 | }, | 109 | }, |
137 | 110 | ||
138 | handleDrop: { | 111 | handleResizeStart: { |
139 | value:function(e) { | 112 | value:function(e) { |
140 | e.stopPropagation(); // Stops some browsers from redirecting. | 113 | this.isResizing = true; |
141 | e.preventDefault(); | 114 | this.needsDraw = true; |
142 | this.element.style.backgroundColor = ""; | ||
143 | NJevent("panelOrderChanged", this); | ||
144 | } | 115 | } |
145 | }, | 116 | }, |
146 | 117 | ||
147 | handleDragstart: { | 118 | handleResizeMove: { |
148 | value:function(e) { | 119 | value:function(e) { |
149 | e.dataTransfer.effectAllowed = 'move'; | 120 | this._resizedHeight = e._event.dY; |
150 | e.dataTransfer.setData('text/html', this.element.innerHTML); | 121 | this.needsDraw = true; |
151 | NJevent("panelSelected", this); | ||
152 | } | 122 | } |
153 | }, | 123 | }, |
154 | 124 | ||
155 | handleDragEnter: { | 125 | handleResizeEnd: { |
156 | value: function(e) { | 126 | value: function(e) { |
157 | this.element.classList.add("over"); | 127 | this.height += this._resizedHeight; |
158 | } | 128 | this._resizedHeight = 0; |
159 | }, | 129 | this.isResizing = false; |
160 | 130 | this.needsDraw = true; | |
161 | handleDragend: { | ||
162 | value:function() { | ||
163 | |||
164 | } | ||
165 | }, | ||
166 | |||
167 | |||
168 | prepareForDraw: { | ||
169 | value:function() { | ||
170 | if (!this._isFirstDraw) { | ||
171 | this._isFirstDraw = true; | ||
172 | |||
173 | // Initialize Panel | ||
174 | // Drag Drop Functions | ||
175 | this.element.addEventListener("drop", this, false); | ||
176 | this.element.addEventListener("dragover", this, true); | ||
177 | this.element.addEventListener("dragleave", this, true); | ||