]> git.proxmox.com Git - extjs.git/blob - extjs/classic/classic/src/layout/container/boxOverflow/None.js
add extjs 6.0.1 sources
[extjs.git] / extjs / classic / classic / src / layout / container / boxOverflow / None.js
1 /**
2 * @private
3 * Base class for Box Layout overflow handlers. These specialized classes are invoked when a Box Layout
4 * (either an HBox or a VBox) has child items that are either too wide (for HBox) or too tall (for VBox)
5 * for its container.
6 */
7 Ext.define('Ext.layout.container.boxOverflow.None', {
8 alternateClassName: 'Ext.layout.boxOverflow.None',
9 alias: [
10 'box.overflow.none',
11 'box.overflow.None' // capitalized for 4.x compat
12 ],
13
14 mixins: [
15 'Ext.mixin.Factoryable'
16 ],
17
18 factoryConfig: {
19 defaultType: 'none'
20 },
21
22 isBoxOverflowHandler: true,
23
24 $configPrefixed: false,
25 $configStrict: false,
26
27 constructor: function(config) {
28 this.initConfig(config);
29 },
30
31 handleOverflow: Ext.emptyFn,
32
33 clearOverflow: Ext.emptyFn,
34
35 beginLayout: Ext.emptyFn,
36 beginLayoutCycle: Ext.emptyFn,
37
38 calculate: function(ownerContext) {
39 var me = this,
40 plan = ownerContext.state.boxPlan,
41 overflow;
42
43 if (plan && plan.tooNarrow) {
44 overflow = me.handleOverflow(ownerContext);
45
46 if (overflow) {
47 if (overflow.reservedSpace) {
48 me.layout.publishInnerCtSize(ownerContext, overflow.reservedSpace);
49 }
50
51 // TODO: If we need to use the code below then we will need to pass along
52 // the new targetSize as state and use it calculate somehow...
53 //
54 //if (overflow.recalculate) {
55 // ownerContext.invalidate({
56 // state: {
57 // overflow: overflow
58 // }
59 // });
60 //}
61 }
62 } else {
63 me.clearOverflow();
64 }
65 },
66
67 completeLayout: Ext.emptyFn,
68
69 finishedLayout: function (ownerContext) {
70 var me = this,
71 owner = me.layout.owner,
72 hiddens,
73 hiddenCount;
74
75 // Only count hidden children if someone is interested when the overflow state changes
76 if (owner.hasListeners.overflowchange) {
77 hiddens = owner.query('>[hidden]');
78 hiddenCount = hiddens.length;
79 if (hiddenCount !== me.lastHiddenCount) {
80 owner.fireEvent('overflowchange', me.lastHiddenCount, hiddenCount, hiddens);
81 me.lastHiddenCount = hiddenCount;
82 }
83 }
84 },
85
86 onRemove: Ext.emptyFn,
87
88 /**
89 * @private
90 * Normalizes an item reference, string id or numerical index into a reference to the item
91 * @param {Ext.Component/String/Number} item The item reference, id or index
92 * @return {Ext.Component} The item
93 */
94 getItem: function(item) {
95 return this.layout.owner.getComponent(item);
96 },
97
98 getOwnerType: function(owner){
99 var type;
100 if (owner.isToolbar) {
101 type = 'toolbar';
102 } else if (owner.isTabBar) {
103 type = 'tab-bar';
104 } else if (owner.isMenu) {
105 type = 'menu';
106 } else if (owner.isBreadcrumb) {
107 type = 'breadcrumb';
108 } else {
109 type = owner.getXType();
110 }
111
112 return type;
113 },
114
115 getPrefixConfig: Ext.emptyFn,
116 getSuffixConfig: Ext.emptyFn,
117 getOverflowCls: function() {
118 return '';
119 },
120
121 setVertical: function() {
122 var me = this,
123 layout = me.layout,
124 innerCt = layout.innerCt;
125
126 innerCt.removeCls(me.getOverflowCls(layout.oppositeDirection));
127 innerCt.addCls(me.getOverflowCls(layout.direction));
128 }
129 });