diff options
author | Grant Gayed <grant_gayed@ca.ibm.com> | 2012-08-02 11:42:02 -0400 |
---|---|---|
committer | Grant Gayed <grant_gayed@ca.ibm.com> | 2012-08-02 11:42:02 -0400 |
commit | 3728914b67bd00a8b771027767ab899d29ec9d30 (patch) | |
tree | df5a5b373d26b2529f6e6bf7b3b51b83a9efc71e /bundles/org.eclipse.swt/Eclipse SWT Drag and Drop | |
parent | 4449b03691165bfcd4a87794623b19eba32810cf (diff) | |
download | eclipse.platform.swt-3728914b67bd00a8b771027767ab899d29ec9d30.tar.gz eclipse.platform.swt-3728914b67bd00a8b771027767ab899d29ec9d30.tar.xz eclipse.platform.swt-3728914b67bd00a8b771027767ab899d29ec9d30.zip |
Bug 345296 - Remove qt from org.eclipse.swt
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Drag and Drop')
16 files changed, 0 insertions, 2918 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/ByteArrayTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/ByteArrayTransfer.java deleted file mode 100644 index e46c883f8b..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/ByteArrayTransfer.java +++ /dev/null @@ -1,201 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * Portion Copyright (c) 2009-2010 compeople AG (http://www.compeople.de). - * 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 - * Compeople AG - QtJambi/Qt based implementation for Windows/Mac OS X/Linux - *******************************************************************************/ -package org.eclipse.swt.dnd; - -/** - * The class <code>ByteArrayTransfer</code> provides a platform specific - * mechanism for converting a java <code>byte[]</code> to a platform specific - * representation of the byte array and vice versa. - * - * <p> - * <code>ByteArrayTransfer</code> is never used directly but is sub-classed by - * transfer agents that convert between data in a java format such as a - * <code>String</code> and a platform specific byte array. - * - * <p> - * If the data you are converting <b>does not</b> map to a <code>byte[]</code>, - * you should sub-class <code>Transfer</code> directly and do your own mapping - * to a platform data type. - * </p> - * - * <p> - * The following snippet shows a subclass of ByteArrayTransfer that transfers - * data defined by the class <code>MyType</code>. - * </p> - * - * <pre> - * <code> - * public class MyType { - * public String fileName; - * public long fileLength; - * public long lastModified; - * } - * </code> - * </pre> - * - * <pre> - * <code> - * public class MyTypeTransfer extends ByteArrayTransfer { - * - * private static final String MYTYPENAME = "my_type_name"; - * private static final int MYTYPEID = registerType(MYTYPENAME); - * private static MyTypeTransfer _instance = new MyTypeTransfer(); - * - * private MyTypeTransfer() {} - * - * public static MyTypeTransfer getInstance () { - * return _instance; - * } - * public void javaToNative (Object object, TransferData transferData) { - * if (object == null || !(object instanceof MyType[])) return; - * - * if (isSupportedType(transferData)) { - * MyType[] myTypes = (MyType[]) object; - * try { - * // write data to a byte array and then ask super to convert to pMedium - * ByteArrayOutputStream out = new ByteArrayOutputStream(); - * DataOutputStream writeOut = new DataOutputStream(out); - * for (int i = 0, length = myTypes.length; i < length; i++){ - * byte[] buffer = myTypes[i].fileName.getBytes(); - * writeOut.writeInt(buffer.length); - * writeOut.write(buffer); - * writeOut.writeLong(myTypes[i].fileLength); - * writeOut.writeLong(myTypes[i].lastModified); - * } - * byte[] buffer = out.toByteArray(); - * writeOut.close(); - * - * super.javaToNative(buffer, transferData); - * - * } catch (IOException e) { - * } - * } - * } - * public Object nativeToJava(TransferData transferData){ - * - * if (isSupportedType(transferData)) { - * - * byte[] buffer = (byte[])super.nativeToJava(transferData); - * if (buffer == null) return null; - * - * MyType[] myData = new MyType[0]; - * try { - * ByteArrayInputStream in = new ByteArrayInputStream(buffer); - * DataInputStream readIn = new DataInputStream(in); - * while(readIn.available() > 20) { - * MyType datum = new MyType(); - * int size = readIn.readInt(); - * byte[] name = new byte[size]; - * readIn.read(name); - * datum.fileName = new String(name); - * datum.fileLength = readIn.readLong(); - * datum.lastModified = readIn.readLong(); - * MyType[] newMyData = new MyType[myData.length + 1]; - * System.arraycopy(myData, 0, newMyData, 0, myData.length); - * newMyData[myData.length] = datum; - * myData = newMyData; - * } - * readIn.close(); - * } catch (IOException ex) { - * return null; - * } - * return myData; - * } - * - * return null; - * } - * protected String[] getTypeNames(){ - * return new String[]{MYTYPENAME}; - * } - * protected int[] getTypeIds(){ - * return new int[] {MYTYPEID}; - * } - * } - * </code> - * </pre> - * - * @see Transfer - */ -public abstract class ByteArrayTransfer extends Transfer { - - @Override - public TransferData[] getSupportedTypes() { - int[] types = getTypeIds(); - String[] names = getTypeNames(); - TransferData[] data = new TransferData[types.length]; - for (int i = 0; i < types.length; i++) { - data[i] = new TransferData(); - data[i].type = types[i]; - data[i].format = names[i]; - } - return data; - } - - @Override - public boolean isSupportedType(TransferData transferData) { - if (transferData == null) { - return false; - } - int[] types = getTypeIds(); - for (int i = 0; i < types.length; i++) { - if (transferData.type == types[i]) { - return true; - } - } - return false; - } - - /** - * This implementation of <code>javaToNative</code> converts a java - * <code>byte[]</code> to a platform specific representation. - * - * @param object - * a java <code>byte[]</code> containing the data to be converted - * @param transferData - * an empty <code>TransferData</code> object that will be filled - * in on return with the platform specific format of the data - * - * @see Transfer#nativeToJava - */ - @Override - protected void javaToNative(Object object, TransferData transferData) { - if (!checkByteArray(object) || !isSupportedType(transferData)) { - DND.error(DND.ERROR_INVALID_DATA); - } - transferData.data = object; - } - - /** - * This implementation of <code>nativeToJava</code> converts a platform - * specific representation of a byte array to a java <code>byte[]</code>. - * - * @param transferData - * the platform specific representation of the data to be - * converted - * @return a java <code>byte[]</code> containing the converted data if the - * conversion was successful; otherwise null - * - * @see Transfer#javaToNative - */ - @Override - protected Object nativeToJava(TransferData transferData) { - if (!checkByteArray(transferData.data) || !isSupportedType(transferData)) { - return null; - } - return transferData.data; - } - - protected boolean checkByteArray(Object object) { - return object != null && object instanceof byte[] && ((byte[]) object).length > 0; - } -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/Clipboard.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/Clipboard.java deleted file mode 100644 index 981acde037..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/Clipboard.java +++ /dev/null @@ -1,410 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2009 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.swt.dnd; - - -import org.eclipse.swt.*; -import org.eclipse.swt.widgets.*; - -/** - * The <code>Clipboard</code> provides a mechanism for transferring data from one - * application to another or within an application. - * - * <p>IMPORTANT: This class is <em>not</em> intended to be subclassed.</p> - * - * @see <a href="http://www.eclipse.org/swt/snippets/#clipboard">Clipboard snippets</a> - * @see <a href="http://www.eclipse.org/swt/examples.php">SWT Example: ClipboardExample</a> - * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a> - * @noextend This class is not intended to be subclassed by clients. - */ -public class Clipboard { - - private Display display; - -/** - * Constructs a new instance of this class. Creating an instance of a Clipboard - * may cause system resources to be allocated depending on the platform. It is therefore - * mandatory that the Clipboard instance be disposed when no longer required. - * - * @param display the display on which to allocate the clipboard - * - * @exception SWTException <ul> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> - * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li> - * </ul> - * - * @see Clipboard#dispose - * @see Clipboard#checkSubclass - */ -public Clipboard(Display display) { - checkSubclass (); - if (display == null) { - display = Display.getCurrent(); - if (display == null) { - display = Display.getDefault(); - } - } - if (display.getThread() != Thread.currentThread()) { - DND.error(SWT.ERROR_THREAD_INVALID_ACCESS); - } - this.display = display; -} - -/** - * Checks that this class can be subclassed. - * <p> - * The SWT class library is intended to be subclassed - * only at specific, controlled points. This method enforces this - * rule unless it is overridden. - * </p><p> - * <em>IMPORTANT:</em> By providing an implementation of this - * method that allows a subclass of a class which does not - * normally allow subclassing to be created, the implementer - * agrees to be fully responsible for the fact that any such - * subclass will likely fail between SWT releases and will be - * strongly platform specific. No support is provided for - * user-written classes which are implemented in this fashion. - * </p><p> - * The ability to subclass outside of the allowed SWT classes - * is intended purely to enable those not on the SWT development - * team to implement patches in order to get around specific - * limitations in advance of when those limitations can be - * addressed by the team. Subclassing should not be attempted - * without an intimate and detailed understanding of the hierarchy. - * </p> - * - * @exception SWTException <ul> - * <li>ERROR_INVALID_SUBCLASS - if this class is not an allowed subclass</li> - * </ul> - */ -protected void checkSubclass () { - String name = getClass().getName (); - String validName = Clipboard.class.getName(); - if (!validName.equals(name)) { - DND.error (SWT.ERROR_INVALID_SUBCLASS); - } -} - -/** - * Throws an <code>SWTException</code> if the receiver can not - * be accessed by the caller. This may include both checks on - * the state of the receiver and more generally on the entire - * execution context. This method <em>should</em> be called by - * widget implementors to enforce the standard SWT invariants. - * <p> - * Currently, it is an error to invoke any method (other than - * <code>isDisposed()</code>) on a widget that has had its - * <code>dispose()</code> method called. It is also an error - * to call widget methods from any thread that is different - * from the thread that created the widget. - * </p><p> - * In future releases of SWT, there may be more or fewer error - * checks and exceptions may be thrown for different reasons. - * </p> - * - * @exception SWTException <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> - * </ul> - */ -protected void checkWidget () { - Display display = this.display; - if (display == null) DND.error (SWT.ERROR_WIDGET_DISPOSED); - if (display.getThread() != Thread.currentThread ()) DND.error (SWT.ERROR_THREAD_INVALID_ACCESS); - if (display.isDisposed()) DND.error(SWT.ERROR_WIDGET_DISPOSED); -} - -/** - * Disposes of the operating system resources associated with the clipboard. - * The data will still be available on the system clipboard after the dispose - * method is called. - * - * <p>NOTE: On some platforms the data will not be available once the application - * has exited or the display has been disposed.</p> - * - * @exception SWTException <ul> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> - * </ul> - */ -public void dispose () { - if (isDisposed()) return; - if (display.getThread() != Thread.currentThread()) DND.error(SWT.ERROR_THREAD_INVALID_ACCESS); - display = null; -} - -/** - * Retrieve the data of the specified type currently available on the system - * clipboard. Refer to the specific subclass of <code>Transfer</code> to - * determine the type of object returned. - * - * <p>The following snippet shows text and RTF text being retrieved from the - * clipboard:</p> - * - * <code><pre> - * Clipboard clipboard = new Clipboard(display); - * TextTransfer textTransfer = TextTransfer.getInstance(); - * String textData = (String)clipboard.getContents(textTransfer); - * if (textData != null) System.out.println("Text is "+textData); - * RTFTransfer rtfTransfer = RTFTransfer.getInstance(); - * String rtfData = (String)clipboard.getContents(rtfTransfer); - * if (rtfData != null) System.out.println("RTF Text is "+rtfData); - * clipboard.dispose(); - * </code></pre> - * - * @param transfer the transfer agent for the type of data being requested - * @return the data obtained from the clipboard or null if no data of this type is available - * - * @exception SWTException <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> - * </ul> - * @exception IllegalArgumentException <ul> - * <li>ERROR_NULL_ARGUMENT - if transfer is null</li> - * </ul> - * - * @see Transfer - */ -public Object getContents(Transfer transfer) { - return getContents(transfer, DND.CLIPBOARD); -} - -/** - * Retrieve the data of the specified type currently available on the specified - * clipboard. Refer to the specific subclass of <code>Transfer</code> to - * determine the type of object returned. - * - * <p>The following snippet shows text and RTF text being retrieved from the - * clipboard:</p> - * - * <code><pre> - * Clipboard clipboard = new Clipboard(display); - * TextTransfer textTransfer = TextTransfer.getInstance(); - * String textData = (String)clipboard.getContents(textTransfer); - * if (textData != null) System.out.println("Text is "+textData); - * RTFTransfer rtfTransfer = RTFTransfer.getInstance(); - * String rtfData = (String)clipboard.getContents(rtfTransfer, DND.CLIPBOARD); - * if (rtfData != null) System.out.println("RTF Text is "+rtfData); - * clipboard.dispose(); - * </code></pre> - * - * <p>The clipboards value is either one of the clipboard constants defined in - * class <code>DND</code>, or must be built by <em>bitwise OR</em>'ing together - * (that is, using the <code>int</code> "|" operator) two or more - * of those <code>DND</code> clipboard constants.</p> - * - * @param transfer the transfer agent for the type of data being requested - * @param clipboards on which to look for data - * - * @return the data obtained from the clipboard or null if no data of this type is available - * - * @exception SWTException <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> - * </ul> - * @exception IllegalArgumentException <ul> - * <li>ERROR_NULL_ARGUMENT - if transfer is null</li> - * </ul> - * - * @see Transfer - * @see DND#CLIPBOARD - * @see DND#SELECTION_CLIPBOARD - * - * @since 3.1 - */ -public Object getContents(Transfer transfer, int clipboards) { - checkWidget(); - if (transfer == null) DND.error(SWT.ERROR_NULL_ARGUMENT); - if (!(transfer instanceof TextTransfer)) return null; - return display.getData("TextTransfer"); //$NON-NLS-1$ -} - -/** - * Returns <code>true</code> if the clipboard has been disposed, - * and <code>false</code> otherwise. - * <p> - * This method gets the dispose state for the clipboard. - * When a clipboard has been disposed, it is an error to - * invoke any other method using the clipboard. - * </p> - * - * @return <code>true</code> when the widget is disposed and <code>false</code> otherwise - * - * @since 3.0 - */ -public boolean isDisposed () { - return (display == null); -} - -/** - * Place data of the specified type on the system clipboard. More than one type - * of data can be placed on the system clipboard at the same time. Setting the - * data clears any previous data from the system clipboard, regardless of type. - * - * <p>NOTE: On some platforms, the data is immediately copied to the system - * clipboard but on other platforms it is provided upon request. As a result, - * if the application modifies the data object it has set on the clipboard, that - * modification may or may not be available when the data is subsequently - * requested.</p> - * - * <p>The following snippet shows text and RTF text being set on the copy/paste - * clipboard: - * </p> - * - * <code><pre> - * Clipboard clipboard = new Clipboard(display); - * String textData = "Hello World"; - * String rtfData = "{\\rtf1\\b\\i Hello World}"; - * TextTransfer textTransfer = TextTransfer.getInstance(); - * RTFTransfer rtfTransfer = RTFTransfer.getInstance(); - * Transfer[] transfers = new Transfer[]{textTransfer, rtfTransfer}; - * Object[] data = new Object[]{textData, rtfData}; - * clipboard.setContents(data, transfers); - * clipboard.dispose(); - * </code></pre> - * - * @param data the data to be set in the clipboard - * @param dataTypes the transfer agents that will convert the data to its - * platform specific format; each entry in the data array must have a - * corresponding dataType - * - * @exception IllegalArgumentException <ul> - * <li>ERROR_INVALID_ARGUMENT - if data is null or datatypes is null - * or the length of data is not the same as the length of dataTypes</li> - * </ul> - * @exception SWTException <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> - * </ul> - * @exception SWTError <ul> - * <li>ERROR_CANNOT_SET_CLIPBOARD - if the clipboard is locked or otherwise unavailable</li> - * </ul> - * - * <p>NOTE: ERROR_CANNOT_SET_CLIPBOARD should be an SWTException, since it is a - * recoverable error, but can not be changed due to backward compatibility.</p> - */ -public void setContents(Object[] data, Transfer[] dataTypes) { - setContents(data, dataTypes, DND.CLIPBOARD); -} - -/** - * Place data of the specified type on the specified clipboard. More than one - * type of data can be placed on the specified clipboard at the same time. - * Setting the data clears any previous data from the specified - * clipboard, regardless of type. - * - * <p>NOTE: On some platforms, the data is immediately copied to the specified - * clipboard but on other platforms it is provided upon request. As a result, - * if the application modifies the data object it has set on the clipboard, that - * modification may or may not be available when the data is subsequently - * requested.</p> - * - * <p>The clipboards value is either one of the clipboard constants defined in - * class <code>DND</code>, or must be built by <em>bitwise OR</em>'ing together - * (that is, using the <code>int</code> "|" operator) two or more - * of those <code>DND</code> clipboard constants.</p> - * - * <p>The following snippet shows text and RTF text being set on the copy/paste - * clipboard: - * </p> - * - * <code><pre> - * Clipboard clipboard = new Clipboard(display); - * String textData = "Hello World"; - * String rtfData = "{\\rtf1\\b\\i Hello World}"; - * TextTransfer textTransfer = TextTransfer.getInstance(); - * RTFTransfer rtfTransfer = RTFTransfer.getInstance(); - * Transfer[] transfers = new Transfer[]{textTransfer, rtfTransfer}; - * Object[] data = new Object[]{textData, rtfData}; - * clipboard.setContents(data, transfers, DND.CLIPBOARD); - * clipboard.dispose(); - * </code></pre> - * - * @param data the data to be set in the clipboard - * @param dataTypes the transfer agents that will convert the data to its - * platform specific format; each entry in the data array must have a - * corresponding dataType - * @param clipboards on which to set the data - * - * @exception IllegalArgumentException <ul> - * <li>ERROR_INVALID_ARGUMENT - if data is null or datatypes is null - * or the length of data is not the same as the length of dataTypes</li> - * </ul> - * @exception SWTException <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> - * </ul> - * @exception SWTError <ul> - * <li>ERROR_CANNOT_SET_CLIPBOARD - if the clipboard is locked or otherwise unavailable</li> - * </ul> - * - * <p>NOTE: ERROR_CANNOT_SET_CLIPBOARD should be an SWTException, since it is a - * recoverable error, but can not be changed due to backward compatibility.</p> - * - * @see DND#CLIPBOARD - * @see DND#SELECTION_CLIPBOARD - * - * @since 3.1 - */ -public void setContents(Object[] data, Transfer[] dataTypes, int clipboards) { - checkWidget(); - if (data == null || dataTypes == null || data.length != dataTypes.length) { - DND.error(SWT.ERROR_INVALID_ARGUMENT); - } - - for (int i = 0; i < dataTypes.length; i++) { - if (dataTypes[i] instanceof TextTransfer && data[i] instanceof String){ - display.setData("TextTransfer", data[i]); //$NON-NLS-1$ - return; - } - } -} - -/** - * Returns an array of the data types currently available on the system - * clipboard. Use with Transfer.isSupportedType. - * - * @return array of data types currently available on the system clipboard - * - * @exception SWTException <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> - * </ul> - * - * @see Transfer#isSupportedType - * - * @since 3.0 - */ -public TransferData[] getAvailableTypes() { - checkWidget(); - return new TransferData[0]; -} - -/** - * Returns a platform specific list of the data types currently available on the - * system clipboard. - * - * <p>Note: <code>getAvailableTypeNames</code> is a utility for writing a Transfer - * sub-class. It should NOT be used within an application because it provides - * platform specific information.</p> - * - * @return a platform specific list of the data types currently available on the - * system clipboard - * - * @exception SWTException <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> - * </ul> - */ -public String[] getAvailableTypeNames() { - checkWidget(); - return new String[0]; -} -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/DragSource.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/DragSource.java deleted file mode 100644 index fffc83ce22..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/DragSource.java +++ /dev/null @@ -1,593 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2009 IBM Corporation and others. - * Portion Copyright (c) 2009-2010 compeople AG (http://www.compeople.de). - * 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 - * Compeople AG - QtJambi/Qt based implementation for Windows/Mac OS X/Linux - *******************************************************************************/ -package org.eclipse.swt.dnd; - -import com.trolltech.qt.core.QByteArray; -import com.trolltech.qt.core.QMimeData; -import com.trolltech.qt.core.Qt.DropAction; -import com.trolltech.qt.core.Qt.DropActions; -import com.trolltech.qt.gui.QDrag; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.SWTError; -import org.eclipse.swt.SWTException; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.Tree; -import org.eclipse.swt.widgets.Widget; - -/** - * - * <code>DragSource</code> defines the source object for a drag and drop - * transfer. - * - * <p> - * IMPORTANT: This class is <em>not</em> intended to be subclassed. - * </p> - * - * <p> - * A drag source is the object which originates a drag and drop operation. For - * the specified widget, it defines the type of data that is available for - * dragging and the set of operations that can be performed on that data. The - * operations can be any bit-wise combination of DND.MOVE, DND.COPY or DND.LINK. - * The type of data that can be transferred is specified by subclasses of - * Transfer such as TextTransfer or FileTransfer. The type of data transferred - * can be a predefined system type or it can be a type defined by the - * application. For instructions on how to define your own transfer type, refer - * to <code>ByteArrayTransfer</code>. - * </p> - * - * <p> - * You may have several DragSources in an application but you can only have one - * DragSource per Control. Data dragged from this DragSource can be dropped on a - * site within this application or it can be dropped on another application such - * as an external Text editor. - * </p> - * - * <p> - * The application supplies the content of the data being transferred by - * implementing the <code>DragSourceListener</code> and associating it with the - * DragSource via DragSource#addDragListener. - * </p> - * - * <p> - * When a successful move operation occurs, the application is required to take - * the appropriate action to remove the data from its display and remove any - * associated operating system resources or internal references. Typically in a - * move operation, the drop target makes a copy of the data and the drag source - * deletes the original. However, sometimes copying the data can take a long - * time (such as copying a large file). Therefore, on some platforms, the drop - * target may actually move the data in the operating system rather than make a - * copy. This is usually only done in file transfers. In this case, the drag - * source is informed in the DragEnd event that a DROP_TARGET_MOVE was - * performed. It is the responsibility of the drag source at this point to clean - * up its displayed information. No action needs to be taken on the operating - * system resources. - * </p> - * - * <p> - * The following example shows a Label widget that allows text to be dragged - * from it. - * </p> - * - * <code><pre> - * // Enable a label as a Drag Source - * Label label = new Label(shell, SWT.NONE); - * // This example will allow text to be dragged - * Transfer[] types = new Transfer[] {TextTransfer.getInstance()}; - * // This example will allow the text to be copied or moved to the drop target - * int operations = DND.DROP_MOVE | DND.DROP_COPY; - * - * DragSource source = new DragSource(label, operations); - * source.setTransfer(types); - * source.addDragListener(new DragSourceListener() { - * public void dragStart(DragSourceEvent e) { - * // Only start the drag if there is actually text in the - * // label - this text will be what is dropped on the target. - * if (label.getText().length() == 0) { - * event.doit = false; - * } - * }; - * public void dragSetData(DragSourceEvent event) { - * // A drop has been performed, so provide the data of the - * // requested type. - * // (Checking the type of the requested data is only - * // necessary if the drag source supports more than - * // one data type but is shown here as an example). - * if (TextTransfer.getInstance().isSupportedType(event.dataType)){ - * event.data = label.getText(); - * } - * } - * public void dragFinished(DragSourceEvent event) { - * // A Move operation has been performed so remove the data - * // from the source - * if (event.detail == DND.DROP_MOVE) - * label.setText(""); - * } - * }); - * </pre></code> - * - * - * <dl> - * <dt><b>Styles</b></dt> - * <dd>DND.DROP_NONE, DND.DROP_COPY, DND.DROP_MOVE, DND.DROP_LINK</dd> - * <dt><b>Events</b></dt> - * <dd>DND.DragStart, DND.DragSetData, DND.DragEnd</dd> - * </dl> - * - * @see <a href="http://www.eclipse.org/swt/snippets/#dnd">Drag and Drop - * snippets</a> - * @see <a href="http://www.eclipse.org/swt/examples.php">SWT Example: - * DNDExample</a> - * @see <a href="http://www.eclipse.org/swt/">Sample code and further - * information</a> - * @noextend This class is not intended to be subclassed by clients. - */ -public class DragSource extends Widget { - - // info for registering as a drag source - private Control control; - private Listener controlListener; - private Transfer[] transferAgents = new Transfer[0]; - private DragSourceEffect dragEffect; - private QDrag drag; - - private static final String DEFAULT_DRAG_SOURCE_EFFECT = "DEFAULT_DRAG_SOURCE_EFFECT"; //$NON-NLS-1$ - - /** - * Creates a new <code>DragSource</code> to handle dragging from the - * specified <code>Control</code>. Creating an instance of a DragSource may - * cause system resources to be allocated depending on the platform. It is - * therefore mandatory that the DragSource instance be disposed when no - * longer required. - * - * @param control - * the <code>Control</code> that the user clicks on to initiate - * the drag - * @param style - * the bitwise OR'ing of allowed operations; this may be a - * combination of any of DND.DROP_NONE, DND.DROP_COPY, - * DND.DROP_MOVE, DND.DROP_LINK - * - * @exception SWTException - * <ul> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the parent</li> - * <li>ERROR_INVALID_SUBCLASS - if this class is not an - * allowed subclass</li> - * </ul> - * @exception SWTError - * <ul> - * <li>ERROR_CANNOT_INIT_DRAG - unable to initiate drag - * source; this will occur if more than one drag source is - * created for a control or if the operating system will not - * allow the creation of the drag source</li> - * </ul> - * - * <p> - * NOTE: ERROR_CANNOT_INIT_DRAG should be an SWTException, - * since it is a recoverable error, but can not be changed - * due to backward compatibility. - * </p> - * - * @see Widget#dispose - * @see DragSource#checkSubclass - * @see DND#DROP_NONE - * @see DND#DROP_COPY - * @see DND#DROP_MOVE - * @see DND#DROP_LINK - */ - public DragSource(Control control, int style) { - super(control, checkStyle(style)); - this.control = control; - if (control.getData(DND.DRAG_SOURCE_KEY) != null) { - DND.error(DND.ERROR_CANNOT_INIT_DRAG); - } - control.setDragEnabled(true); - control.setData(DND.DRAG_SOURCE_KEY, this); - - controlListener = new Listener() { - public void handleEvent(Event event) { - if (event.type == SWT.DragDetect) { - if (!DragSource.this.isDisposed()) { - DragSource.this.drag(event); - return; - } - } - if (event.type == SWT.Dispose) { - if (!DragSource.this.isDisposed()) { - DragSource.this.dispose(); - } - } - } - }; - control.addListener(SWT.Dispose, controlListener); - control.addListener(SWT.DragDetect, controlListener); - - this.addListener(SWT.Dispose, new Listener() { - public void handleEvent(Event e) { - onDispose(); - } - }); - - Object effect = control.getData(DEFAULT_DRAG_SOURCE_EFFECT); - if (effect instanceof DragSourceEffect) { - dragEffect = (DragSourceEffect) effect; - } else if (control instanceof Tree) { - dragEffect = new TreeDragSourceEffect((Tree) control); - } else if (control instanceof Table) { - dragEffect = new TableDragSourceEffect((Table) control); - } - } - - private void drag(Event dragEvent) { - if (transferAgents == null || transferAgents.length == 0) { - return; - } - System.out.println("dragging ongoing"); - - try { - if (drag == null) { - DNDEvent event = new DNDEvent(); - event.widget = this; - event.x = dragEvent.x; - event.y = dragEvent.y; - event.time = dragEvent.time; - event.doit = true; - notifyListeners(DND.DragStart, event); - - if (!event.doit) { - System.out.println("stop after DragStart event"); - return; - } - - QMimeData mimeData = createMimeData(); - if (mimeData == null) { - System.out.println("stop after DragSetData event"); - return; - } - - System.out.println("send mime: " + mimeData); - - drag = new QDrag(control.getQWidget()); - - drag.setMimeData(mimeData); - - DropActions actions = convertOps2Actions(getStyle()); - DropAction dropAction = drag.exec(actions, defaultAction(actions)); - - int operation = convertAction(dropAction); - DNDEvent endEvent = new DNDEvent(); - endEvent.widget = this; - endEvent.doit = operation != 0; - endEvent.detail = operation; - notifyListeners(DND.DragEnd, endEvent); - - control.dragEnd(); - System.out.println(dropAction); - } - } finally { - drag = null; - } - } - - /** - * @param actions - * @return - */ - private DropAction defaultAction(DropActions actions) { - if (actions.isSet(DropAction.CopyAction)) { - return DropAction.CopyAction; - } else if (actions.isSet(DropAction.MoveAction)) { - return DropAction.MoveAction; - } else if (actions.isSet(DropAction.LinkAction)) { - return DropAction.LinkAction; - } else if (actions.isSet(DropAction.TargetMoveAction)) { - return DropAction.TargetMoveAction; - } - return DropAction.IgnoreAction; - } - - /** - * @param dragEvent - * @return - */ - private QMimeData createMimeData() { - QMimeData mimeData = null; - for (Transfer transfer : transferAgents) { - if (transfer == null) { - continue; - } - for (TransferData transferData : transfer.getSupportedTypes()) { - DNDEvent setDataEvent = new DNDEvent(); - setDataEvent.widget = this; - setDataEvent.dataType = transferData; - notifyListeners(DND.DragSetData, setDataEvent); - if (setDataEvent.doit && setDataEvent.data != null) { - transfer.javaToNative(setDataEvent.data, transferData); - if (mimeData == null) { - mimeData = new QMimeData(); - } - mimeData.setData(transferData.format, new QByteArray((byte[]) transferData.data)); - } - } - } - return mimeData; - } - - static int convertAction(DropAction dropAction) { - if (dropAction == DropAction.CopyAction) { - return DND.DROP_COPY; - } - if (dropAction == DropAction.MoveAction) { - return DND.DROP_MOVE; - } - if (dropAction == DropAction.LinkAction) { - return DND.DROP_LINK; - } - if (dropAction == DropAction.TargetMoveAction) { - return DND.DROP_TARGET_MOVE; - } - return DND.DROP_NONE; - } - - static int convertActions(DropActions dropActions) { - int actions = DND.DROP_NONE; - if (dropActions.isSet(DropAction.CopyAction)) { - actions |= DND.DROP_COPY; - } - if (dropActions.isSet(DropAction.MoveAction)) { - actions |= DND.DROP_MOVE; - } - if (dropActions.isSet(DropAction.LinkAction)) { - actions |= DND.DROP_LINK; - } - if (dropActions.isSet(DropAction.TargetMoveAction)) { - actions |= DND.DROP_TARGET_MOVE; - } - return actions; - } - - static DropActions convertOps2Actions(int operations) { - int actions = 0; - if ((operations & DND.DROP_COPY) != 0) { - actions |= DropAction.CopyAction.value(); - } - if ((operations & DND.DROP_MOVE) != 0) { - actions |= DropAction.MoveAction.value(); - } - if ((operations & DND.DROP_LINK) != 0) { - actions |= DropAction.LinkAction.value(); - } - if ((operations & DND.DROP_TARGET_MOVE) != 0) { - actions |= DropAction.TargetMoveAction.value(); - } - return new DropActions(actions); - } - - /** - * Adds the listener to the collection of listeners who will be notified - * when a drag and drop operation is in progress, by sending it one of the - * messages defined in the <code>DragSourceListener</code> interface. - * - * <p> - * <ul> - * <li><code>dragStart</code> is called when the user has begun the actions - * required to drag the widget. This event gives the application the chance - * to decide if a drag should be started. - * <li><code>dragSetData</code> is called when the data is required from the - * drag source. - * <li><code>dragFinished</code> is called when the drop has successfully - * completed (mouse up over a valid target) or has been terminated (such as - * hitting the ESC key). Perform cleanup such as removing data from the - * source side on a successful move operation. - * </ul> - * </p> - * - * @param listener - * the listener which should be notified - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> - * </ul> - * @exception SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @see DragSourceListener - * @see #getDragListeners - * @see #removeDragListener - * @see DragSourceEvent - */ - public void addDragListener(DragSourceListener listener) { - if (listener == null) { - DND.error(SWT.ERROR_NULL_ARGUMENT); - } - DNDListener typedListener = new DNDListener(listener); - typedListener.dndWidget = this; - addListener(DND.DragStart, typedListener); - addListener(DND.DragSetData, typedListener); - addListener(DND.DragEnd, typedListener); - } - - static int checkStyle(int style) { - if (style == SWT.NONE) { - return DND.DROP_MOVE; - } - return style; - } - - @Override - protected void checkSubclass() { - String name = getClass().getName(); - String validName = DragSource.class.getName(); - if (!validName.equals(name)) { - DND.error(SWT.ERROR_INVALID_SUBCLASS); - } - } - - /** - * Returns the Control which is registered for this DragSource. This is the - * control that the user clicks in to initiate dragging. - * - * @return the Control which is registered for this DragSource - */ - public Control getControl() { - return control; - } - - /** - * Returns an array of listeners who will be notified when a drag and drop - * operation is in progress, by sending it one of the messages defined in - * the <code>DragSourceListener</code> interface. - * - * @return the listeners who will be notified when a drag and drop operation - * is in progress - * - * @exception SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @see DragSourceListener - * @see #addDragListener - * @see #removeDragListener - * @see DragSourceEvent - * - * @since 3.4 - */ - public DragSourceListener[] getDragListeners() { - Listener[] listeners = getListeners(DND.DragStart); - int length = listeners.length; - DragSourceListener[] dragListeners = new DragSourceListener[length]; - int count = 0; - for (int i = 0; i < length; i++) { - Listener listener = listeners[i]; - if (listener instanceof DNDListener) { - dragListeners[count] = (DragSourceListener) ((DNDListener) listener).getEventListener(); - count++; - } - } - if (count == length) { - return dragListeners; - } - DragSourceListener[] result = new DragSourceListener[count]; - System.arraycopy(dragListeners, 0, result, 0, count); - return result; - } - - /** - * Returns the drag effect that is registered for this DragSource. This drag - * effect will be used during a drag and drop operation. - * - * @return the drag effect that is registered for this DragSource - * - * @since 3.3 - */ - public DragSourceEffect getDragSourceEffect() { - return dragEffect; - } - - /** - * Returns the list of data types that can be transferred by this - * DragSource. - * - * @return the list of data types that can be transferred by this DragSource - */ - public Transfer[] getTransfer() { - return transferAgents; - } - - private void onDispose() { - if (control == null) { - return; - } - if (controlListener != null) { - control.removeListener(SWT.Dispose, controlListener); - control.removeListener(SWT.DragDetect, controlListener); - } - controlListener = null; - control.setData(DND.DRAG_SOURCE_KEY, null); - control = null; - transferAgents = null; - } - - /** - * Removes the listener from the collection of listeners who will be - * notified when a drag and drop operation is in progress. - * - * @param listener - * the listener which should no longer be notified - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> - * </ul> - * @exception SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @see DragSourceListener - * @see #addDragListener - * @see #getDragListeners - */ - public void removeDragListener(DragSourceListener listener) { - if (listener == null) { - DND.error(SWT.ERROR_NULL_ARGUMENT); - } - removeListener(DND.DragStart, listener); - removeListener(DND.DragSetData, listener); - removeListener(DND.DragEnd, listener); - } - - /** - * Specifies the drag effect for this DragSource. This drag effect will be - * used during a drag and drop operation. - * - * @param effect - * the drag effect that is registered for this DragSource - * - * @since 3.3 - */ - public void setDragSourceEffect(DragSourceEffect effect) { - dragEffect = effect; - } - - /** - * Specifies the list of data types that can be transferred by this - * DragSource. The application must be able to provide data to match each of - * these types when a successful drop has occurred. - * - * @param transferAgents - * a list of Transfer objects which define the types of data that - * can be dragged from this source - */ - public void setTransfer(Transfer[] transferAgents) { - this.transferAgents = transferAgents; - } - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/DropTarget.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/DropTarget.java deleted file mode 100644 index 4bf4db6afd..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/DropTarget.java +++ /dev/null @@ -1,638 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2009 IBM Corporation and others. - * Portion Copyright (c) 2009-2010 compeople AG (http://www.compeople.de). - * 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 - * Compeople AG - QtJambi/Qt based implementation for Windows/Mac OS X/Linux - *******************************************************************************/ -package org.eclipse.swt.dnd; - -import java.util.ArrayList; -import java.util.List; - -import com.trolltech.qt.core.QByteArray; -import com.trolltech.qt.core.QMimeData; -import com.trolltech.qt.core.QPoint; -import com.trolltech.qt.core.Qt.DropAction; -import com.trolltech.qt.core.Qt.DropActions; -import com.trolltech.qt.gui.QDragEnterEvent; -import com.trolltech.qt.gui.QDragLeaveEvent; -import com.trolltech.qt.gui.QDragMoveEvent; -import com.trolltech.qt.gui.QDropEvent; -import com.trolltech.qt.gui.QWidget; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.SWTError; -import org.eclipse.swt.SWTException; -import org.eclipse.swt.internal.qt.DragNDropListener; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.Tree; -import org.eclipse.swt.widgets.Widget; - -/** - * - * Class <code>DropTarget</code> defines the target object for a drag and drop - * transfer. - * - * <p> - * IMPORTANT: This class is <em>not</em> intended to be subclassed. - * </p> - * - * <p> - * This class identifies the <code>Control</code> over which the user must - * position the cursor in order to drop the data being transferred. It also - * specifies what data types can be dropped on this control and what operations - * can be performed. You may have several DropTragets in an application but - * there can only be a one to one mapping between a <code>Control</code> and a - * <code>DropTarget</code>. The DropTarget can receive data from within the same - * application or from other applications (such as text dragged from a text - * editor like Word). - * </p> - * - * <code><pre> - * int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK; - * Transfer[] types = new Transfer[] {TextTransfer.getInstance()}; - * DropTarget target = new DropTarget(label, operations); - * target.setTransfer(types); - * </code></pre> - * - * <p> - * The application is notified of data being dragged over this control and of - * when a drop occurs by implementing the interface - * <code>DropTargetListener</code> which uses the class - * <code>DropTargetEvent</code>. The application can modify the type of drag - * being performed on this Control at any stage of the drag by modifying the - * <code>event.detail</code> field or the <code>event.currentDataType</code> - * field. When the data is dropped, it is the responsibility of the application - * to copy this data for its own purposes. - * - * <code><pre> - * target.addDropListener (new DropTargetListener() { - * public void dragEnter(DropTargetEvent event) {}; - * public void dragOver(DropTargetEvent event) {}; - * public void dragLeave(DropTargetEvent event) {}; - * public void dragOperationChanged(DropTargetEvent event) {}; - * public void dropAccept(DropTargetEvent event) {} - * public void drop(DropTargetEvent event) { - * // A drop has occurred, copy over the data - * if (event.data == null) { // no data to copy, indicate failure in event.detail - * event.detail = DND.DROP_NONE; - * return; - * } - * label.setText ((String) event.data); // data copied to label text - * } - * }); - * </pre></code> - * - * <dl> - * <dt><b>Styles</b></dt> - * <dd>DND.DROP_NONE, DND.DROP_COPY, DND.DROP_MOVE, DND.DROP_LINK</dd> - * <dt><b>Events</b></dt> - * <dd>DND.DragEnter, DND.DragLeave, DND.DragOver, DND.DragOperationChanged, - * DND.DropAccept, DND.Drop</dd> - * </dl> - * - * @see <a href="http://www.eclipse.org/swt/snippets/#dnd">Drag and Drop - * snippets</a> - * @see <a href="http://www.eclipse.org/swt/examples.php">SWT Example: - * DNDExample</a> - * @see <a href="http://www.eclipse.org/swt/">Sample code and further - * information</a> - * @noextend This class is not intended to be subclassed by clients. - */ -public class DropTarget extends Widget { - - // info for registering as a droptarget - Control control; - Listener controlListener; - Transfer[] transferAgents = new Transfer[0]; - DropTargetEffect dropEffect; - private DragNDropListener dndListener; - - static final String DEFAULT_DROP_TARGET_EFFECT = "DEFAULT_DROP_TARGET_EFFECT"; //$NON-NLS-1$ - - /** - * Creates a new <code>DropTarget</code> to allow data to be dropped on the - * specified <code>Control</code>. Creating an instance of a DropTarget may - * cause system resources to be allocated depending on the platform. It is - * therefore mandatory that the DropTarget instance be disposed when no - * longer required. - * - * @param control - * the <code>Control</code> over which the user positions the - * cursor to drop the data - * @param style - * the bitwise OR'ing of allowed operations; this may be a - * combination of any of DND.DROP_NONE, DND.DROP_COPY, - * DND.DROP_MOVE, DND.DROP_LINK - * - * @exception SWTException - * <ul> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the parent</li> - * <li>ERROR_INVALID_SUBCLASS - if this class is not an - * allowed subclass</li> - * </ul> - * @exception SWTError - * <ul> - * <li>ERROR_CANNOT_INIT_DROP - unable to initiate drop - * target; this will occur if more than one drop target is - * created for a control or if the operating system will not - * allow the creation of the drop target</li> - * </ul> - * - * <p> - * NOTE: ERROR_CANNOT_INIT_DROP should be an SWTException, - * since it is a recoverable error, but can not be changed - * due to backward compatibility. - * </p> - * - * @see Widget#dispose - * @see DropTarget#checkSubclass - * @see DND#DROP_NONE - * @see DND#DROP_COPY - * @see DND#DROP_MOVE - * @see DND#DROP_LINK - */ - public DropTarget(Control control, int style) { - super(control, checkStyle(style)); - this.control = control; - if (control.getData(DND.DROP_TARGET_KEY) != null) { - DND.error(DND.ERROR_CANNOT_INIT_DROP); - } - control.setData(DND.DROP_TARGET_KEY, this); - control.setAcceptDrops(true); - - controlListener = new Listener() { - public void handleEvent(Event event) { - if (!DropTarget.this.isDisposed()) { - DropTarget.this.dispose(); - } - } - }; - control.addListener(SWT.Dispose, controlListener); - - this.addListener(SWT.Dispose, new Listener() { - public void handleEvent(Event event) { - onDispose(); - } - }); - - this.dndListener = new QDNDListener(); - control.setDragNDropListener(dndListener); - - Object effect = control.getData(DEFAULT_DROP_TARGET_EFFECT); - if (effect instanceof DropTargetEffect) { - dropEffect = (DropTargetEffect) effect; - } else if (control instanceof Table) { - dropEffect = new TableDropTargetEffect((Table) control); - } else if (control instanceof Tree) { - dropEffect = new TreeDropTargetEffect((Tree) control); - } - } - - /** - * Adds the listener to the collection of listeners who will be notified - * when a drag and drop operation is in progress, by sending it one of the - * messages defined in the <code>DropTargetListener</code> interface. - * - * <p> - * <ul> - * <li><code>dragEnter</code> is called when the cursor has entered the drop - * target boundaries - * <li><code>dragLeave</code> is called when the cursor has left the drop - * target boundaries and just before the drop occurs or is cancelled. - * <li><code>dragOperationChanged</code> is called when the operation being - * performed has changed (usually due to the user changing the selected - * modifier key(s) while dragging) - * <li><code>dragOver</code> is called when the cursor is moving over the - * drop target - * <li><code>dropAccept</code> is called just before the drop is performed. - * The drop target is given the chance to change the nature of the drop or - * veto the drop by setting the <code>event.detail</code> field - * <li><code>drop</code> is called when the data is being dropped - * </ul> - * </p> - * - * @param listener - * the listener which should be notified - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> - * </ul> - * @exception SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @see DropTargetListener - * @see #getDropListeners - * @see #removeDropListener - * @see DropTargetEvent - */ - public void addDropListener(DropTargetListener listener) { - if (listener == null) { - DND.error(SWT.ERROR_NULL_ARGUMENT); - } - DNDListener typedListener = new DNDListener(listener); - typedListener.dndWidget = this; - addListener(DND.DragEnter, typedListener); - addListener(DND.DragLeave, typedListener); - addListener(DND.DragOver, typedListener); - addListener(DND.DragOperationChanged, typedListener); - addListener(DND.Drop, typedListener); - addListener(DND.DropAccept, typedListener); - } - - static int checkStyle(int style) { - if (style == SWT.NONE) { - return DND.DROP_MOVE; - } - return style; - } - - @Override - protected void checkSubclass() { - String name = getClass().getName(); - String validName = DropTarget.class.getName(); - if (!validName.equals(name)) { - DND.error(SWT.ERROR_INVALID_SUBCLASS); - } - } - - /** - * Returns the Control which is registered for this DropTarget. This is the - * control over which the user positions the cursor to drop the data. - * - * @return the Control which is registered for this DropTarget - */ - public Control getControl() { - return control; - } - - /** - * Returns an array of listeners who will be notified when a drag and drop - * operation is in progress, by sending it one of the messages defined in - * the <code>DropTargetListener</code> interface. - * - * @return the listeners who will be notified when a drag and drop operation - * is in progress - * - * @exception SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @see DropTargetListener - * @see #addDropListener - * @see #removeDropListener - * @see DropTargetEvent - * - * @since 3.4 - */ - public DropTargetListener[] getDropListeners() { - Listener[] listeners = getListeners(DND.DragEnter); - int length = listeners.length; - DropTargetListener[] dropListeners = new DropTargetListener[length]; - int count = 0; - for (int i = 0; i < length; i++) { - Listener listener = listeners[i]; - if (listener instanceof DropTargetListener) { - dropListeners[count] = (DropTargetListener) ((DNDListener) listener).getEventListener(); - count++; - } - } - if (count == length) { - return dropListeners; - } - DropTargetListener[] result = new DropTargetListener[count]; - System.arraycopy(dropListeners, 0, result, 0, count); - return result; - } - - /** - * Returns the drop effect for this DropTarget. This drop effect will be - * used during a drag and drop to display the drag under effect on the - * target widget. - * - * @return the drop effect that is registered for this DropTarget - * - * @since 3.3 - */ - public DropTargetEffect getDropTargetEffect() { - return dropEffect; - } - - /** - * Specifies the drop effect for this DropTarget. This drop effect will be - * used during a drag and drop to display the drag under effect on the - * target widget. - * - * @param effect - * the drop effect that is registered for this DropTarget - * - * @since 3.3 - */ - public void setDropTargetEffect(DropTargetEffect effect) { - dropEffect = effect; - } - - /** - * Returns a list of the data types that can be transferred to this - * DropTarget. - * - * @return a list of the data types that can be transferred to this - * DropTarget - */ - public Transfer[] getTransfer() { - return transferAgents; - } - - void onDispose() { - if (control == null) { - return; - } - if (controlListener != null) { - control.removeListener(SWT.Dispose, controlListener); - } - controlListener = null; - control.unsetDragNDropListener(dndListener); - dndListener = null; - control.setData(DND.DROP_TARGET_KEY, null); - control.setAcceptDrops(false); - transferAgents = null; - control = null; - } - - /** - * Removes the listener from the collection of listeners who will be - * notified when a drag and drop operation is in progress. - * - * @param listener - * the listener which should no longer be notified - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> - * </ul> - * @exception SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @see DropTargetListener - * @see #addDropListener - * @see #getDropListeners - */ - public void removeDropListener(DropTargetListener listener) { - if (listener == null) { - DND.error(SWT.ERROR_NULL_ARGUMENT); - } - removeListener(DND.DragEnter, listener); - removeListener(DND.DragLeave, listener); - removeListener(DND.DragOver, listener); - removeListener(DND.DragOperationChanged, listener); - removeListener(DND.Drop, listener); - removeListener(DND.DropAccept, listener); - } - - /** - * Specifies the data types that can be transferred to this DropTarget. If - * data is being dragged that does not match one of these types, the drop - * target will be notified of the drag and drop operation but the - * currentDataType will be null and the operation will be DND.NONE. - * - * @param transferAgents - * a list of Transfer objects which define the types of data that - * can be dropped on this target - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if transferAgents is null</li> - * </ul> - */ - public void setTransfer(Transfer[] transferAgents) { - if (transferAgents == null) { - DND.error(SWT.ERROR_NULL_ARGUMENT); - } - this.transferAgents = transferAgents; - } - - private final class QDNDListener implements DragNDropListener { - TransferData selectedDataType; - int selectedOperation = -1; - - public void dragEnter(QDragEnterEvent qEvent) { - System.out.println("DNDListener.dragEnter"); - - DNDEvent event = new DNDEvent(); - if (!initDNDEvent(event, qEvent.source(), qEvent.mimeData(), qEvent.pos(), qEvent.proposedAction(), qEvent - .possibleActions())) { - return; - } - - int operation = event.detail; - int allowedOperations = event.operations; - System.out.println("proposed op: " + operation + " from: " + event.operations); - selectedDataType = null; - selectedOperation = DND.DROP_NONE; - notifyListeners(DND.DragEnter, event); - - if (!handleEventResponse(qEvent, event, operation, allowedOperations)) { - qEvent.acceptProposedAction(); - } - } - - public void dragMove(QDragMoveEvent qEvent) { - System.out.println("DNDListener.dragMove"); - - DNDEvent event = new DNDEvent(); - if (!initDNDEvent(event, qEvent.source(), qEvent.mimeData(), qEvent.pos(), qEvent.proposedAction(), qEvent - .possibleActions())) { - return; - } - int operation = event.detail; - int allowedOperations = event.operations; - - System.out.println("proposed op: " + operation + " from: " + event.operations); - - selectedDataType = null; - if (selectedOperation != operation) { - System.out.println("op changed"); - notifyListeners(DND.DragOperationChanged, event); - } else { - notifyListeners(DND.DragOver, event); - } - handleEventResponse(qEvent, event, operation, allowedOperations); - } - - public void drop(QDropEvent event) { - System.out.println("DNDListener.drop. selected type: " + selectedDataType + " op: " + selectedOperation); - - DNDEvent swtEvent = new DNDEvent(); - if (!initDNDEvent(swtEvent, event.source(), event.mimeData(), event.pos(), event.proposedAction(), event - .possibleActions())) { - return; - } - - swtEvent.dataType = selectedDataType; - swtEvent.detail = selectedOperation; - - Transfer transfer = getTransfer(selectedDataType.format); - QByteArray ba = event.mimeData().data(selectedDataType.format); - if (ba == null || transfer == null) { - System.out.println("no data or transfer for format: " + selectedDataType.format); - return; - } - selectedDataType.data = ba.toByteArray(); - swtEvent.data = transfer.nativeToJava(selectedDataType); - - notifyListeners(DND.Drop, swtEvent); - handleEventResponse(event, swtEvent, selectedOperation, selectedOperation); - } - - public void dragLeave(QDragLeaveEvent event) { - System.out.println("DNDListener.dragLeave"); - DNDEvent swtEvent = new DNDEvent(); - - swtEvent.widget = DropTarget.this; - swtEvent.detail = DND.DROP_NONE; - notifyListeners(DND.DragLeave, swtEvent); - selectedDataType = null; - selectedOperation = -1; - } - - private boolean initDNDEvent(DNDEvent event, QWidget source, QMimeData mimeData, QPoint globalPos, - DropAction proposedAction, DropActions possibleActions) { - - event.operations = DragSource.convertActions(possibleActions) & getStyle(); - if (event.operations == DND.DROP_NONE) { - return false; - } - - TransferData[] dataTypes = getDataTypes(mimeData); - if (dataTypes.length == 0) { - System.out.println("no supported mime types found"); - return false; - } - - QPoint pos = source.mapToGlobal(globalPos); - event.widget = DropTarget.this; - event.x = pos.x(); - event.y = pos.y(); - event.time = DropTarget.this.control.getDisplay().getLastEventTime(); - event.dataType = dataTypes[0]; - event.dataTypes = dataTypes; - event.detail = DragSource.convertAction(proposedAction); - event.feedback = DND.FEEDBACK_SELECT; - event.doit = true; - if (dropEffect != null) { - event.item = dropEffect.getItem(event.x, event.y); - } - - return true; - } - - private boolean handleEventResponse(QDropEvent qEvent, DNDEvent event, int operation, int allowedOperations) { - selectedDataType = event.dataType; - System.out.println("selected type: " + selectedDataType); - System.out.println("op from event : " + event.detail); - if (event.detail == DND.DROP_DEFAULT) { - event.detail = (allowedOperations & DND.DROP_MOVE) != 0 ? DND.DROP_MOVE : DND.DROP_NONE; - } - - if (selectedDataType != null && (allowedOperations & event.detail) != 0) { - selectedOperation = event.detail; - } - System.out.println("selected op : " + selectedOperation); - - if (selectedOperation == operation) { - qEvent.acceptProposedAction(); - } else { - if (selectedOperation != DND.DROP_NONE) { - DropAction action = convertOperation(selectedOperation); - System.out.println("changed op: " + action); - qEvent.setDropAction(action); - qEvent.accept(); - } else { - return false; - } - } - return true; - } - - private Transfer getTransfer(String format) { - for (Transfer transfer : transferAgents) { - if (transfer == null) { - continue; - } - for (String typeName : transfer.getTypeNames()) { - if (format.equals(typeName)) { - return transfer; - } - } - } - return null; - } - - private TransferData[] getDataTypes(QMimeData mimeData) { - System.out.println("got mimeData " + mimeData.formats()); - - List<TransferData> dataTypes = new ArrayList<TransferData>(); - for (Transfer transfer : transferAgents) { - if (transfer == null) { - continue; - } - String[] typeNames = transfer.getTypeNames(); - int[] typeIds = transfer.getTypeIds(); - for (int i = 0; i < typeNames.length; i++) { - String typeName = typeNames[i]; - if (mimeData.hasFormat(typeName)) { - TransferData data = new TransferData(); - data.type = typeIds[i]; - data.format = typeName; - dataTypes.add(data); - } - } - } - //System.out.println("mime -> transfer types: " + dataTypes); - return dataTypes.toArray(new TransferData[dataTypes.size()]); - } - - private DropAction convertOperation(int operation) { - if (operation == DND.DROP_COPY) { - return DropAction.CopyAction; - } - if (operation == DND.DROP_MOVE) { - return DropAction.MoveAction; - } - if (operation == DND.DROP_LINK) { - return DropAction.LinkAction; - } - if (operation == DND.DROP_TARGET_MOVE) { - return DropAction.TargetMoveAction; - } - return DropAction.IgnoreAction; - } - - } - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/FileTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/FileTransfer.java deleted file mode 100644 index 21e615d272..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/FileTransfer.java +++ /dev/null @@ -1,145 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * Portion Copyright (c) 2009-2010 compeople AG (http://www.compeople.de). - * 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 - * Compeople AG - QtJambi/Qt based implementation for Windows/Mac OS X/Linux - *******************************************************************************/ -package org.eclipse.swt.dnd; - -/** - * The class <code>FileTransfer</code> provides a platform specific mechanism - * for converting a list of files represented as a java <code>String[]</code> to - * a platform specific representation of the data and vice versa. Each - * <code>String</code> in the array contains the absolute path for a single file - * or directory. - * - * <p> - * An example of a java <code>String[]</code> containing a list of files is - * shown below: - * </p> - * - * <code><pre> - * File file1 = new File("C:\temp\file1"); - * File file2 = new File("C:\temp\file2"); - * String[] fileData = new String[2]; - * fileData[0] = file1.getAbsolutePath(); - * fileData[1] = file2.getAbsolutePath(); - * </code></pre> - * - * @see Transfer - */ -public class FileTransfer extends ByteArrayTransfer { - /** - * - */ - private static final String SEPARATOR = "\n"; - private static final String URI_LIST = "text/uri-list"; //$NON-NLS-1$ - private static final int URI_LIST_ID = registerType(URI_LIST); - - private FileTransfer() { - } - - private static FileTransfer _instance = new FileTransfer(); - - /** - * Returns the singleton instance of the FileTransfer class. - * - * @return the singleton instance of the FileTransfer class - */ - public static FileTransfer getInstance() { - return _instance; - } - - /** - * This implementation of <code>javaToNative</code> converts a list of file - * names represented by a java <code>String[]</code> to a platform specific - * representation. Each <code>String</code> in the array contains the - * absolute path for a single file or directory. - * - * @param object - * a java <code>String[]</code> containing the file names to be - * converted - * @param transferData - * an empty <code>TransferData</code> object that will be filled - * in on return with the platform specific format of the data - * - * @see Transfer#nativeToJava - */ - @Override - public void javaToNative(Object object, TransferData transferData) { - if (!checkStringArray(object) || !isSupportedType(transferData)) { - DND.error(DND.ERROR_INVALID_DATA); - } - boolean first = true; - StringBuilder sb = new StringBuilder(); - String[] files = (String[]) object; - for (String file : files) { - if (file == null || file.length() == 0) { - continue; - } - System.out.println("dnd file: " + file); - if (first) { - first = false; - } else { - sb.append(SEPARATOR); - } - sb.append("file://"); - sb.append(file); - } - transferData.data = sb.toString().getBytes(); - transferData.format = URI_LIST; - } - - /** - * This implementation of <code>nativeToJava</code> converts a platform - * specific representation of a list of file names to a java - * <code>String[]</code>. Each String in the array contains the absolute - * path for a single file or directory. - * - * @param transferData - * the platform specific representation of the data to be - * converted - * @return a java <code>String[]</code> containing a list of file names if - * the conversion was successful; otherwise null - * - * @see Transfer#javaToNative - */ - @Override - public Object nativeToJava(TransferData transferData) { - byte[] data = (byte[]) super.nativeToJava(transferData); - if (data == null) { - return null; - } - String[] files = new String(data).split(SEPARATOR); - return files; - } - - @Override - protected int[] getTypeIds() { - return new int[] { URI_LIST_ID }; - } - - @Override - protected String[] getTypeNames() { - return new String[] { URI_LIST }; - } - - boolean checkStringArray(Object object) { - if (object == null || !(object instanceof String[]) || ((String[]) object).length == 0) { - return false; - } - String[] strings = (String[]) object; - for (int i = 0; i < strings.length; i++) { - if (strings[i] == null || strings[i].length() == 0) { - return false; - } - } - return true; - } -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/HTMLTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/HTMLTransfer.java deleted file mode 100644 index afdec0185a..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/HTMLTransfer.java +++ /dev/null @@ -1,76 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 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.swt.dnd; - -/** - * The class <code>HTMLTransfer</code> provides a platform specific mechanism - * for converting text in HTML format represented as a java <code>String</code> - * to a platform specific representation of the data and vice versa. - * - * <p>An example of a java <code>String</code> containing HTML text is shown - * below:</p> - * - * <code><pre> - * String htmlData = "<p>This is a paragraph of text.</p>"; - * </code></pre> - * - * @see Transfer - */ -public class HTMLTransfer extends ByteArrayTransfer { - - private static HTMLTransfer _instance = new HTMLTransfer(); - private static final String TYPENAME1 = "text/html\0"; - private static final int TYPEID1 = registerType(TYPENAME1); - private static final String TYPENAME2 = "TEXT/HTML\0"; - private static final int TYPEID2 = registerType(TYPENAME2); - -private HTMLTransfer() { -} -/** - * Returns the singleton instance of the HTMLTransfer class. - * - * @return the singleton instance of the HTMLTransfer class - */ -public static HTMLTransfer getInstance () { - return _instance; -} -/** - * This implementation of <code>javaToNative</code> converts HTML-formatted text - * represented by a java <code>String</code> to a platform specific representation. - * - * @param object a java <code>String</code> containing HTML text - * @param transferData an empty <code>TransferData</code> object that will - * be filled in on return with the platform specific format of the data - * - * @see Transfer#nativeToJava - */ -public void javaToNative (Object object, TransferData transferData){ -} -/** - * This implementation of <code>nativeToJava</code> converts a platform specific - * representation of HTML text to a java <code>String</code>. - * - * @param transferData the platform specific representation of the data to be converted - * @return a java <code>String</code> containing HTML text if the conversion was successful; - * otherwise null - * - * @see Transfer#javaToNative - */ -public Object nativeToJava(TransferData transferData){ - return null; -} -protected String[] getTypeNames(){ - return new String[]{TYPENAME1, TYPENAME2}; -} -protected int[] getTypeIds(){ - return new int[]{TYPEID1, TYPEID2}; -} -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/ImageTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/ImageTransfer.java deleted file mode 100644 index 8e5c3a4d28..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/ImageTransfer.java +++ /dev/null @@ -1,76 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2008 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.swt.dnd; - -/** - * The class <code>ImageTransfer</code> provides a platform specific mechanism - * for converting an Image represented as a java <code>ImageData</code> to a - * platform specific representation of the data and vice versa. - * - * <p>An example of a java <code>ImageData</code> is shown below:</p> - * - * <code><pre> - * Image image = new Image(display, "C:\temp\img1.gif"); - * ImageData imgData = image.getImageData(); - * </code></pre> - * - * @see Transfer - * - * @since 3.4 - */ -public class ImageTransfer extends ByteArrayTransfer { - -private ImageTransfer() {} - -/** - * Returns the singleton instance of the ImageTransfer class. - * - * @return the singleton instance of the ImageTransfer class - */ -public static ImageTransfer getInstance () { - return null; -} - -/** - * This implementation of <code>javaToNative</code> converts an ImageData object represented - * by java <code>ImageData</code> to a platform specific representation. - * - * @param object a java <code>ImageData</code> containing the ImageData to be converted - * @param transferData an empty <code>TransferData</code> object that will - * be filled in on return with the platform specific format of the data - * - * @see Transfer#nativeToJava - */ -public void javaToNative(Object object, TransferData transferData) { -} - -/** - * This implementation of <code>nativeToJava</code> converts a platform specific - * representation of an image to java <code>ImageData</code>. - * - * @param transferData the platform specific representation of the data to be converted - * @return a java <code>ImageData</code> of the image if the conversion was successful; - * otherwise null - * - * @see Transfer#javaToNative - */ -public Object nativeToJava(TransferData transferData) { - return null; -} - -protected int[] getTypeIds(){ - return null; -} - -protected String[] getTypeNames(){ - return null; -} -}
\ No newline at end of file diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/RTFTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/RTFTransfer.java deleted file mode 100644 index 11085904b3..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/RTFTransfer.java +++ /dev/null @@ -1,79 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 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.swt.dnd; - - -/** - * The class <code>RTFTransfer</code> provides a platform specific mechanism - * for converting text in RTF format represented as a java <code>String</code> - * to a platform specific representation of the data and vice versa. - * - * <p>An example of a java <code>String</code> containing RTF text is shown - * below:</p> - * - * <code><pre> - * String rtfData = "{\\rtf1{\\colortbl;\\red255\\green0\\blue0;}\\uc1\\b\\i Hello World}"; - * </code></pre> - * - * @see Transfer - */ -public class RTFTransfer extends ByteArrayTransfer { - - private static RTFTransfer _instance = new RTFTransfer(); - private static final String TYPENAME1 = "text/rtf\0"; - private static final int TYPEID1 = registerType(TYPENAME1); - private static final String TYPENAME2 = "TEXT/RTF\0"; - private static final int TYPEID2 = registerType(TYPENAME2); - private static final String TYPENAME3 = "application/rtf\0"; - private static final int TYPEID3 = registerType(TYPENAME3); - -private RTFTransfer() { -} -/** - * Returns the singleton instance of the RTFTransfer class. - * - * @return the singleton instance of the RTFTransfer class - */ -public static RTFTransfer getInstance () { - return _instance; -} -/** - * This implementation of <code>javaToNative</code> converts RTF-formatted text - * represented by a java <code>String</code> to a platform specific representation. - * - * @param object a java <code>String</code> containing RTF text - * @param transferData an empty <code>TransferData</code> object that will - * be filled in on return with the platform specific format of the data - * - * @see Transfer#nativeToJava - */ -public void javaToNative (Object object, TransferData transferData){ -} -/** - * This implementation of <code>nativeToJava</code> converts a platform specific - * representation of RTF text to a java <code>String</code>. - * - * @param transferData the platform specific representation of the data to be converted - * @return a java <code>String</code> containing RTF text if the conversion was successful; - * otherwise null - * - * @see Transfer#javaToNative - */ -public Object nativeToJava(TransferData transferData){ - return null; -} -protected String[] getTypeNames(){ - return new String[]{TYPENAME1, TYPENAME2, TYPENAME3}; -} -protected int[] getTypeIds(){ - return new int[]{TYPEID1, TYPEID2, TYPEID3}; -} -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TableDragSourceEffect.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TableDragSourceEffect.java deleted file mode 100644 index b7dbda53be..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TableDragSourceEffect.java +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2008 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.swt.dnd; - -import org.eclipse.swt.widgets.*; - -/** - * This class provides default implementations to display a source image - * when a drag is initiated from a <code>Table</code>. - * - * <p>Classes that wish to provide their own source image for a <code>Table</code> can - * extend the <code>TableDragSourceEffect</code> class, override the - * <code>TableDragSourceEffect.dragStart</code> method and set the field - * <code>DragSourceEvent.image</code> with their own image.</p> - * - * Subclasses that override any methods of this class must call the corresponding - * <code>super</code> method to get the default drag source effect implementation. - * - * @see DragSourceEffect - * @see DragSourceEvent - * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a> - * - * @since 3.3 - */ -public class TableDragSourceEffect extends DragSourceEffect { - /** - * Creates a new <code>TableDragSourceEffect</code> to handle drag effect - * from the specified <code>Table</code>. - * - * @param table the <code>Table</code> that the user clicks on to initiate the drag - */ - public TableDragSourceEffect(Table table) { - super(table); - } -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TableDropTargetEffect.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TableDropTargetEffect.java deleted file mode 100644 index 8818ec6a4b..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TableDropTargetEffect.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 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.swt.dnd; - -import org.eclipse.swt.widgets.*; - -/** - * This class provides a default drag under effect (eg. select, insert and scroll) - * when a drag occurs over a <code>Table</code>. - * - * <p>Classes that wish to provide their own drag under effect for a <code>Table</code> - * can extend the <code>TableDropTargetEffect</code> and override any applicable methods - * in <code>TableDropTargetEffect</code> to display their own drag under effect.</p> - * - * Subclasses that override any methods of this class must call the corresponding - * <code>super</code> method to get the default drag under effect implementation. - * - * <p>The feedback value is either one of the FEEDBACK constants defined in - * class <code>DND</code> which is applicable to instances of this class, - * or it must be built by <em>bitwise OR</em>'ing together - * (that is, using the <code>int</code> "|" operator) two or more - * of those <code>DND</code> effect constants. - * </p> - * <p> - * <dl> - * <dt><b>Feedback:</b></dt> - * <dd>FEEDBACK_SELECT, FEEDBACK_SCROLL</dd> - * </dl> - * </p> - * - * @see DropTargetAdapter - * @see DropTargetEvent - * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a> - * - * @since 3.3 - */ -public class TableDropTargetEffect extends DropTargetEffect { - /** - * Creates a new <code>TableDropTargetEffect</code> to handle the drag under effect on the specified - * <code>Table</code>. - * - * @param table the <code>Table</code> over which the user positions the cursor to drop the data - */ - public TableDropTargetEffect(Table table) { - super(table); - } -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TextTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TextTransfer.java deleted file mode 100644 index 0b83a9633b..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TextTransfer.java +++ /dev/null @@ -1,106 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * Portion Copyright (c) 2009-2010 compeople AG (http://www.compeople.de). - * 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 - * Compeople AG - QtJambi/Qt based implementation for Windows/Mac OS X/Linux - *******************************************************************************/ -package org.eclipse.swt.dnd; - -/** - * The class <code>TextTransfer</code> provides a platform specific mechanism - * for converting plain text represented as a java <code>String</code> to a - * platform specific representation of the data and vice versa. - * - * <p> - * An example of a java <code>String</code> containing plain text is shown - * below: - * </p> - * - * <code><pre> - * String textData = "Hello World"; - * </code></pre> - * - * @see Transfer - */ -public class TextTransfer extends ByteArrayTransfer { - private static final String TYPENAME = "text/plain"; //$NON-NLS-1$ - private static final int TYPEID = registerType(TYPENAME); - private static TextTransfer _instance = new TextTransfer(); - - private TextTransfer() { - } - - /** - * Returns the singleton instance of the TextTransfer class. - * - * @return the singleton instance of the TextTransfer class - */ - public static TextTransfer getInstance() { - return _instance; - } - - /** - * This implementation of <code>javaToNative</code> converts plain text - * represented by a java <code>String</code> to a platform specific - * representation. - * - * @param object - * a java <code>String</code> containing text - * @param transferData - * an empty <code>TransferData</code> object that will be filled - * in on return with the platform specific format of the data - * - * @see Transfer#nativeToJava - */ - @Override - public void javaToNative(Object object, TransferData transferData) { - if (!checkText(object) || !isSupportedType(transferData)) { - DND.error(DND.ERROR_INVALID_DATA); - return; - } - transferData.data = ((String) object).getBytes(); - transferData.format = TYPENAME; - transferData.type = TYPEID; - } - - private boolean checkText(Object object) { - return object != null && object instanceof String && ((String) object).length() > 0; - } - - /** - * This implementation of <code>nativeToJava</code> converts a platform - * specific representation of plain text to a java <code>String</code>. - * - * @param transferData - * the platform specific representation of the data to be - * converted - * @return a java <code>String</code> containing text if the conversion was - * successful; otherwise null - * - * @see Transfer#javaToNative - */ - @Override - public Object nativeToJava(TransferData transferData) { - byte[] data = (byte[]) super.nativeToJava(transferData); - if (data == null) { - return null; - } - return new String(data); - } - - @Override - protected String[] getTypeNames() { - return new String[] { TYPENAME }; - } - - @Override - protected int[] getTypeIds() { - return new int[] { TYPEID }; - } -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/Transfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/Transfer.java deleted file mode 100644 index 4ed963d9f0..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/Transfer.java +++ /dev/null @@ -1,163 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 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.swt.dnd; - -/** - * <code>Transfer</code> provides a mechanism for converting between a java - * representation of data and a platform specific representation of data and - * vice versa. It is used in data transfer operations such as drag and drop and - * clipboard copy/paste. - * - * <p> - * You should only need to become familiar with this class if you are - * implementing a Transfer subclass and you are unable to subclass the - * ByteArrayTransfer class. - * </p> - * - * @see ByteArrayTransfer - * @see <a href="http://www.eclipse.org/swt/snippets/#dnd">Drag and Drop - * snippets</a> - * @see <a href="http://www.eclipse.org/swt/examples.php">SWT Example: - * DNDExample</a> - * @see <a href="http://www.eclipse.org/swt/">Sample code and further - * information</a> - */ -public abstract class Transfer { - - /** - * Returns a list of the platform specific data types that can be converted - * using this transfer agent. - * - * <p> - * Only the data type fields of the <code>TransferData</code> objects are - * filled in. - * </p> - * - * @return a list of the data types that can be converted using this - * transfer agent - */ - abstract public TransferData[] getSupportedTypes(); - - /** - * Returns true if the <code>TransferData</code> data type can be converted - * using this transfer agent, or false otherwise (including if transferData - * is <code>null</code>). - * - * @param transferData - * a platform specific description of a data type; only the data - * type fields of the <code>TransferData</code> object need to be - * filled in - * - * @return true if the transferData data type can be converted using this - * transfer agent - */ - abstract public boolean isSupportedType(TransferData transferData); - - /** - * Returns the platform specific names of the data types that can be - * converted using this transfer agent. - * - * @return the platform specific names of the data types that can be - * converted using this transfer agent. - */ - abstract protected String[] getTypeNames(); - - /** - * Returns the platform specific ids of the data types that can be converted - * using this transfer agent. - * - * @return the platform specific ids of the data types that can be converted - * using this transfer agent - */ - abstract protected int[] getTypeIds(); - - /** - * Converts a java representation of data to a platform specific - * representation of the data. - * - * <p> - * On a successful conversion, the transferData.result field will be set as - * follows: - * <ul> - * <li>Windows: COM.S_OK - * <li>Motif: 1 - * <li>GTK: 1 - * <li>Photon: 1 - * </ul> - * </p> - * - * <p> - * If this transfer agent is unable to perform the conversion, the - * transferData.result field will be set to a failure value as follows: - * <ul> - * <li>Windows: COM.DV_E_TYMED or COM.E_FAIL - * <li>Motif: 0 - * <li>GTK: 0 - * <li>Photon: 0 - * </ul> - * </p> - * - * @param object - * a java representation of the data to be converted; the type of - * Object that is passed in is dependent on the - * <code>Transfer</code> subclass. - * - * @param transferData - * an empty TransferData object; this object will be filled in on - * return with the platform specific representation of the data - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_INVALID_DATA - if object does not contain data - * in a valid format or is <code>null</code></li> - * </ul> - */ - abstract protected void javaToNative(Object object, TransferData transferData); - - /** - * Converts a platform specific representation of data to a java - * representation. - * - * @param transferData - * the platform specific representation of the data to be - * converted - * - * @return a java representation of the converted data if the conversion was - * successful; otherwise null. If transferData is <code>null</code> - * then <code>null</code> is returned. The type of Object that is - * returned is dependent on the <code>Transfer</code> subclass. - */ - abstract protected Object nativeToJava(TransferData transferData); - - /** - * Registers a name for a data type and returns the associated unique - * identifier. - * - * <p> - * You may register the same type more than once, the same unique identifier - * will be returned if the type has been previously registered. - * </p> - * - * <p> - * Note: On windows, do <b>not</b> call this method with pre-defined - * Clipboard Format types such as CF_TEXT or CF_BITMAP because the - * pre-defined identifier will not be returned - * </p> - * - * @param formatName - * the name of a data type - * - * @return the unique identifier associated with this data type - */ - public static int registerType(String formatName) { - return formatName.hashCode(); - } -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TransferData.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TransferData.java deleted file mode 100644 index cd59afd06a..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TransferData.java +++ /dev/null @@ -1,87 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2009 IBM Corporation and others. - * Portion Copyright (c) 2009-2010 compeople AG (http://www.compeople.de). - * 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 - * Compeople AG - QtJambi/Qt based implementation for Windows/Mac OS X/Linux - *******************************************************************************/ -package org.eclipse.swt.dnd; - -/** - * The <code>TransferData</code> class is a platform specific data structure for - * describing the type and the contents of data being converted by a transfer - * agent. - * - * <p> - * As an application writer, you do not need to know the specifics of - * TransferData. TransferData instances are passed to a subclass of Transfer and - * the Transfer object manages the platform specific issues. You can ask a - * Transfer subclass if it can handle this data by calling - * Transfer.isSupportedType(transferData). - * </p> - * - * <p> - * You should only need to become familiar with the fields in this class if you - * are implementing a Transfer subclass and you are unable to subclass the - * ByteArrayTransfer class. - * </p> - * - * @see <a href="http://www.eclipse.org/swt/">Sample code and further - * information</a> - */ -public class TransferData { - /** - * The type is a unique identifier of a system format or user defined - * format. (Warning: This field is platform dependent) - * <p> - * <b>IMPORTANT:</b> This field is <em>not</em> part of the SWT public API. - * It is marked public only so that it can be shared within the packages - * provided by SWT. It is not available on all platforms and should never be - * accessed from application code. - * </p> - */ - public int type; - - // attributes specific to set/get - Object data; - String format; - - /** - * The result field contains the result of converting a java data type into - * a platform specific value. (Warning: This field is platform dependent) - * <p> - * <b>IMPORTANT:</b> This field is <em>not</em> part of the SWT public API. - * It is marked public only so that it can be shared within the packages - * provided by SWT. It is not available on all platforms and should never be - * accessed from application code. - * </p> - * <p> - * The value of result is 1 if the conversion was successful. The value of - * result is 0 if the conversion failed. - * </p> - */ - // int result; - - /* - * (non-Javadoc) - * - * @see java.lang.Object#toString() - */ - @Override - public String toString() { - StringBuilder sb = new StringBuilder("TransferData {type: ");//$NON-NLS-1$ - sb.append(type); - sb.append(", format: ");//$NON-NLS-1$ - sb.append(format); - sb.append(", data: ");//$NON-NLS-1$ - sb.append(data); - sb.append("}"); //$NON-NLS-1$ - return sb.toString(); - } - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TreeDragSourceEffect.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TreeDragSourceEffect.java deleted file mode 100644 index 7a66bebb22..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TreeDragSourceEffect.java +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2008 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.swt.dnd; - -import org.eclipse.swt.widgets.*; - -/** - * This class provides default implementations to display a source image - * when a drag is initiated from a <code>Tree</code>. - * - * <p>Classes that wish to provide their own source image for a <code>Tree</code> can - * extend <code>TreeDragSourceEffect</code> class and override the <code>TreeDragSourceEffect.dragStart</code> - * method and set the field <code>DragSourceEvent.image</code> with their own image.</p> - * - * Subclasses that override any methods of this class must call the corresponding - * <code>super</code> method to get the default drag under effect implementation. - * - * @see DragSourceEffect - * @see DragSourceEvent - * @see <a href="http://www.eclipse.org/swt/">Sample code and further information</a> - * - * @since 3.3 - */ -public class TreeDragSourceEffect extends DragSourceEffect { - /** - * Creates a new <code>TreeDragSourceEffect</code> to handle drag effect - * from the specified <code>Tree</code>. - * - * @param tree the <code>Tree</code> that the user clicks on to initiate the drag - */ - public TreeDragSourceEffect(Tree tree) { - super(tree); - } -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TreeDropTargetEffect.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TreeDropTargetEffect.java deleted file mode 100644 index d5eaaeb31a..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/TreeDropTargetEffect.java +++ /dev/null @@ -1,129 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * Portion Copyright (c) 2009-2010 compeople AG (http://www.compeople.de). - * 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 - * Compeople AG - QtJambi/Qt based implementation for Windows/Mac OS X/Linux - *******************************************************************************/ -package org.eclipse.swt.dnd; - -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.widgets.Tree; -import org.eclipse.swt.widgets.TreeItem; -import org.eclipse.swt.widgets.Widget; - -/** - * This class provides a default drag under effect (eg. select, insert, scroll - * and expand) when a drag occurs over a <code>Tree</code>. - * - * <p> - * Classes that wish to provide their own drag under effect for a - * <code>Tree</code> can extend the <code>TreeDropTargetEffect</code> class and - * override any applicable methods in <code>TreeDropTargetEffect</code> to - * display their own drag under effect. - * </p> - * - * Subclasses that override any methods of this class must call the - * corresponding <code>super</code> method to get the default drag under effect - * implementation. - * - * <p> - * The feedback value is either one of the FEEDBACK constants defined in class - * <code>DND</code> which is applicable to instances of this class, or it must - * be built by <em>bitwise OR</em>'ing together (that is, using the - * <code>int</code> "|" operator) two or more of those <code>DND</code> effect - * constants. - * </p> - * <p> - * <dl> - * <dt><b>Feedback:</b></dt> - * <dd>FEEDBACK_SELECT, FEEDBACK_INSERT_BEFORE, FEEDBACK_INSERT_AFTER, - * FEEDBACK_EXPAND, FEEDBACK_SCROLL</dd> - * </dl> - * </p> - * <p> - * Note: Only one of the styles FEEDBACK_SELECT, FEEDBACK_INSERT_BEFORE or - * FEEDBACK_INSERT_AFTER may be specified. - * </p> - * - * @see DropTargetAdapter - * @see DropTargetEvent - * @see <a href="http://www.eclipse.org/swt/">Sample code and further - * information</a> - * - * @since 3.3 - */ -public class TreeDropTargetEffect extends DropTargetEffect { - /** - * Creates a new <code>TreeDropTargetEffect</code> to handle the drag under - * effect on the specified <code>Tree</code>. - * - * @param tree - * the <code>Tree</code> over which the user positions the cursor - * to drop the data - */ - public TreeDropTargetEffect(Tree tree) { - super(tree); - } - - @Override - public void dragEnter(DropTargetEvent event) { - System.out.println("TreeDropTargetEffect.dragEnter: " + event); - super.dragEnter(event); - } - - @Override - public void dragLeave(DropTargetEvent event) { - System.out.println("TreeDropTargetEffect.dragLeave: " + event); - super.dragLeave(event); - } - - @Override - public void dragOver(DropTargetEvent event) { - System.out.println("TreeDropTargetEffect.dragOver: " + event); - Tree tree = (Tree) control; - //int effect = checkEffect(event.feedback); - - TreeItem item = tree.getItem(tree.toControl(new Point(event.x, event.y))); - - tree.highlightItem(item); - } - - @Override - public void drop(DropTargetEvent event) { - System.out.println("TreeDropTargetEffect.drop: " + event); - super.drop(event); - } - - @Override - public void dropAccept(DropTargetEvent event) { - System.out.println("TreeDropTargetEffect.dropAccept: " + event); - super.dropAccept(event); - } - - @Override - public Widget getItem(int x, int y) { - //System.out.println("TreeDropTargetEffect.getItem: " + x + " " + y); - Tree tree = (Tree) control; - TreeItem item = tree.getItem(tree.toControl(new Point(x, y))); - //System.out.println("item: " + item); - return item; - } - - private int checkEffect(int effect) { - // Some effects are mutually exclusive. Make sure that only one of the mutually exclusive effects has been specified. - if ((effect & DND.FEEDBACK_SELECT) != 0) { - effect = effect & ~DND.FEEDBACK_INSERT_AFTER & ~DND.FEEDBACK_INSERT_BEFORE; - } - if ((effect & DND.FEEDBACK_INSERT_BEFORE) != 0) { - effect = effect & ~DND.FEEDBACK_INSERT_AFTER; - } - return effect; - } - -} diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/URLTransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/URLTransfer.java deleted file mode 100644 index 589d3ec7c1..0000000000 --- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/qt/org/eclipse/swt/dnd/URLTransfer.java +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************************* - * Copyright (c) 20007 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.swt.dnd; - -/** - * The class <code>URLTransfer</code> provides a platform specific mechanism - * for converting text in URL format represented as a java <code>String</code> - * to a platform specific representation of the data and vice versa. The string - * must contain a fully specified url. - * - * <p>An example of a java <code>String</code> containing a URL is shown below:</p> - * - * <code><pre> - * String url = "http://www.eclipse.org"; - * </code></pre> - * - * @see Transfer - * @since 3.4 - */ -public class URLTransfer extends ByteArrayTransfer { - -private URLTransfer() {} - -/** - * Returns the singleton instance of the URLTransfer class. - * - * @return the singleton instance of the URLTransfer class - */ -public static URLTransfer getInstance () { - return null; -} - -/** - * This implementation of <code>javaToNative</code> converts a URL - * represented by a java <code>String</code> to a platform specific representation. - * - * @param object a java <code>String</code> containing a URL - * @param transferData an empty <code>TransferData</code> object that will - * be filled in on return with the platform specific format of the data - * - * @see Transfer#nativeToJava - */ -public void javaToNative (Object object, TransferData transferData){ -} - -/** - * This implementation of <code>nativeToJava</code> converts a platform - * specific representation of a URL to a java <code>String</code>. - * - * @param transferData the platform specific representation of the data to be converted - * @return a java <code>String</code> containing a URL if the conversion was successful; - * otherwise null - * - * @see Transfer#javaToNative - */ -public Object nativeToJava(TransferData transferData){ - return null; -} - -protected int[] getTypeIds(){ - return null; -} - -protected String[] getTypeNames(){ - return null; -} -} |