microsoft-teamsdiscordmessengercustom-servicesmacoslinuxwindowsinboxwhatsappicloudtweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplaceoutlookemail
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.8 KiB
52 lines
1.8 KiB
9 years ago
|
/**
|
||
|
* @private
|
||
|
*/
|
||
|
Ext.define('Ext.grid.ViewDropZone', {
|
||
|
extend: 'Ext.view.DropZone',
|
||
|
|
||
|
indicatorHtml: '<div class="' + Ext.baseCSSPrefix + 'grid-drop-indicator-left" role="presentation"></div><div class="' + Ext.baseCSSPrefix + 'grid-drop-indicator-right" role="presentation"></div>',
|
||
|
indicatorCls: Ext.baseCSSPrefix + 'grid-drop-indicator',
|
||
|
|
||
|
handleNodeDrop : function(data, record, position) {
|
||
|
var view = this.view,
|
||
|
store = view.getStore(),
|
||
|
index, records, i, len;
|
||
|
|
||
|
// If the copy flag is set, create a copy of the models
|
||
|
if (data.copy) {
|
||
|
records = data.records;
|
||
|
data.records = [];
|
||
|
for (i = 0, len = records.length; i < len; i++) {
|
||
|
data.records.push(records[i].copy());
|
||
|
}
|
||
|
} else {
|
||
|
/*
|
||
|
* Remove from the source store. We do this regardless of whether the store
|
||
|
* is the same bacsue the store currently doesn't handle moving records
|
||
|
* within the store. In the future it should be possible to do this.
|
||
|
* Here was pass the isMove parameter if we're moving to the same view.
|
||
|
*/
|
||
|
data.view.store.remove(data.records, data.view === view);
|
||
|
}
|
||
|
|
||
|
if (record && position) {
|
||
|
index = store.indexOf(record);
|
||
|
|
||
|
// 'after', or undefined (meaning a drop at index -1 on an empty View)...
|
||
|
if (position !== 'before') {
|
||
|
index++;
|
||
|
}
|
||
|
store.insert(index, data.records);
|
||
|
}
|
||
|
// No position specified - append.
|
||
|
else {
|
||
|
store.add(data.records);
|
||
|
}
|
||
|
|
||
|
// Select the dropped nodes
|
||
|
view.getSelectionModel().select(data.records);
|
||
|
|
||
|
// Focus the first dropped node.
|
||
|
view.getNavigationModel().setPosition(data.records[0]);
|
||
|
}
|
||
|
});
|