Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 39098 Details for
Bug 100095
[DND] Consider making URLTransfer public
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Carbon implementation of URLTransfer
URLTransferMAC.java (text/plain), 5.02 KB, created by
Veronika Irvine
on 2006-04-20 15:57:51 EDT
(
hide
)
Description:
Carbon implementation of URLTransfer
Filename:
MIME Type:
Creator:
Veronika Irvine
Created:
2006-04-20 15:57:51 EDT
Size:
5.02 KB
patch
obsolete
>/******************************************************************************* > * Copyright (c) 2000, 2005 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.internal.carbon.CFRange; >import org.eclipse.swt.internal.carbon.OS; > >/** > * 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. See > * <code>Transfer</code> for additional information. The first string in the > * array is mandatory and must contain the fully specified url. The second > * string in the array is optional and if present contains the title for the > * page. > * > * <p>An example of a java <code>String[]</code> containing a URL is shown > * below:</p> > * > * <code><pre> > * String[] urlData = new String[] {"http://www.eclipse.org", "Eclipse.org Main Page"}; > * </code></pre> > */ >public class URLTransfer extends ByteArrayTransfer { > > static URLTransfer _instance = new URLTransfer(); > static final String URL = "url "; //$NON-NLS-1$ > static final int URL_ID = registerType(URL); > static final String URLN = "urln"; //$NON-NLS-1$ > static final int URLN_ID = registerType(URLN); > >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 and optionally a title > * represented by a java <code>String[]</code> to a platform specific representation. > * For additional information see <code>Transfer#javaToNative</code>. > * > * @param object a java <code>String[]</code> containing a URL and optionally, a title > * @param transferData an empty <code>TransferData</code> object; this > * object will be filled in on return with the platform specific format of the data > */ >public void javaToNative (Object object, TransferData transferData){ > if (!checkURL(object) || !isSupportedType(transferData)) { > DND.error(DND.ERROR_INVALID_DATA); > } > transferData.result = -1; > String[] urlInfo = (String[])object; > String url = urlInfo[0]; > int count = url.length(); > char[] chars = new char[count]; > url.getChars(0, count, chars, 0); > int cfstring = OS.CFStringCreateWithCharacters(OS.kCFAllocatorDefault, chars, count); > if (cfstring == 0) return; > try { > CFRange range = new CFRange(); > range.length = chars.length; > int encoding = OS.CFStringGetSystemEncoding(); > int[] size = new int[1]; > int numChars = OS.CFStringGetBytes(cfstring, range, encoding, (byte)'?', true, null, 0, size); > if (numChars == 0 || size[0] == 0) return; > byte[] buffer = new byte[size[0]]; > numChars = OS.CFStringGetBytes(cfstring, range, encoding, (byte)'?', true, buffer, size [0], size); > if (numChars == 0) return; > transferData.data = new byte[1][]; > transferData.data[0] = buffer; > transferData.result = 0; > } finally { > OS.CFRelease(cfstring); > } >} > >/** > * This implementation of <code>nativeToJava</code> converts a platform specific > * representation of a URL and optionally, a title to a java <code>String[]</code>. > * For additional information see <code>Transfer#nativeToJava</code>. > * > * @param transferData the platform specific representation of the data to be > * been converted > * @return a java <code>String[]</code> containing a URL and optionally a title if the > * conversion was successful; otherwise null > */ >public Object nativeToJava(TransferData transferData){ > if (!isSupportedType(transferData) || transferData.data == null) return null; > if (transferData.data.length == 0) return null; > byte[] buffer = transferData.data[0]; > int encoding = OS.CFStringGetSystemEncoding(); > int cfstring = OS.CFStringCreateWithBytes(OS.kCFAllocatorDefault, buffer, buffer.length, encoding, true); > if (cfstring == 0) return null; > try { > int length = OS.CFStringGetLength(cfstring); > if (length == 0) return null; > char[] chars = new char[length]; > CFRange range = new CFRange(); > range.length = length; > OS.CFStringGetCharacters(cfstring, range, chars); > return new String[]{ new String(chars)}; > } finally { > OS.CFRelease(cfstring); > } >} > >protected int[] getTypeIds(){ > return new int[] {URL_ID, URLN_ID}; >} > >protected String[] getTypeNames(){ > return new String[] {URL, URLN}; >} > >boolean checkURL(Object object) { > if (object == null || !(object instanceof String[]) || ((String[])object).length == 0) return false; > String[] strings = (String[])object; > if (strings[0] == null || strings[0].length() == 0) return false; > return true; >} > >protected boolean validate(Object object) { > return checkURL(object); >} >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 100095
:
39097
| 39098 |
39099