1 /* 2 * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package javafx.embed.swt; 27 28 import java.nio.ByteBuffer; 29 30 import javafx.beans.NamedArg; 31 import org.eclipse.swt.dnd.ByteArrayTransfer; 32 import org.eclipse.swt.dnd.DND; 33 import org.eclipse.swt.dnd.TransferData; 34 35 /** 36 * @since JavaFX 2.2 37 * 38 * @treatAsPrivate implementation detail 39 * @deprecated This is an internal API that is not intended for use and will be removed in the next version 40 */ 41 @Deprecated 42 public class CustomTransfer extends ByteArrayTransfer { 43 private String name, mime; 44 45 public CustomTransfer (@NamedArg("name") String name, @NamedArg("mime") String mime) { 46 this.name = name; 47 this.mime = mime; 48 } 49 50 public String getName () { 51 return name; 52 } 53 54 public String getMime () { 55 return mime; 56 } 57 58 public void javaToNative (Object object, TransferData transferData) { 59 if (!checkCustom(object) || !isSupportedType(transferData)) { 60 DND.error(DND.ERROR_INVALID_DATA); 61 } 62 byte [] bytes = null; 63 if (object instanceof ByteBuffer) { 64 bytes = ((ByteBuffer)object).array(); 65 } else { 66 if (object instanceof byte []) bytes = (byte []) object; 67 } 68 if (bytes == null) DND.error(DND.ERROR_INVALID_DATA); 69 super.javaToNative(bytes, transferData); 70 } 71 72 public Object nativeToJava(TransferData transferData){ 73 if (isSupportedType(transferData)) { 74 return super.nativeToJava(transferData); 75 } 76 return null; 77 } 78 79 protected String[] getTypeNames(){ 80 return new String [] {name}; 81 } 82 83 protected int[] getTypeIds(){ 84 return new int [] {registerType(name)}; 85 } 86 87 boolean checkByteArray(Object object) { 88 return (object != null && object instanceof byte[] && ((byte[])object).length > 0); 89 } 90 91 boolean checkByteBuffer(Object object) { 92 return (object != null && object instanceof ByteBuffer && ((ByteBuffer)object).limit() > 0); 93 } 94 95 boolean checkCustom(Object object) { 96 return checkByteArray(object) || checkByteBuffer(object); 97 } 98 99 protected boolean validate(Object object) { 100 return checkCustom(object); 101 } 102 }