Mercurial > projects > dwt-mac
changeset 114:d0d0b721dbcc
Ported dwt.dnd.URLTransfer
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Wed, 31 Dec 2008 15:17:35 +0100 |
parents | 2d6116ea306e |
children | a2d82e6fd054 |
files | dwt/dnd/URLTransfer.d dwt/internal/cocoa/OS.d |
diffstat | 2 files changed, 2 insertions(+), 39 deletions(-) [+] |
line wrap: on
line diff
--- 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 <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 - */ 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 <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); } String url = (String)object; NSString nsString = NSString.stringWith(url); NSString escapedString = nsString.stringByAddingPercentEscapesUsingEncoding(OS.NSUTF8StringEncoding); transferData.data = NSURL.URLWithString(escapedString); } /** - * 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 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 <doob@me.com> *******************************************************************************/ 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 <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 */ 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 <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); } 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 <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 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
--- 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;