AuthorDnDListener - multiple DropTargetDropEvent managment

Post here questions and problems related to oXygen frameworks/document types.
Posts: 60

AuthorDnDListener - multiple DropTargetDropEvent managment

Thu Jun 18, 2015 11:26 am


In my application I need to drag'n drop a swing object to an oxygen XML document. I'm using an ro.sync.exml.editor.xmleditor.pageauthor.AuthorDnDListener to catch the drop action with the authorDrop(Transferable transferable, DropTargetDropEvent dropTargetDropEvent) method. It works perfectly.

My issue is that when I drop my object to my XML document, I have to write different actions according to the drag'n drop :
- "normal" drag'n drop
- drag'n drop + CTRL
- drag'n drop + ALT etc..

I succeeded in catching "normal" and "CTRL" drag'n drop with the DropTargetDropEvent :
- "normal" drag'n drop => dropTargetDropEvent.getDropAction() = 2
- drag'n drop + CTRL => dropTargetDropEvent.getDropAction() = 1

But these are the only different drag'n drops I differentiate.

How can I have other drag'n drops ? Is it possible ? Are there options somewhere ?

Thanks for your help,

Posts: 5221

Re: AuthorDnDListener - multiple DropTargetDropEvent managme

Thu Jun 18, 2015 1:37 pm

Hi Johann,

I think that the only official modifiers for DND are Ctrl and Shift. For example if you press Ctrl+Shift and drag you should receive on the getDropAction() a java.awt.dnd.DnDConstants.ACTION_LINK value.

So the Swing drop event does not seem to be able to tell you if the ALT key is pressed when the drag is done.

Possibly you could add a static listener (a static block in your class) which listens for all key events in the application:

Code: Select all

      Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
      public void eventDispatched(AWTEvent ev) {
            if (ev.getClass() == KeyEvent.class) {

and if the last key event has the ALT DOWN modifier consider that the drag and drop is done using that.

Radu Coravu
<oXygen/> XML Editor
Posts: 60

Re: AuthorDnDListener - multiple DropTargetDropEvent managme

Thu Jun 18, 2015 5:03 pm

Hi Radu,

You were right about the official modifiers. These are CTRL and SHIFT.

I was able to detect only CTRL because my swing source forced SourceActions at COPY_OR_MOVE.
I put COPY | MOVE | LINK instead. Now I'm able to detect CTRL+SHIFT when the drag is done which suits me perfectly. The ALT key was not mandatory.

Thanks for your response,


Return to “SDK-API, Frameworks - Document Types”

Who is online

Users browsing this forum: No registered users and 0 guests