/** * 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 ) { if( !checkURL( object ) || !isSupportedType( transferData ) ) { DND.error( DND.ERROR_INVALID_DATA ); } transferData.result = 1; try { transferData.data = new URL( ( String )object ); } catch( MalformedURLException e ) { transferData.result = 0; } }
/** * Determine whether the drop target data is valid. On some platforms this cannot be detected, * in which which case we return true. * @param event the drop target event * @return <code>true</code> if data is valid, (or can not be determined), <code>false</code> otherwise. */ protected boolean dropTargetDataIsValid(DropTargetEvent event) { if (Util.isWindows()) return URLTransfer.getInstance().nativeToJava(event.currentDataType) != null; return true; }
/** * Determine whether the drop target is valid. Subclasses may override. * @param event the drop target event * @return <code>true</code> if drop should proceed, <code>false</code> if it should not. */ protected boolean dropTargetIsValid(DropTargetEvent event) { if (URLTransfer.getInstance().isSupportedType(event.currentDataType) && dropTargetDataIsValid(event)) return true; if (!convertFileToURL) return false; if (FileTransfer.getInstance().isSupportedType(event.currentDataType)) { String[] names = (String[]) FileTransfer.getInstance().nativeToJava(event.currentDataType); return names != null && names.length == 1; } return false; }
@Override public boolean isSupportedType(TransferData aTransferType) { return SELECTION_TRANSFER.isSupportedType(aTransferType); }
@Override protected boolean validate(Object object) { return checkURL(object); } }
private String getURLText(DropTargetEvent event) { if (URLTransfer.getInstance().isSupportedType(event.currentDataType)) return (String) URLTransfer.getInstance().nativeToJava(event.currentDataType); if (convertFileToURL && FileTransfer.getInstance().isSupportedType(event.currentDataType)) { String[] names = (String[]) FileTransfer.getInstance().nativeToJava(event.currentDataType); if (names != null && names.length == 1) { URI potentialLocation; try { potentialLocation = URIUtil.fromString(names[0]); return URIUtil.toUnencodedString(RepositoryHelper.localRepoURIHelper(potentialLocation)); } catch (URISyntaxException e) { return names[0]; } } } return null; }
if (!isSupportedType(transferData) || transferData.pIDataObject == 0) return null; IDataObject data = new IDataObject(transferData.pIDataObject); data.AddRef(); FORMATETC formatetc = transferData.formatetc; stgmedium.tymed = COM.TYMED_HGLOBAL; transferData.result = getData(data, formatetc, stgmedium); data.Release(); if (transferData.result != COM.S_OK) return null;
@Override public Transfer[] getSupportedTransferTypes () { return new Transfer[] { ItemTransfer.getInstance (), TextTransfer.getInstance (), URLTransfer.getInstance () }; }
@Override public Object nativeToJava(TransferData transferData) { Object result = urlTransfer.nativeToJava(transferData); if (DISABLED || result != null) { return result; } if (DEBUG) System.out.println("nativeToJava called"); try { if (isSupportedType(transferData)) { byte [] buffer = (byte[]) super.nativeToJava(transferData); return bytebufferToJava(buffer); } } catch (Exception e) { Debug.out(e); } return null; }
@Override public boolean setDragData ( final DragSourceEvent event, final IStructuredSelection selection ) { logger.debug ( "setDragData ( event: {}, selection: {}", event, selection ); final Collection<Item> items = ItemSelectionHelper.getSelection ( selection ); if ( items.isEmpty () ) { logger.info ( "Empty item set for setDragData" ); return false; } if ( ItemTransfer.getInstance ().isSupportedType ( event.dataType ) ) { event.data = items.toArray ( new Item[items.size ()] ); return true; } else if ( TextTransfer.getInstance ().isSupportedType ( event.dataType ) ) { event.data = getItemUriData ( items ); return true; } else if ( URLTransfer.getInstance ().isSupportedType ( event.dataType ) ) { event.data = getItemUriData ( items ); return true; } logger.debug ( "No possible transfer" ); return false; }
/** * 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 ) { if( !isSupportedType( transferData ) || transferData.data == null ) return null; if( transferData.result != 1 ) return null; return ( ( URL )transferData.data ).toString(); }
@Override protected boolean validate(Object object) { return checkURL(object); } }
protected Text createLocationField(Composite parent) { // Location: [] Label urlLabel = new Label(parent, SWT.NONE); urlLabel.setText(ProvUIMessages.AddRepositoryDialog_LocationLabel); url = new Text(parent, SWT.BORDER); GridData data = new GridData(GridData.FILL_HORIZONTAL); data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.ENTRY_FIELD_WIDTH); url.setLayoutData(data); DropTarget target = new DropTarget(url, DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK); target.setTransfer(new Transfer[] {URLTransfer.getInstance(), FileTransfer.getInstance()}); target.addDropListener(new TextURLDropAdapter(url, true)); url.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { validateRepositoryURL(false); } }); initialURL = getInitialLocationText(); url.setText(initialURL); url.setSelection(0, url.getText().length()); return url; }
/** * 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 */ @Override public void javaToNative (Object object, TransferData transferData){ transferData.result = 0; if (!checkURL(object) || !isSupportedType(transferData)) { DND.error(DND.ERROR_INVALID_DATA); } String string = (String)object; int charCount = string.length(); char [] chars = new char[charCount +1]; string.getChars(0, charCount , chars, 0); int byteCount = chars.length*2; long /*int*/ pValue = OS.g_malloc(byteCount); if (pValue == 0) return; OS.memmove(pValue, chars, byteCount); transferData.length = byteCount; transferData.format = 8; transferData.pValue = pValue; transferData.result = 1; }
@Override public void dragSetData ( final DragSourceEvent event ) { try { final IStructuredSelection selection = (IStructuredSelection)LocalSelectionTransfer.getTransfer ().getSelection (); if ( ItemTransfer.getInstance ().isSupportedType ( event.dataType ) ) { final List<Item> items = new ArrayList<Item> (); for ( final Iterator<?> i = selection.iterator (); i.hasNext (); ) { final ListEntry entry = (ListEntry)i.next (); items.add ( entry.getItem () ); } event.data = items.toArray ( new Item[items.size ()] ); } else if ( TextTransfer.getInstance ().isSupportedType ( event.dataType ) ) { setItemUriData ( event, selection ); } else if ( URLTransfer.getInstance ().isSupportedType ( event.dataType ) ) { setItemUriData ( event, selection ); } } catch ( final Exception e ) { event.doit = false; } }
/** * 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 */ @Override public Object nativeToJava(TransferData transferData){ if (!isSupportedType(transferData) || transferData.pValue == 0) return null; /* Ensure byteCount is a multiple of 2 bytes */ int size = (transferData.format * transferData.length / 8) / 2 * 2; if (size <= 0) return null; char[] chars = new char [size/2]; OS.memmove (chars, transferData.pValue, size); String string = new String (chars); int end = string.indexOf('\0'); return (end == -1) ? string : string.substring(0, end); }
@Override protected boolean validate(Object object) { return checkURL(object); } }
private void addDragSupport () { this.viewer.addDragSupport ( DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK, new Transfer[] { ItemTransfer.getInstance (), URLTransfer.getInstance (), TextTransfer.getInstance () }, new RealtimeListDragSourceListener ( this.viewer ) ); }
/** * 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 */ @Override public void javaToNative (Object object, TransferData transferData){ transferData.result = 0; if (!checkURL(object) || !isSupportedType(transferData)) { DND.error(DND.ERROR_INVALID_DATA); } String string = (String)object; int charCount = string.length(); char [] chars = new char[charCount +1]; string.getChars(0, charCount , chars, 0); int byteCount = chars.length*2; int /*long*/ pValue = OS.g_malloc(byteCount); if (pValue == 0) return; OS.memmove(pValue, chars, byteCount); transferData.length = byteCount; transferData.format = 8; transferData.pValue = pValue; transferData.result = 1; }
@Override public void dragSetData(org.eclipse.swt.dnd.DragSourceEvent event) { dragConsole.append(">>dragSetData\n"); printEvent(event); if (TextTransfer.getInstance().isSupportedType(event.dataType)) { event.data = dragDataText; } if (RTFTransfer.getInstance().isSupportedType(event.dataType)) { event.data = dragDataRTF; } if (HTMLTransfer.getInstance().isSupportedType(event.dataType)) { event.data = dragDataHTML; } if (URLTransfer.getInstance().isSupportedType(event.dataType)) { event.data = dragDataURL; } if (FileTransfer.getInstance().isSupportedType(event.dataType)) { event.data = dragDataFiles; } } @Override