blob: beb04f8b26662238a04029501c62dfb1c4bab322 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2007 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.dnd;
import org.eclipse.swt.dnd.DropTargetListener;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.widgets.Control;
/**
* This interface specifies the API for a service to be used by part authors to
* access methods which provide support for Drag and Drop operations within the
* workbench.
* <p>
* Authors should access this service using the PartSite's
* <code>getService</code> method, passing this interface as the argument.
* </p>
* <p>
* <b>NOTE:</b> This interface it not expected to be implemented by clients; it
* is provided only to allow access to the service's methods.
* </p>
* <p>
*
* @since 3.3
*
*/
public interface IDragAndDropService {
/**
* Causes a drop target to be added to the given control that respects the
* existing site's drop behaviour in addition to the behaviour being
* specified for the given control.
* <p>
* If a transfer type specified for the control matches one used by the site
* then the control's listener is called (the client is overriding the
* existing site behaviour which will no longer work).
* </p>
* <p>
* NOTE: Site authors <b>must</b> use this method to add drop behaviour;
* directly adding drop targets using SWT onto a site will cause the
* standard site behaviour (i.e. dragging files / markers into the
* EditorSite...) to not work when that editor is active.
* </p>
* <p>
* Note that this method may be used more than once should the part author
* wish to register different drop targets for internal controls (i.e. to
* support internal DnD).
* </p>
* <p>
*
* @param control
* The control to add the drop behaviour to
* @param ops
* The Drop operations used by this target
* @param transfers
* The TransferTypes used by this target
* @param listener
* The listener controlling the target's behaviour
*/
public void addMergedDropTarget(Control control, int ops, Transfer[] transfers, DropTargetListener listener);
/**
* Remove any previously 'merged' drop target for this Control
*
* @param control The control to remove the drop target for
*/
public void removeMergedDropTarget(Control control);
}