voodoogiant
voodoogiant

Reputation: 2148

draggable events for an extjs panel

Is there a listener for an end-of-drag event when I make a given panel "draggable"? I've found I can make a panel draggable around inside another panel by enabling the "draggable" attribute in its initial config, but I'd like to capture the events when the drag is happening. Looking at the docs, I see I can add listeners like "load", but I don't see a list of all the supported events I can listen for. Can this be handled in the configuration or should I use an addListener()? Either way, what's the syntax and how can I figure this out using the docs? I'd just like to be able to fire a function every time my draggable panel is moved around its container. Thanks.

var panel = Ext.create('Ext.tree.Panel', {
     draggable: true,
     width: 200,
     height: 200,
});

I was hoping I could do something like this...

var panel = Ext.create('Ext.tree.Panel', {
    draggable: true,
    width: 200,
    height: 200,
    listeners: {            
       dragging: function(e) { 
           // being dragged
       },
       dropped: function(e) { 
           // dropped
       },
});

Upvotes: 0

Views: 5952

Answers (3)

Roromix
Roromix

Reputation: 71

For use dragstart listener with Ext.panel.Panel, you need to set simpleDrag: true.

But when simpleDrag is active, you can't drop, just drag/move the Panel as a Window.

Upvotes: 1

Leprosy
Leprosy

Reputation: 1135

I'm trying to modify components on a Ext.window.Window just before the drag starts, and found in the sencha forums that a draggable window listens to the dragstart event, perhaps it works with a Panel too.

I used this code:

listeners: {
    dragstart: function() {
        console.log('we are starting the drag');
    }
}

And worked like a charm. Works here in my app, using Ext JS 4.1.0

For the end of drag, I've found that the move event of the Ext.window.Window suits the need.

Upvotes: 1

sra
sra

Reputation: 23975

You wouldn't do this with listerens in this case. There are four template methods that you can override

So you can do it like:

var panel = Ext.create('Ext.tree.Panel', {
     draggable: {
         onDrag: function(e) {
              // do what you like
         },
         onEnd: function(e) {
              // do what you like
         }
     },
     width: 200,
     height: 200,
});

Note the argument e is the event-Object

Upvotes: 2

Related Questions