oyvind_saltvik
27 Sep 2007, 1:22 AM
I am trying to override getDragData to make the drag and drop work without having to click the row before dragging it. But I am a bit stuck, can you see any obvious problems with this code?
Emmet.GridDragZone = function(grid, config) {
Emmet.GridDragZone.superclass.constructor.call(this, grid, config)
}
Ext.extend(Emmet.GridDragZone, Ext.grid.GridDragZone, {
getDragData : function(e){
var t = Ext.lib.Event.getTarget(e);
var rowIndex = this.grid.view.findRowIndex(t);
if(rowIndex !== false){
var sm = this.grid.selModel;
if(!sm.isSelected(rowIndex)) {
delete this.view.ignoreNextClick;
this.view.onItemClick(t, rowIndex , e);
this.view.ignoreNextClick = true;
}
}
return Emmet.GridDragZone.superclass.getDragData.call(this, e)
}
})
Emmet.GridView = function(config) {
Emmet.GridView.superclass.constructor.call(this, config)
}
Ext.extend(Emmet.GridView, Ext.grid.GridView, {
render: function() {
Emmet.GridView.superclass.render.call(this)
this.dd = new Emmet.GridDragZone(this.grid, {
ddGroup : this.grid.ddGroup || 'GridDD'
});
}
})
Emmet.Grid = function(el, config) {
Emmet.Grid.superclass.constructor.call(this, el, config)
}
Ext.extend(Emmet.Grid, Ext.grid.Grid, {
getView : function(){
if(!this.view){
this.view = new Emmet.GridView(Ext.apply(this.viewConfig, {multiSelect: true}));
}
return this.view;
}
})
Emmet.GridDragZone = function(grid, config) {
Emmet.GridDragZone.superclass.constructor.call(this, grid, config)
}
Ext.extend(Emmet.GridDragZone, Ext.grid.GridDragZone, {
getDragData : function(e){
var t = Ext.lib.Event.getTarget(e);
var rowIndex = this.grid.view.findRowIndex(t);
if(rowIndex !== false){
var sm = this.grid.selModel;
if(!sm.isSelected(rowIndex)) {
delete this.view.ignoreNextClick;
this.view.onItemClick(t, rowIndex , e);
this.view.ignoreNextClick = true;
}
}
return Emmet.GridDragZone.superclass.getDragData.call(this, e)
}
})
Emmet.GridView = function(config) {
Emmet.GridView.superclass.constructor.call(this, config)
}
Ext.extend(Emmet.GridView, Ext.grid.GridView, {
render: function() {
Emmet.GridView.superclass.render.call(this)
this.dd = new Emmet.GridDragZone(this.grid, {
ddGroup : this.grid.ddGroup || 'GridDD'
});
}
})
Emmet.Grid = function(el, config) {
Emmet.Grid.superclass.constructor.call(this, el, config)
}
Ext.extend(Emmet.Grid, Ext.grid.Grid, {
getView : function(){
if(!this.view){
this.view = new Emmet.GridView(Ext.apply(this.viewConfig, {multiSelect: true}));
}
return this.view;
}
})