weidagang2046的專欄

          物格而后知致
          隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
          數據加載中……

          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

          posted on 2006-09-05 00:57 weidagang2046 閱讀(597) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 儋州市| 当雄县| 临安市| 通江县| 灵山县| 庆元县| 安塞县| 汪清县| 丽江市| 江华| 榆社县| 信宜市| 永泰县| 祁门县| 汤阴县| 高唐县| 新田县| 武汉市| 永川市| 邓州市| 永清县| 包头市| 桃园县| 行唐县| 宜兰县| 沅江市| 杨浦区| 三穗县| 平和县| 武山县| 东兴市| 黄浦区| 庄浪县| 通化市| 砚山县| 宣汉县| 迁西县| 静乐县| 望奎县| 茌平县| 昌乐县|