]> git.proxmox.com Git - extjs.git/blame - extjs/classic/classic/src/panel/Pinnable.js
add extjs 6.0.1 sources
[extjs.git] / extjs / classic / classic / src / panel / Pinnable.js
CommitLineData
6527f429
DM
1/**\r
2 * This mixin is applied to panels that want to manage a Pin state and corresponding tool.\r
3 */\r
4Ext.define('Ext.panel.Pinnable', {\r
5 extend: 'Ext.Mixin',\r
6\r
7 mixinId: 'pinnable',\r
8\r
9 pinnable: true,\r
10\r
11 pinnedTip: 'Unpin this item',\r
12\r
13 unpinnedTip: 'Pin this item',\r
14\r
15 initPinnable: function () {\r
16 var me = this,\r
17 pinned = me.isPinned();\r
18\r
19 me.addTool(me.pinTool = Ext.widget({\r
20 xtype: 'tool',\r
21 type: pinned ? 'unpin' : 'pin',\r
22 callback: 'togglePin',\r
23 scope: me,\r
24 tooltip: pinned ? me.pinnedTip : me.unpinnedTip\r
25 }));\r
26 },\r
27\r
28 isPinned: function () {\r
29 return !this.floating;\r
30 },\r
31\r
32 setPinned: function (pinned) {\r
33 var me = this,\r
34 args;\r
35\r
36 if (pinned !== me.isPinned()) {\r
37 args = [me, pinned];\r
38 if (me.fireEventArgs('beforepinchange', args) !== false) {\r
39 me.updatePinned(pinned);\r
40 me.fireEventArgs('pinchange', args);\r
41 }\r
42 }\r
43 },\r
44\r
45 togglePin: function () {\r
46 this.setPinned(!this.isPinned());\r
47 },\r
48\r
49 updatePinned: function (pinned) {\r
50 var me = this,\r
51 tool = me.pinTool;\r
52\r
53 tool.setTooltip(pinned ? me.pinnedTip : me.unpinnedTip);\r
54 tool.setType(pinned ? 'unpin' : 'pin');\r
55 }\r
56});\r