2009-06-17 5 views
1

Der Code ist:Gibt es Unterschiede bei der Definition von DropTarget in der Ansicht und im Editor?

DropTarget target = new DropTarget(sqlViewer.getTextWidget(), 
    DND.DROP_DEFAULT | DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK); 
    Transfer[] types = new Transfer[] {TreeLeafListTransfer.getInstance(), 
    TextTransfer.getInstance(), FileTransfer.getInstance()}; 
    target.setTransfer(types); 
    target.addDropListener(new DropTreeLeafAdapter(sqlViewer)); 

Und es funktioniert in der Regel für eine Ansicht, aber nicht in einem Editor. Was ist der Unterschied?
upd: Whtat ist am seltsamsten - wenn ich es mit einem try/catch-Block umgebe, scheitert es immer noch ohne Ausnahme.
bearbeiten: Das Problem ist größer als nur DnD funktioniert nicht. Der gesamte Editor kann aufgrund dieses Blocks nicht instanziiert werden. Es erscheint nur ein leeres Fenster.

+0

der Code ist "Catcher" Teil, der Ruinen Editor – Imaskar

Antwort

0

es funktioniert normalerweise für eine Ansicht, aber schlägt in einem Editor fehl. Was ist der Unterschied?

Der Unterschied in den transfert type sein soll:

Zur Erinnerung, ermöglichen die Übertragung Typen ziehen Quellen angeben, welche Art von Objekt sie erlauben, aus ihrem Widget gezogen werden, und sie ermöglichen Drop Ziele, um anzugeben, welche Arten von Objekten sie empfangen möchten. Für jeden Übertragungstyp gibt es eine Unterklasse von org.eclipse.swt.dnd.Transfer. Diese Unterklassen implementieren das Marshalling-Verhalten, das zwischen Objekten und Bytes konvertiert und Drag-and-Drop-Übertragungen zwischen Anwendungen ermöglicht.

Kann die Liste der Transfer-Art, die Sie verwenden, nicht ganz mit dem Ziel (ein Editor) kompatibel sein? Weitere Informationen hierzu finden Sie unter this thread.

Ein weiterer zu berücksichtigender Punkt ist die ordnungsgemäße Einrichtung eines TransferDropTargetListener (wie in this thread).

Da ich Eclipse DnD noch nicht vollständig getestet habe, kann ich Ihnen zu diesem Thema nicht viel mehr Details geben, aber hoffentlich gibt Ihnen das etwas, um Ihre eigene Analyse zu beginnen.

+0

siehe bearbeiten. Der Code schlägt den gesamten Editor fehl. – Imaskar