Example usage for org.eclipse.jface.util TransferDropTargetListener isEnabled

List of usage examples for org.eclipse.jface.util TransferDropTargetListener isEnabled

Introduction

In this page you can find the example usage for org.eclipse.jface.util TransferDropTargetListener isEnabled.

Prototype

boolean isEnabled(DropTargetEvent event);

Source Link

Document

Returns true if this listener can handle the drop based on the given DropTargetEvent.

Usage

From source file:descent.internal.ui.dnd.DelegatingDropAdapter.java

License:Open Source License

/**
 * Updates the current listener to one that can handle the drop. There can
 * be many listeners and each listener may be able to handle many
 * <code>TransferData</code> types. The first listener found that can
 * handle a drop of one of the given <code>TransferData</code> types will
 * be selected. If no listener can handle the drag operation the
 * <code>event.detail</code> field is set to <code>DND.DROP_NONE</code>
 * to indicate an invalid drop./*from  w  w  w  . ja v a 2 s . c  om*/
 * 
 * @param event the drop target event
 */
private void updateCurrentListener(DropTargetEvent event) {
    int originalDetail = event.detail;
    // Revert the detail to the "original" drop type that the User
    // indicated. This is necessary because the previous listener 
    // may have changed the detail to something other than what the 
    // user indicated.
    event.detail = fOriginalDropType;

    for (int i = 0; i < fListeners.length; i++) {
        TransferDropTargetListener listener = fListeners[i];
        TransferData dataType = getSupportedTransferType(event.dataTypes, listener);
        if (dataType != null) {
            TransferData originalDataType = event.currentDataType;
            // set the data type supported by the drop listener
            event.currentDataType = dataType;
            if (listener.isEnabled(event)) {
                // if the listener stays the same, set its previously
                // determined
                // event detail
                if (!setCurrentListener(listener, event))
                    event.detail = originalDetail;
                return;
            } else {
                event.currentDataType = originalDataType;
            }
        }
    }
    setCurrentListener(null, event);
    event.detail = DND.DROP_NONE;
}

From source file:net.sf.eclipsensis.installoptions.editor.InstallOptionsGraphicalViewer.java

License:Open Source License

@Override
public void addDropTargetListener(final TransferDropTargetListener listener) {
    if (listener.getTransfer() instanceof TemplateTransfer) {
        super.addDropTargetListener(new TransferDropTargetListener() {
            public void dragEnter(DropTargetEvent event) {
                listener.dragEnter(event);
            }/*from  ww  w  .j  a v a  2 s  .  co  m*/

            public void dragLeave(DropTargetEvent event) {
                listener.dragLeave(event);
            }

            public void dragOperationChanged(DropTargetEvent event) {
                listener.dragOperationChanged(event);
            }

            public void dragOver(DropTargetEvent event) {
                listener.dragOver(event);
            }

            public void drop(DropTargetEvent event) {
                listener.drop(event);
            }

            public void dropAccept(DropTargetEvent event) {
                listener.dropAccept(event);
            }

            public Transfer getTransfer() {
                return InstallOptionsTemplateTransfer.INSTANCE;
            }

            public boolean isEnabled(DropTargetEvent event) {
                return listener.isEnabled(event);
            }
        });
    } else {
        super.addDropTargetListener(listener);
    }
}

From source file:org.eclipse.cdt.internal.ui.dnd.DelegatingDropAdapter.java

License:Open Source License

/**
 * Updates the current listener to one that can handle the drop. There can
 * be many listeners and each listener may be able to handle many
 * <code>TransferData</code> types. The first listener found that can
 * handle a drop of one of the given <code>TransferData</code> types will
 * be selected. If no listener can handle the drag operation the
 * <code>event.detail</code> field is set to <code>DND.DROP_NONE</code>
 * to indicate an invalid drop.//from  www.  ja v a2  s .  c  o m
 * 
 * @param event the drop target event
 */
private void updateCurrentListener(DropTargetEvent event) {
    int originalDetail = event.detail;
    // Revert the detail to the "original" drop type that the User
    // indicated. This is necessary because the previous listener 
    // may have changed the detail to something other than what the 
    // user indicated.
    event.detail = fOriginalDropType;

    for (int i = 0; i < fListeners.length; i++) {
        TransferDropTargetListener listener = fListeners[i];
        TransferData dataType = getSupportedTransferType(event.dataTypes, listener);
        if (dataType != null) {
            TransferData originalDataType = event.currentDataType;
            // set the data type supported by the drop listener
            event.currentDataType = dataType;
            if (listener.isEnabled(event)) {
                // if the listener stays the same, set its previously
                // determined
                // event detail
                if (!setCurrentListener(listener, event))
                    event.detail = originalDetail;
                return;
            }
            event.currentDataType = originalDataType;
        }
    }
    setCurrentListener(null, event);
    event.detail = DND.DROP_NONE;
}