# HG changeset patch # User Jacob Carlborg # Date 1230733055 -3600 # Node ID d0d0b721dbcca7447cacaa999f3d8a2119d13dfe # Parent 2d6116ea306ea8af96140af8cf3f2f8c09803a65 Ported dwt.dnd.URLTransfer diff -r 2d6116ea306e -r d0d0b721dbcc dwt/dnd/URLTransfer.d --- a/dwt/dnd/URLTransfer.d Wed Dec 31 15:09:06 2008 +0100 +++ b/dwt/dnd/URLTransfer.d Wed Dec 31 15:17:35 2008 +0100 @@ -1,38 +1,1 @@ -/******************************************************************************* * 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 *******************************************************************************/ module dwt.dnd; import dwt.internal.cocoa.NSString; import dwt.internal.cocoa.NSURL; import dwt.internal.cocoa.OS.URLTransfer; /** - -import dwt.dwthelper.utils; - * The class URLTransfer provides a platform specific mechanism - * for converting text in URL format represented as a java String - * to a platform specific representation of the data and vice versa. The string - * must contain a fully specified url. - * - *

An example of a java String containing a URL is shown below:

- * - *
- *     String url = "http://www.eclipse.org";
- * 
- * - * @see Transfer - */ public class URLTransfer extends ByteArrayTransfer { static URLTransfer _instance = new URLTransfer(); static final String URL = OS.NSURLPboardType.getString(); static final int URL_ID = registerType(URL); private URLTransfer() {} /** - * Returns the singleton instance of the URLTransfer class. - * - * @return the singleton instance of the URLTransfer class - */ public static URLTransfer getInstance () { return _instance; } /** - * This implementation of javaToNative converts a URL - * represented by a java String to a platform specific representation. - * - * @param object a java String containing a URL - * @param transferData an empty TransferData 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); } String url = (String)object; NSString nsString = NSString.stringWith(url); NSString escapedString = nsString.stringByAddingPercentEscapesUsingEncoding(OS.NSUTF8StringEncoding); transferData.data = NSURL.URLWithString(escapedString); } /** - * This implementation of nativeToJava converts a platform - * specific representation of a URL to a java String. - * - * @param transferData the platform specific representation of the data to be converted - * @return a java String containing a URL if the conversion was successful; - * otherwise null - * - * @see Transfer#javaToNative - */ public Object nativeToJava(TransferData transferData){ if (!isSupportedType(transferData) || transferData.data is null) return null; NSURL nsUrl = (NSURL) transferData.data; NSString nsString = nsUrl.absoluteString(); return nsString.getString(); } protected int[] getTypeIds(){ return new int[] {URL_ID}; } protected String[] getTypeNames(){ return new String[] {URL}; } bool checkURL(Object object) { return object !is null && (object instanceof String) && ((String)object).length() > 0; } protected bool validate(Object object) { return checkURL(object); } } +/******************************************************************************* * 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 * * Port to the D programming language: * Jacob Carlborg *******************************************************************************/ module dwt.dnd.URLTransfer; import dwt.dwthelper.utils; import dwt.internal.cocoa.NSString; import dwt.internal.cocoa.NSURL; import dwt.internal.cocoa.OS; import dwt.dnd.ByteArrayTransfer; import dwt.dnd.DND; import dwt.dnd.TransferData; /** * The class URLTransfer provides a platform specific mechanism * for converting text in URL format represented as a java String * to a platform specific representation of the data and vice versa. The string * must contain a fully specified url. * *

An example of a java String containing a URL is shown below:

* *
 *     String url = "http://www.eclipse.org";
 * 
* * @see Transfer */ public class URLTransfer : ByteArrayTransfer { static URLTransfer _instance; static final String URL; static final int URL_ID; static this () { _instance = new URLTransfer(); URL = OS.NSURLPboardType.getString(); URL_ID = registerType(URL); } private this() {} /** * Returns the singleton instance of the URLTransfer class. * * @return the singleton instance of the URLTransfer class */ public static URLTransfer getInstance () { return _instance; } /** * This implementation of javaToNative converts a URL * represented by a java String to a platform specific representation. * * @param object a java String containing a URL * @param transferData an empty TransferData 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); } String url = (cast(ArrayWrapperString)object).array; NSString nsString = NSString.stringWith(url); NSString escapedString = nsString.stringByAddingPercentEscapesUsingEncoding(OS.NSUTF8StringEncoding); transferData.data = NSURL.URLWithString(escapedString); } /** * This implementation of nativeToJava converts a platform * specific representation of a URL to a java String. * * @param transferData the platform specific representation of the data to be converted * @return a java String containing a URL if the conversion was successful; * otherwise null * * @see Transfer#javaToNative */ public Object nativeToJava(TransferData transferData){ if (!isSupportedType(transferData) || transferData.data is null) return null; NSURL nsUrl = cast(NSURL) transferData.data; NSString nsString = nsUrl.absoluteString(); return new ArrayWrapperString(nsString.getString()); } protected int[] getTypeIds(){ return [URL_ID]; } protected String[] getTypeNames(){ return [URL]; } bool checkURL(Object object) { return object !is null && (cast(ArrayWrapperString) object) && (cast(ArrayWrapperString) object).array.length() > 0; } protected bool validate(Object object) { return checkURL(object); } } \ No newline at end of file diff -r 2d6116ea306e -r d0d0b721dbcc dwt/internal/cocoa/OS.d --- a/dwt/internal/cocoa/OS.d Wed Dec 31 15:09:06 2008 +0100 +++ b/dwt/internal/cocoa/OS.d Wed Dec 31 15:17:35 2008 +0100 @@ -4047,7 +4047,7 @@ public static const int NSUTF32BigEndianStringEncoding = -1744830208; public static const int NSUTF32LittleEndianStringEncoding = -1677721344; public static const int NSUTF32StringEncoding = -1946156800; -public static const int NSUTF8StringEncoding = 4; +alias NSStringEncoding.NSUTF8StringEncoding NSUTF8StringEncoding; public static const int NSUncachedRead = 2; public static const int NSUndefinedDateComponent = 2147483647; public static const int NSUndoCloseGroupingRunLoopOrdering = 350000;