org.gudy.azureus2.ui.swt
Class URLTransfer
java.lang.Object
  
org.eclipse.swt.dnd.Transfer
      
org.eclipse.swt.dnd.ByteArrayTransfer
          
org.gudy.azureus2.ui.swt.URLTransfer
public class URLTransfer
- extends org.eclipse.swt.dnd.ByteArrayTransfer
 
URL Transfer type for Drag and Drop of URLs
 Windows IDs are already functional.
 
 Please use Win32TransferTypes to determine the IDs for other OSes!
- Author:
 
  - Rene Leonhardt, TuxPaper (require incoming string types have an URL prefix), TuxPaper (UTF-8, UTF-16, BOM stuff)
 
 TuxPaper's Notes:
 This class is flakey.  It's better to use HTMLTransfer, and then parse
 the URL from the HTML.  However, IE drag and drops do not support 
 HTMLTransfer, so this class must stay
 
 Windows
 ---
 TypeIDs seem to be assigned differently on different platform versions 
 (or maybe even different installations!).   Here's some examples
 49314: Moz/IE 0x01 4-0x00 0x80 lots-of-0x00 "[D]URL" lots-more-0x00
 49315: Moz/IE Same as 49315, except unicode
 49313: Moz/IE URL in .url format  "[InternetShortcut]\nURL=%1"
 49324: Moz/IE URL in text format
 49395: Moz Same as 49324, except unicode
 49319: Moz Dragged HTML Fragment with position information
 49398: Moz Dragged HTML Fragment (NO position information, just HTML), unicode
 49396: Moz HTML.  Unknown.
 
 There's probably a link to the ID and they type name in the registry, or
 via a Windows API call.  We don't want to do that, and fortunately, 
 SWT doesn't seem to pay attention to getTypeIds() on Windows, so we check
 every typeid we get to see if we can parse an URL from it.
 
 Also, dragging from the IE URL bar hangs SWT (sometimes for a very long 
 time).  Fortunately, most people willdrag the URL from the actual content
 window.
 
 Dragging an IE bookmark is actually dragging the .url file, and should be
 handled by the FileTranfer (and then opening it and extracting the URL).
 Moz Bookmarks are processed as HTML.
 
 Linux
 ---
 For Linux, this class isn't required.  
 HTMLTransfer will take care of Gecko and Konquerer.
 
 Opera
 ---
 As of 8.5, Opera still doesn't allow dragging outside of itself (at least on
 windows)
 
- See Also:
 org.gudy.azureus2.ui.swt.test.Win32TransferTypes
 
 
| 
Method Summary | 
 URLTransfer.URLType | 
bytebufferToJava(byte[] buffer)
 
            | 
static URLTransfer | 
getInstance()
 
            | 
protected  int[] | 
getTypeIds()
 
            | 
protected  java.lang.String[] | 
getTypeNames()
 
            | 
 boolean | 
isSupportedType(org.eclipse.swt.dnd.TransferData transferData)
 
            | 
 void | 
javaToNative(java.lang.Object object,
             org.eclipse.swt.dnd.TransferData transferData)
 
            | 
static void | 
main(java.lang.String[] args)
 
          Test for varioud UTF Strings
 BOM information from http://www.unicode.org/faq/utf_bom.html | 
 java.lang.Object | 
nativeToJava(org.eclipse.swt.dnd.TransferData transferData)
 
            | 
static org.eclipse.swt.dnd.TransferData | 
pickBestType(org.eclipse.swt.dnd.TransferData[] dataTypes,
             org.eclipse.swt.dnd.TransferData def)
 
          Sometimes, CF_Text will be in currentDataType even though CF_UNICODETEXT 
 is present. | 
 
| Methods inherited from class org.eclipse.swt.dnd.ByteArrayTransfer | 
getSupportedTypes | 
 
| Methods inherited from class org.eclipse.swt.dnd.Transfer | 
registerType, validate | 
 
| Methods inherited from class java.lang.Object | 
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
 
URLTransfer
public URLTransfer()
getInstance
public static URLTransfer getInstance()
 
javaToNative
public void javaToNative(java.lang.Object object,
                         org.eclipse.swt.dnd.TransferData transferData)
- Overrides:
 javaToNative in class org.eclipse.swt.dnd.ByteArrayTransfer
 
 
nativeToJava
public java.lang.Object nativeToJava(org.eclipse.swt.dnd.TransferData transferData)
- Overrides:
 nativeToJava in class org.eclipse.swt.dnd.ByteArrayTransfer
 
 
bytebufferToJava
public URLTransfer.URLType bytebufferToJava(byte[] buffer)
 
getTypeNames
protected java.lang.String[] getTypeNames()
- Specified by:
 getTypeNames in class org.eclipse.swt.dnd.Transfer
 
 
getTypeIds
protected int[] getTypeIds()
- Specified by:
 getTypeIds in class org.eclipse.swt.dnd.Transfer
 
 
isSupportedType
public boolean isSupportedType(org.eclipse.swt.dnd.TransferData transferData)
- Overrides:
 isSupportedType in class org.eclipse.swt.dnd.ByteArrayTransfer
 
- Parameters:
 transferData - 
- Returns:
 - See Also:
 Transfer.isSupportedType(org.eclipse.swt.dnd.TransferData)
 
pickBestType
public static org.eclipse.swt.dnd.TransferData pickBestType(org.eclipse.swt.dnd.TransferData[] dataTypes,
                                                            org.eclipse.swt.dnd.TransferData def)
- Sometimes, CF_Text will be in currentDataType even though CF_UNICODETEXT 
 is present.  This is a workaround until its fixed properly.
 
 Place it in dropAccept
 
 
if (event.data instanceof URLTransfer.URLType)
        event.currentDataType = URLTransfer.pickBestType(event.dataTypes, event.currentDataType);
 
- Parameters:
 dataTypes - def - 
- Returns:
 
 
 
main
public static void main(java.lang.String[] args)
- Test for varioud UTF Strings
 BOM information from http://www.unicode.org/faq/utf_bom.html
- Parameters:
 args -