]>
Commit | Line | Data |
---|---|---|
6527f429 DM |
1 | /**\r |
2 | * This mixin is applied to panels that want to manage a Pin state and corresponding tool.\r | |
3 | */\r | |
4 | Ext.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 |