Class DelegatingDragAdapter
- All Implemented Interfaces:
- EventListener,- DragSourceListener,- SWTEventListener
DelegatingDragAdapter is a DragSourceListener
 that maintains and delegates to a set of TransferDragSourceListeners.
 Each TransferDragSourceListener can then be implemented as if it were the
 DragSource's only DragSourceListener.
 
 When a drag is started, a subset of all
 TransferDragSourceListeners is generated and stored in a list of
 active listeners. This subset is calculated by forwarding
 DragSourceListener.dragStart(DragSourceEvent) to every listener, and
 checking if the doit field is left set to
 true.
 
DragSource's set of supported Transfer types
 (DragSource.setTransfer(Transfer[])) is updated to reflect the
 Transfer types corresponding to the active listener subset.
 
 If and when dragSetData(DragSourceEvent) is called, a single
 TransferDragSourceListener is chosen, and only it is allowed to
 set the drag data. The chosen listener is the first listener in the subset of
 active listeners whose Transfer supports
 (Transfer.isSupportedType(TransferData)) the dataType in
 the DragSourceEvent.
 
 The following example snippet shows a DelegatingDragAdapter with
 two TransferDragSourceListeners. One implements drag of text
 strings, the other supports file transfer and demonstrates how a listener can
 be disabled using the dragStart method.
 
 
                final TreeViewer viewer = new TreeViewer(shell, SWT.NONE);
                DelegatingDragAdapter dragAdapter = new DelegatingDragAdapter();
                dragAdapter.addDragSourceListener(new TransferDragSourceListener() {
                        public Transfer getTransfer() {
                                return TextTransfer.getInstance();
                        }
                        public void dragStart(DragSourceEvent event) {
                                // always enabled, can control enablement based on selection etc.
                        }
                        public void dragSetData(DragSourceEvent event) {
                                event.data = "Transfer data";
                        }
                        public void dragFinished(DragSourceEvent event) {
                                // no clean-up required
                        }
                });
                dragAdapter.addDragSourceListener(new TransferDragSourceListener() {
                        public Transfer getTransfer() {
                                return FileTransfer.getInstance();
                        }
                        public void dragStart(DragSourceEvent event) {
                                // enable drag listener if there is a viewer selection
                                event.doit = !viewer.getSelection().isEmpty();
                        }
                        public void dragSetData(DragSourceEvent event) {
                                File file1 = new File("C:/temp/file1");
                                File file2 = new File("C:/temp/file2");
                                event.data = new String[] {file1.getAbsolutePath(), file2.getAbsolutePath()};
                        }
                        public void dragFinished(DragSourceEvent event) {
                                // no clean-up required
                        }
                });
                viewer.addDragSupport(DND.DROP_COPY | DND.DROP_MOVE, dragAdapter.getTransfers(), dragAdapter);
 
 - Since:
- 3.0
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidAdds the givenTransferDragSourceListener.voiddragFinished(DragSourceEvent event) The drop has successfully completed.voiddragSetData(DragSourceEvent event) The drop data is requested.voiddragStart(DragSourceEvent event) A drag operation has started.Transfer[]Returns theTransfers from everyTransferDragSourceListener.booleanisEmpty()Returnstrueif there are no listeners to delegate drag events to.voidRemoves the givenTransferDragSourceListener.
- 
Constructor Details- 
DelegatingDragAdapterpublic DelegatingDragAdapter()
 
- 
- 
Method Details- 
addDragSourceListenerAdds the givenTransferDragSourceListener.- Parameters:
- listener- the new listener
 
- 
dragFinishedThe drop has successfully completed. This event is forwarded to the current drag listener. Doesn't update the current listener, since the current listener is already the one that completed the drag operation.- Specified by:
- dragFinishedin interface- DragSourceListener
- Parameters:
- event- the drag source event
- See Also:
 
- 
dragSetDataThe drop data is requested. Updates the current listener and then forwards the event to it.- Specified by:
- dragSetDatain interface- DragSourceListener
- Parameters:
- event- the drag source event
- See Also:
 
- 
dragStartA drag operation has started. Forwards this event to each listener. A listener must setevent.doittofalseif it cannot handle the drag operation. If a listener can handle the drag, it is added to the list of active listeners. The drag is aborted if there are no listeners that can handle it.- Specified by:
- dragStartin interface- DragSourceListener
- Parameters:
- event- the drag source event
- See Also:
 
- 
getTransfersReturns theTransfers from everyTransferDragSourceListener.- Returns:
- the combined Transfers
 
- 
isEmptypublic boolean isEmpty()Returnstrueif there are no listeners to delegate drag events to.- Returns:
- trueif there are no- TransferDragSourceListeners- falseotherwise.
 
- 
removeDragSourceListenerRemoves the givenTransferDragSourceListener. Listeners should not be removed while a drag and drop operation is in progress.- Parameters:
- listener- the- TransferDragSourceListenerto remove
 
 
-