Transfer type to transfer SWT ImageData objects
/**
? *?Transfer?type?to?transfer?SWT?ImageData?objects.
? */
import? java.io.ByteArrayInputStream;
import? java.io.ByteArrayOutputStream;
import? java.io.DataInputStream;
import? java.io.DataOutputStream;
import? java.io.IOException;
import? org.eclipse.swt.SWT;
import? org.eclipse.swt.dnd.ByteArrayTransfer;
import? org.eclipse.swt.dnd.DND;
import? org.eclipse.swt.dnd.TransferData;
import? org.eclipse.swt.graphics.ImageData;
import? org.eclipse.swt.graphics.ImageLoader;
public?class? ImageTransfer? extends? ByteArrayTransfer? {
?? private?static?final? String?TYPENAME?=? "imagedata" ;
?? private?static?final? int? TYPEID?=?registerType ( TYPENAME ) ;
?? private?static? ImageTransfer?_instance?=? new? ImageTransfer () ;
?? public?static? ImageTransfer?getInstance ()?{
???? return? _instance;
?? }
?? public? void? javaToNative ( Object?object,?TransferData?transferData )?{
???? if? ( !checkImage ( object )? ||?!isSupportedType ( transferData ))?{
?????? DND.error ( DND.ERROR_INVALID_DATA ) ;
???? }
???? ImageData?imdata?=? ( ImageData )? object;
???? try? {
?????? //?write?data?to?a?byte?array?and?then?ask?super?to?convert?to
?????? //?pMedium
?????? ByteArrayOutputStream?out?=? new? ByteArrayOutputStream () ;
?????? DataOutputStream?writeOut?=? new? DataOutputStream ( out ) ;
?????? ImageLoader?loader?=? new? ImageLoader () ;
?????? loader.data?=? new? ImageData []?{? imdata? } ;
?????? loader.save ( writeOut,?SWT.IMAGE_BMP ) ;
?????? writeOut.close () ;
?????? byte []? buffer?=?out.toByteArray () ;
?????? super .javaToNative ( buffer,?transferData ) ;
?????? out.close () ;
???? }? catch? ( IOException?e )?{
???? }
?? }
?? public? Object?nativeToJava ( TransferData?transferData )?{
???? if? ( !isSupportedType ( transferData ))
?????? return?null ;
???? byte []? buffer?=? ( byte [])? super .nativeToJava ( transferData ) ;
???? if? ( buffer?==? null )
?????? return?null ;
???? ImageData?imdata;
???? try? {
?????? ByteArrayInputStream?in?=? new? ByteArrayInputStream ( buffer ) ;
?????? DataInputStream?readIn?=? new? DataInputStream ( in ) ;
?????? imdata?=? new? ImageData ( readIn ) ;
?????? readIn.close () ;
???? }? catch? ( IOException?ex )?{
?????? return?null ;
???? }
???? return? imdata;
?? }
?? protected? String []? getTypeNames ()?{
???? return?new? String []?{? TYPENAME? } ;
?? }
?? protected? int []? getTypeIds ()?{
???? return?new? int []?{? TYPEID? } ;
?? }
?? boolean? checkImage ( Object?object )?{
???? return? ( object?!=? null? &&?object? instanceof? ImageData ) ;
?? }
?? protected? boolean? validate ( Object?object )?{
???? return? checkImage ( object ) ;
?? }
}
from: http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/TransfertypetotransferSWTImageDataobjects.htm
? *?Transfer?type?to?transfer?SWT?ImageData?objects.
? */
import? java.io.ByteArrayInputStream;
import? java.io.ByteArrayOutputStream;
import? java.io.DataInputStream;
import? java.io.DataOutputStream;
import? java.io.IOException;
import? org.eclipse.swt.SWT;
import? org.eclipse.swt.dnd.ByteArrayTransfer;
import? org.eclipse.swt.dnd.DND;
import? org.eclipse.swt.dnd.TransferData;
import? org.eclipse.swt.graphics.ImageData;
import? org.eclipse.swt.graphics.ImageLoader;
public?class? ImageTransfer? extends? ByteArrayTransfer? {
?? private?static?final? String?TYPENAME?=? "imagedata" ;
?? private?static?final? int? TYPEID?=?registerType ( TYPENAME ) ;
?? private?static? ImageTransfer?_instance?=? new? ImageTransfer () ;
?? public?static? ImageTransfer?getInstance ()?{
???? return? _instance;
?? }
?? public? void? javaToNative ( Object?object,?TransferData?transferData )?{
???? if? ( !checkImage ( object )? ||?!isSupportedType ( transferData ))?{
?????? DND.error ( DND.ERROR_INVALID_DATA ) ;
???? }
???? ImageData?imdata?=? ( ImageData )? object;
???? try? {
?????? //?write?data?to?a?byte?array?and?then?ask?super?to?convert?to
?????? //?pMedium
?????? ByteArrayOutputStream?out?=? new? ByteArrayOutputStream () ;
?????? DataOutputStream?writeOut?=? new? DataOutputStream ( out ) ;
?????? ImageLoader?loader?=? new? ImageLoader () ;
?????? loader.data?=? new? ImageData []?{? imdata? } ;
?????? loader.save ( writeOut,?SWT.IMAGE_BMP ) ;
?????? writeOut.close () ;
?????? byte []? buffer?=?out.toByteArray () ;
?????? super .javaToNative ( buffer,?transferData ) ;
?????? out.close () ;
???? }? catch? ( IOException?e )?{
???? }
?? }
?? public? Object?nativeToJava ( TransferData?transferData )?{
???? if? ( !isSupportedType ( transferData ))
?????? return?null ;
???? byte []? buffer?=? ( byte [])? super .nativeToJava ( transferData ) ;
???? if? ( buffer?==? null )
?????? return?null ;
???? ImageData?imdata;
???? try? {
?????? ByteArrayInputStream?in?=? new? ByteArrayInputStream ( buffer ) ;
?????? DataInputStream?readIn?=? new? DataInputStream ( in ) ;
?????? imdata?=? new? ImageData ( readIn ) ;
?????? readIn.close () ;
???? }? catch? ( IOException?ex )?{
?????? return?null ;
???? }
???? return? imdata;
?? }
?? protected? String []? getTypeNames ()?{
???? return?new? String []?{? TYPENAME? } ;
?? }
?? protected? int []? getTypeIds ()?{
???? return?new? int []?{? TYPEID? } ;
?? }
?? boolean? checkImage ( Object?object )?{
???? return? ( object?!=? null? &&?object? instanceof? ImageData ) ;
?? }
?? protected? boolean? validate ( Object?object )?{
???? return? checkImage ( object ) ;
?? }
}
from: http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/TransfertypetotransferSWTImageDataobjects.htm
posted on 2006-09-05 00:57 weidagang2046 閱讀(597) 評論(0) 編輯 收藏 所屬分類: Java