01: /*******************************************************************************
02: * Copyright (c) 2006, 2007 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.ui.dnd;
11:
12: import org.eclipse.swt.dnd.DropTargetListener;
13: import org.eclipse.swt.dnd.Transfer;
14: import org.eclipse.swt.widgets.Control;
15:
16: /**
17: * This interface specifies the API for a service to be used by part authors to
18: * access methods which provide support for Drag and Drop operations within the
19: * workbench.
20: * <p>
21: * Authors should access this service using the PartSite's
22: * <code>getService</code> method, passing this interface as the argument.
23: * </p>
24: * <p>
25: * <b>NOTE:</b> This interface it not expected to be implemented by clients; it
26: * is provided only to allow access to the service's methods.
27: * </p>
28: * <p>
29: *
30: * @since 3.3
31: *
32: */
33: public interface IDragAndDropService {
34: /**
35: * Causes a drop target to be added to the given control that respects the
36: * existing site's drop behaviour in addition to the behaviour being
37: * specified for the given control.
38: * <p>
39: * If a transfer type specified for the control matches one used by the site
40: * then the control's listener is called (the client is overriding the
41: * existing site behaviour which will no longer work).
42: * </p>
43: * <p>
44: * NOTE: Site authors <b>must</b> use this method to add drop behaviour;
45: * directly adding drop targets using SWT onto a site will cause the
46: * standard site behaviour (i.e. dragging files / markers into the
47: * EditorSite...) to not work when that editor is active.
48: * </p>
49: * <p>
50: * Note that this method may be used more than once should the part author
51: * wish to register different drop targets for internal controls (i.e. to
52: * support internal DnD).
53: * </p>
54: * <p>
55: *
56: * @param control
57: * The control to add the drop behaviour to
58: * @param ops
59: * The Drop operations used by this target
60: * @param transfers
61: * The TransferTypes used by this target
62: * @param listener
63: * The listener controlling the target's behaviour
64: */
65: public void addMergedDropTarget(Control control, int ops,
66: Transfer[] transfers, DropTargetListener listener);
67:
68: /**
69: * Remove any previously 'merged' drop target for this Control
70: *
71: * @param control The control to remove the drop target for
72: */
73: public void removeMergedDropTarget(Control control);
74: }
|