]>
Commit | Line | Data |
---|---|---|
6527f429 DM |
1 | /**\r |
2 | *\r | |
3 | */\r | |
4 | Ext.define('Ext.util.Wrapper', {\r | |
5 | mixins: ['Ext.mixin.Hookable'],\r | |
6 | \r | |
7 | constructor: function(elementConfig, wrappedElement) {\r | |
8 | var element = this.link('element', Ext.Element.create(elementConfig));\r | |
9 | \r | |
10 | if (wrappedElement) {\r | |
11 | element.insertBefore(wrappedElement);\r | |
12 | this.wrap(wrappedElement);\r | |
13 | }\r | |
14 | },\r | |
15 | \r | |
16 | bindSize: function(sizeName) {\r | |
17 | var wrappedElement = this.wrappedElement,\r | |
18 | boundMethodName;\r | |
19 | \r | |
20 | this.boundSizeName = sizeName;\r | |
21 | this.boundMethodName = boundMethodName = sizeName === 'width' ? 'setWidth' : 'setHeight';\r | |
22 | \r | |
23 | this.bindHook(wrappedElement, boundMethodName, 'onBoundSizeChange');\r | |
24 | wrappedElement[boundMethodName].call(wrappedElement, wrappedElement.getStyleValue(sizeName));\r | |
25 | },\r | |
26 | \r | |
27 | onBoundSizeChange: function(size, args) {\r | |
28 | var element = this.element;\r | |
29 | \r | |
30 | if (typeof size === 'string' && size.substr(-1) === '%') {\r | |
31 | args[0] = '100%';\r | |
32 | }\r | |
33 | else {\r | |
34 | size = '';\r | |
35 | }\r | |
36 | \r | |
37 | element[this.boundMethodName].call(element, size);\r | |
38 | },\r | |
39 | \r | |
40 | wrap: function(wrappedElement) {\r | |
41 | var element = this.element,\r | |
42 | innerDom;\r | |
43 | \r | |
44 | this.wrappedElement = wrappedElement;\r | |
45 | \r | |
46 | innerDom = element.dom;\r | |
47 | \r | |
48 | while (innerDom.firstElementChild !== null) {\r | |
49 | innerDom = innerDom.firstElementChild;\r | |
50 | }\r | |
51 | \r | |
52 | innerDom.appendChild(wrappedElement.dom);\r | |
53 | },\r | |
54 | \r | |
55 | destroy: function() {\r | |
56 | var me = this,\r | |
57 | element = me.element,\r | |
58 | dom = element.dom,\r | |
59 | wrappedElement = me.wrappedElement,\r | |
60 | boundMethodName = me.boundMethodName,\r | |
61 | parentNode = dom.parentNode,\r | |
62 | size;\r | |
63 | \r | |
64 | if (boundMethodName) {\r | |
65 | me.unbindHook(wrappedElement, boundMethodName, 'onBoundSizeChange');\r | |
66 | size = element.getStyle(me.boundSizeName);\r | |
67 | \r | |
68 | if (size) {\r | |
69 | wrappedElement[boundMethodName].call(wrappedElement, size);\r | |
70 | }\r | |
71 | }\r | |
72 | \r | |
73 | if (parentNode) {\r | |
74 | if (!wrappedElement.destroyed) {\r | |
75 | parentNode.replaceChild(dom.firstElementChild, dom);\r | |
76 | }\r | |
77 | delete me.wrappedElement;\r | |
78 | }\r | |
79 | \r | |
80 | me.callParent();\r | |
81 | }\r | |
82 | });\r |