]>
Commit | Line | Data |
---|---|---|
6527f429 DM |
1 | /**\r |
2 | * This example shows how to setup two way drag and drop from one GridPanel to another.\r | |
3 | */\r | |
4 | Ext.define('KitchenSink.view.dd.GridToGrid', {\r | |
5 | extend: 'Ext.container.Container',\r | |
6 | \r | |
7 | requires: [\r | |
8 | 'Ext.grid.*',\r | |
9 | 'Ext.layout.container.HBox',\r | |
10 | 'KitchenSink.model.dd.Simple'\r | |
11 | ], \r | |
12 | xtype: 'dd-grid-to-grid',\r | |
13 | \r | |
14 | //<example>\r | |
15 | exampleTitle: 'Drag and Drop from Grid to Grid Example',\r | |
16 | otherContent: [{\r | |
17 | type: 'Model',\r | |
18 | path: 'classic/samples/model/dd/Simple.js'\r | |
19 | }],\r | |
20 | //</example>\r | |
21 | \r | |
22 | width: 650,\r | |
23 | height: 300,\r | |
24 | layout: {\r | |
25 | type: 'hbox',\r | |
26 | align: 'stretch',\r | |
27 | padding: 5\r | |
28 | },\r | |
29 | \r | |
30 | myData: [\r | |
31 | { name : 'Rec 0', column1 : '0', column2 : '0' },\r | |
32 | { name : 'Rec 1', column1 : '1', column2 : '1' },\r | |
33 | { name : 'Rec 2', column1 : '2', column2 : '2' },\r | |
34 | { name : 'Rec 3', column1 : '3', column2 : '3' },\r | |
35 | { name : 'Rec 4', column1 : '4', column2 : '4' },\r | |
36 | { name : 'Rec 5', column1 : '5', column2 : '5' },\r | |
37 | { name : 'Rec 6', column1 : '6', column2 : '6' },\r | |
38 | { name : 'Rec 7', column1 : '7', column2 : '7' },\r | |
39 | { name : 'Rec 8', column1 : '8', column2 : '8' },\r | |
40 | { name : 'Rec 9', column1 : '9', column2 : '9' }\r | |
41 | ],\r | |
42 | \r | |
43 | initComponent: function(){\r | |
44 | var group1 = this.id + 'group1',\r | |
45 | group2 = this.id + 'group2',\r | |
46 | columns = [{\r | |
47 | text: 'Record Name', \r | |
48 | flex: 1, \r | |
49 | sortable: true, \r | |
50 | dataIndex: 'name'\r | |
51 | }, {\r | |
52 | text: 'column1', \r | |
53 | width: 80, \r | |
54 | sortable: true, \r | |
55 | dataIndex: 'column1'\r | |
56 | }, {\r | |
57 | text: 'column2', \r | |
58 | width: 80, \r | |
59 | sortable: true, \r | |
60 | dataIndex: 'column2'\r | |
61 | }];\r | |
62 | \r | |
63 | this.items = [{\r | |
64 | itemId: 'grid1',\r | |
65 | flex: 1,\r | |
66 | xtype: 'grid',\r | |
67 | multiSelect: true,\r | |
68 | viewConfig: {\r | |
69 | plugins: {\r | |
70 | ptype: 'gridviewdragdrop',\r | |
71 | containerScroll: true,\r | |
72 | dragGroup: group1,\r | |
73 | dropGroup: group2\r | |
74 | },\r | |
75 | listeners: {\r | |
76 | drop: function(node, data, dropRec, dropPosition) {\r | |
77 | var dropOn = dropRec ? ' ' + dropPosition + ' ' + dropRec.get('name') : ' on empty view';\r | |
78 | Ext.example.msg('Drag from right to left', 'Dropped ' + data.records[0].get('name') + dropOn);\r | |
79 | }\r | |
80 | }\r | |
81 | },\r | |
82 | store: new Ext.data.Store({\r | |
83 | model: KitchenSink.model.dd.Simple,\r | |
84 | data: this.myData\r | |
85 | }),\r | |
86 | columns: columns,\r | |
87 | title: 'First Grid',\r | |
88 | tools: [{\r | |
89 | type: 'refresh',\r | |
90 | tooltip: 'Reset both grids',\r | |
91 | scope: this,\r | |
92 | handler: this.onResetClick\r | |
93 | }],\r | |
94 | margin: '0 5 0 0'\r | |
95 | }, {\r | |
96 | itemId: 'grid2',\r | |
97 | flex: 1,\r | |
98 | xtype: 'grid',\r | |
99 | viewConfig: {\r | |
100 | plugins: {\r | |
101 | ptype: 'gridviewdragdrop',\r | |
102 | containerScroll: true,\r | |
103 | dragGroup: group2,\r | |
104 | dropGroup: group1\r | |
105 | },\r | |
106 | listeners: {\r | |
107 | drop: function(node, data, dropRec, dropPosition) {\r | |
108 | var dropOn = dropRec ? ' ' + dropPosition + ' ' + dropRec.get('name') : ' on empty view';\r | |
109 | Ext.example.msg('Drag from left to right', 'Dropped ' + data.records[0].get('name') + dropOn);\r | |
110 | }\r | |
111 | }\r | |
112 | },\r | |
113 | store: new Ext.data.Store({\r | |
114 | model: KitchenSink.model.dd.Simple\r | |
115 | }),\r | |
116 | columns: columns,\r | |
117 | stripeRows: true,\r | |
118 | title: 'Second Grid'\r | |
119 | }];\r | |
120 | \r | |
121 | this.callParent();\r | |
122 | },\r | |
123 | \r | |
124 | onResetClick: function(){\r | |
125 | //refresh source grid\r | |
126 | this.down('#grid1').getStore().loadData(this.myData);\r | |
127 | \r | |
128 | //purge destination grid\r | |
129 | this.down('#grid2').getStore().removeAll();\r | |
130 | }\r | |
131 | });\r |