]>
Commit | Line | Data |
---|---|---|
6527f429 DM |
1 | Ext.define('Ext.theme.neptune.Component', {\r |
2 | override: 'Ext.Component',\r | |
3 | initComponent: function() {\r | |
4 | this.callParent();\r | |
5 | if (this.dock && this.border === undefined) {\r | |
6 | this.border = false;\r | |
7 | }\r | |
8 | },\r | |
9 | privates: {\r | |
10 | initStyles: function() {\r | |
11 | var me = this,\r | |
12 | hasOwnBorder = me.hasOwnProperty('border'),\r | |
13 | border = me.border;\r | |
14 | if (me.dock) {\r | |
15 | // prevent the superclass method from setting the border style. We want to\r | |
16 | // allow dock layout to decide which borders to suppress.\r | |
17 | me.border = null;\r | |
18 | }\r | |
19 | me.callParent(arguments);\r | |
20 | if (hasOwnBorder) {\r | |
21 | me.border = border;\r | |
22 | } else {\r | |
23 | delete me.border;\r | |
24 | }\r | |
25 | }\r | |
26 | }\r | |
27 | }, function() {\r | |
28 | Ext.namespace('Ext.theme.is').Neptune = true;\r | |
29 | Ext.theme.name = 'Neptune';\r | |
30 | });\r | |
31 | \r | |
32 | Ext.define('Ext.theme.crisp.Component', {\r | |
33 | override: 'Ext.Component'\r | |
34 | }, function() {\r | |
35 | Ext.namespace('Ext.theme.is').Crisp = true;\r | |
36 | Ext.theme.name = 'Crisp';\r | |
37 | });\r | |
38 | \r | |
39 | Ext.define('Ext.theme.neptune.resizer.Splitter', {\r | |
40 | override: 'Ext.resizer.Splitter',\r | |
41 | size: 8\r | |
42 | });\r | |
43 | \r | |
44 | Ext.define('Ext.theme.neptune.toolbar.Toolbar', {\r | |
45 | override: 'Ext.toolbar.Toolbar',\r | |
46 | usePlainButtons: false,\r | |
47 | border: false\r | |
48 | });\r | |
49 | \r | |
50 | Ext.define('Ext.theme.neptune.layout.component.Dock', {\r | |
51 | override: 'Ext.layout.component.Dock',\r | |
52 | /** | |
53 | * This table contains the border removal classes indexed by the sum of the edges to | |
54 | * remove. Each edge is assigned a value: | |
55 | * | |
56 | * * `left` = 1 | |
57 | * * `bottom` = 2 | |
58 | * * `right` = 4 | |
59 | * * `top` = 8 | |
60 | * | |
61 | * @private | |
62 | */\r | |
63 | noBorderClassTable: [\r | |
64 | 0,\r | |
65 | // TRBL\r | |
66 | Ext.baseCSSPrefix + 'noborder-l',\r | |
67 | // 0001 = 1\r | |
68 | Ext.baseCSSPrefix + 'noborder-b',\r | |
69 | // 0010 = 2\r | |
70 | Ext.baseCSSPrefix + 'noborder-bl',\r | |
71 | // 0011 = 3\r | |
72 | Ext.baseCSSPrefix + 'noborder-r',\r | |
73 | // 0100 = 4\r | |
74 | Ext.baseCSSPrefix + 'noborder-rl',\r | |
75 | // 0101 = 5\r | |
76 | Ext.baseCSSPrefix + 'noborder-rb',\r | |
77 | // 0110 = 6\r | |
78 | Ext.baseCSSPrefix + 'noborder-rbl',\r | |
79 | // 0111 = 7\r | |
80 | Ext.baseCSSPrefix + 'noborder-t',\r | |
81 | // 1000 = 8\r | |
82 | Ext.baseCSSPrefix + 'noborder-tl',\r | |
83 | // 1001 = 9\r | |
84 | Ext.baseCSSPrefix + 'noborder-tb',\r | |
85 | // 1010 = 10\r | |
86 | Ext.baseCSSPrefix + 'noborder-tbl',\r | |
87 | // 1011 = 11\r | |
88 | Ext.baseCSSPrefix + 'noborder-tr',\r | |
89 | // 1100 = 12\r | |
90 | Ext.baseCSSPrefix + 'noborder-trl',\r | |
91 | // 1101 = 13\r | |
92 | Ext.baseCSSPrefix + 'noborder-trb',\r | |
93 | // 1110 = 14\r | |
94 | Ext.baseCSSPrefix + 'noborder-trbl'\r | |
95 | ],\r | |
96 | // 1111 = 15\r | |
97 | /** | |
98 | * The numeric values assigned to each edge indexed by the `dock` config value. | |
99 | * @private | |
100 | */\r | |
101 | edgeMasks: {\r | |
102 | top: 8,\r | |
103 | right: 4,\r | |
104 | bottom: 2,\r | |
105 | left: 1\r | |
106 | },\r | |
107 | handleItemBorders: function() {\r | |
108 | var me = this,\r | |
109 | edges = 0,\r | |
110 | maskT = 8,\r | |
111 | maskR = 4,\r | |
112 | maskB = 2,\r | |
113 | maskL = 1,\r | |
114 | owner = me.owner,\r | |
115 | bodyBorder = owner.bodyBorder,\r | |
116 | ownerBorder = owner.border,\r | |
117 | collapsed = me.collapsed,\r | |
118 | edgeMasks = me.edgeMasks,\r | |
119 | noBorderCls = me.noBorderClassTable,\r | |
120 | dockedItemsGen = owner.dockedItems.generation,\r | |
121 | b, borderCls, docked, edgesTouched, i, ln, item, dock, lastValue, mask, addCls, removeCls;\r | |
122 | if (me.initializedBorders === dockedItemsGen) {\r | |
123 | return;\r | |
124 | }\r | |
125 | addCls = [];\r | |
126 | removeCls = [];\r | |
127 | borderCls = me.getBorderCollapseTable();\r | |
128 | noBorderCls = me.getBorderClassTable ? me.getBorderClassTable() : noBorderCls;\r | |
129 | me.initializedBorders = dockedItemsGen;\r | |
130 | // Borders have to be calculated using expanded docked item collection.\r | |
131 | me.collapsed = false;\r | |
132 | docked = me.getDockedItems('visual');\r | |
133 | me.collapsed = collapsed;\r | |
134 | for (i = 0 , ln = docked.length; i < ln; i++) {\r | |
135 | item = docked[i];\r | |
136 | if (item.ignoreBorderManagement) {\r | |
137 | // headers in framed panels ignore border management, so we do not want\r | |
138 | // to set "satisfied" on the edge in question\r | |
139 | \r | |
140 | continue;\r | |
141 | }\r | |
142 | dock = item.dock;\r | |
143 | mask = edgesTouched = 0;\r | |
144 | addCls.length = 0;\r | |
145 | removeCls.length = 0;\r | |
146 | if (dock !== 'bottom') {\r | |
147 | if (edges & maskT) {\r | |
148 | // if (not touching the top edge)\r | |
149 | b = item.border;\r | |
150 | } else {\r | |
151 | b = ownerBorder;\r | |
152 | if (b !== false) {\r | |
153 | edgesTouched += maskT;\r | |
154 | }\r | |
155 | }\r | |
156 | if (b === false) {\r | |
157 | mask += maskT;\r | |
158 | }\r | |
159 | }\r | |
160 | if (dock !== 'left') {\r | |
161 | if (edges & maskR) {\r | |
162 | // if (not touching the right edge)\r | |
163 | b = item.border;\r | |
164 | } else {\r | |
165 | b = ownerBorder;\r | |
166 | if (b !== false) {\r | |
167 | edgesTouched += maskR;\r | |
168 | }\r | |
169 | }\r | |
170 | if (b === false) {\r | |
171 | mask += maskR;\r | |
172 | }\r | |
173 | }\r | |
174 | if (dock !== 'top') {\r | |
175 | if (edges & maskB) {\r | |
176 | // if (not touching the bottom edge)\r | |
177 | b = item.border;\r | |
178 | } else {\r | |
179 | b = ownerBorder;\r | |
180 | if (b !== false) {\r | |
181 | edgesTouched += maskB;\r | |
182 | }\r | |
183 | }\r | |
184 | if (b === false) {\r | |
185 | mask += maskB;\r | |
186 | }\r | |
187 | }\r | |
188 | if (dock !== 'right') {\r | |
189 | if (edges & maskL) {\r | |
190 | // if (not touching the left edge)\r | |
191 | b = item.border;\r | |
192 | } else {\r | |
193 | b = ownerBorder;\r | |
194 | if (b !== false) {\r | |
195 | edgesTouched += maskL;\r | |
196 | }\r | |
197 | }\r | |
198 | if (b === false) {\r | |
199 | mask += maskL;\r | |
200 | }\r | |
201 | }\r | |
202 | if ((lastValue = item.lastBorderMask) !== mask) {\r | |
203 | item.lastBorderMask = mask;\r | |
204 | if (lastValue) {\r | |
205 | removeCls[0] = noBorderCls[lastValue];\r | |
206 | }\r | |
207 | if (mask) {\r | |
208 | addCls[0] = noBorderCls[mask];\r | |
209 | }\r | |
210 | }\r | |
211 | if ((lastValue = item.lastBorderCollapse) !== edgesTouched) {\r | |
212 | item.lastBorderCollapse = edgesTouched;\r | |
213 | if (lastValue) {\r | |
214 | removeCls[removeCls.length] = borderCls[lastValue];\r | |
215 | }\r | |
216 | if (edgesTouched) {\r | |
217 | addCls[addCls.length] = borderCls[edgesTouched];\r | |
218 | }\r | |
219 | }\r | |
220 | if (removeCls.length) {\r | |
221 | item.removeCls(removeCls);\r | |
222 | }\r | |
223 | if (addCls.length) {\r | |
224 | item.addCls(addCls);\r | |
225 | }\r | |
226 | // mask can use += but edges must use |= because there can be multiple items\r | |
227 | // on an edge but the mask is reset per item\r | |
228 | edges |= edgeMasks[dock];\r | |
229 | }\r | |
230 | // = T, R, B or L (8, 4, 2 or 1)\r | |
231 | mask = edgesTouched = 0;\r | |
232 | addCls.length = 0;\r | |
233 | removeCls.length = 0;\r | |
234 | if (edges & maskT) {\r | |
235 | // if (not touching the top edge)\r | |
236 | b = bodyBorder;\r | |
237 | } else {\r | |
238 | b = ownerBorder;\r | |
239 | if (b !== false) {\r | |
240 | edgesTouched += maskT;\r | |
241 | }\r | |
242 | }\r | |
243 | if (b === false) {\r | |
244 | mask += maskT;\r | |
245 | }\r | |
246 | if (edges & maskR) {\r | |
247 | // if (not touching the right edge)\r | |
248 | b = bodyBorder;\r | |
249 | } else {\r | |
250 | b = ownerBorder;\r | |
251 | if (b !== false) {\r | |
252 | edgesTouched += maskR;\r | |
253 | }\r | |
254 | }\r | |
255 | if (b === false) {\r | |
256 | mask += maskR;\r | |
257 | }\r | |
258 | if (edges & maskB) {\r | |
259 | // if (not touching the bottom edge)\r | |
260 | b = bodyBorder;\r | |
261 | } else {\r | |
262 | b = ownerBorder;\r | |
263 | if (b !== false) {\r | |
264 | edgesTouched += maskB;\r | |
265 | }\r | |
266 | }\r | |
267 | if (b === false) {\r | |
268 | mask += maskB;\r | |
269 | }\r | |
270 | if (edges & maskL) {\r | |
271 | // if (not touching the left edge)\r | |
272 | b = bodyBorder;\r | |
273 | } else {\r | |
274 | b = ownerBorder;\r | |
275 | if (b !== false) {\r | |
276 | edgesTouched += maskL;\r | |
277 | }\r | |
278 | }\r | |
279 | if (b === false) {\r | |
280 | mask += maskL;\r | |
281 | }\r | |
282 | if ((lastValue = me.lastBodyBorderMask) !== mask) {\r | |
283 | me.lastBodyBorderMask = mask;\r | |
284 | if (lastValue) {\r | |
285 | removeCls[0] = noBorderCls[lastValue];\r | |
286 | }\r | |
287 | if (mask) {\r | |
288 | addCls[0] = noBorderCls[mask];\r | |
289 | }\r | |
290 | }\r | |
291 | if ((lastValue = me.lastBodyBorderCollapse) !== edgesTouched) {\r | |
292 | me.lastBodyBorderCollapse = edgesTouched;\r | |
293 | if (lastValue) {\r | |
294 | removeCls[removeCls.length] = borderCls[lastValue];\r | |
295 | }\r | |
296 | if (edgesTouched) {\r | |
297 | addCls[addCls.length] = borderCls[edgesTouched];\r | |
298 | }\r | |
299 | }\r | |
300 | if (removeCls.length) {\r | |
301 | owner.removeBodyCls(removeCls);\r | |
302 | }\r | |
303 | if (addCls.length) {\r | |
304 | owner.addBodyCls(addCls);\r | |
305 | }\r | |
306 | },\r | |
307 | onRemove: function(item) {\r | |
308 | var me = this,\r | |
309 | lastBorderMask = item.lastBorderMask,\r | |
310 | lastBorderCollapse = item.lastBorderCollapse;\r | |
311 | if (!item.destroyed && !item.ignoreBorderManagement) {\r | |
312 | if (lastBorderMask) {\r | |
313 | item.lastBorderMask = 0;\r | |
314 | item.removeCls(me.noBorderClassTable[lastBorderMask]);\r | |
315 | }\r | |
316 | if (lastBorderCollapse) {\r | |
317 | item.lastBorderCollapse = 0;\r | |
318 | item.removeCls(me.getBorderCollapseTable()[lastBorderCollapse]);\r | |
319 | }\r | |
320 | }\r | |
321 | me.callParent([\r | |
322 | item\r | |
323 | ]);\r | |
324 | }\r | |
325 | });\r | |
326 | \r | |
327 | Ext.define('Ext.theme.neptune.panel.Panel', {\r | |
328 | override: 'Ext.panel.Panel',\r | |
329 | border: false,\r | |
330 | bodyBorder: false,\r | |
331 | initBorderProps: Ext.emptyFn,\r | |
332 | initBodyBorder: function() {\r | |
333 | // The superclass method converts a truthy bodyBorder into a number and sets\r | |
334 | // an inline border-width style on the body element. This prevents that from\r | |
335 | // happening if borderBody === true so that the body will get its border-width\r | |
336 | // the stylesheet.\r | |
337 | if (this.bodyBorder !== true) {\r | |
338 | this.callParent();\r | |
339 | }\r | |
340 | }\r | |
341 | });\r | |
342 | \r | |
343 | Ext.define('Ext.theme.neptune.container.ButtonGroup', {\r | |
344 | override: 'Ext.container.ButtonGroup',\r | |
345 | usePlainButtons: false\r | |
346 | });\r | |
347 | \r | |
348 | Ext.define('Ext.theme.neptune.toolbar.Paging', {\r | |
349 | override: 'Ext.toolbar.Paging',\r | |
350 | defaultButtonUI: 'plain-toolbar',\r | |
351 | inputItemWidth: 40\r | |
352 | });\r | |
353 | \r | |
354 | Ext.define('Ext.theme.neptune.picker.Month', {\r | |
355 | override: 'Ext.picker.Month',\r | |
356 | // Monthpicker contains logic that reduces the margins of the month items if it detects\r | |
357 | // that the text has wrapped. This can happen in the classic theme in certain\r | |
358 | // locales such as zh_TW. In order to work around this, Month picker measures\r | |
359 | // the month items to see if the height is greater than "measureMaxHeight".\r | |
360 | // In neptune the height of the items is larger, so we must increase this value.\r | |
361 | // While the actual height of the month items in neptune is 24px, we will only \r | |
362 | // determine that the text has wrapped if the height of the item exceeds 36px.\r | |
363 | // this allows theme developers some leeway to increase the month item size in\r | |
364 | // a neptune-derived theme.\r | |
365 | measureMaxHeight: 36\r | |
366 | });\r | |
367 | \r | |
368 | Ext.define('Ext.theme.neptune.form.field.HtmlEditor', {\r | |
369 | override: 'Ext.form.field.HtmlEditor',\r | |
370 | defaultButtonUI: 'plain-toolbar'\r | |
371 | });\r | |
372 | \r | |
373 | Ext.define('Ext.theme.neptune.panel.Table', {\r | |
374 | override: 'Ext.panel.Table',\r | |
375 | lockableBodyBorder: true,\r | |
376 | initComponent: function() {\r | |
377 | var me = this;\r | |
378 | me.callParent();\r | |
379 | if (!me.hasOwnProperty('bodyBorder') && !me.hideHeaders && (me.lockableBodyBorder || !me.lockable)) {\r | |
380 | me.bodyBorder = true;\r | |
381 | }\r | |
382 | }\r | |
383 | });\r | |
384 | \r | |
385 | Ext.define('Ext.theme.crisp.view.Table', {\r | |
386 | override: 'Ext.view.Table',\r | |
387 | stripeRows: false\r | |
388 | });\r | |
389 | \r | |
390 | Ext.define('Ext.theme.neptune.grid.RowEditor', {\r | |
391 | override: 'Ext.grid.RowEditor',\r | |
392 | buttonUI: 'default-toolbar'\r | |
393 | });\r | |
394 | \r | |
395 | Ext.define('Ext.theme.neptune.grid.column.RowNumberer', {\r | |
396 | override: 'Ext.grid.column.RowNumberer',\r | |
397 | width: 25\r | |
398 | });\r | |
399 | \r | |
400 | Ext.define('Ext.theme.neptune.menu.Separator', {\r | |
401 | override: 'Ext.menu.Separator',\r | |
402 | border: true\r | |
403 | });\r | |
404 | \r | |
405 | Ext.define('Ext.theme.neptune.menu.Menu', {\r | |
406 | override: 'Ext.menu.Menu',\r | |
407 | showSeparator: false\r | |
408 | });\r | |
409 | \r |