⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagedatatransfer.java

📁 mywork是rcp开发的很好的例子
💻 JAVA
字号:
package net.sf.component.simplenote;

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 ImageDataTransfer extends ByteArrayTransfer {

    private static final String TYPENAME = "imagedata";

    private static final int TYPEID = registerType(TYPENAME);

    private static ImageDataTransfer _instance = new ImageDataTransfer();

    public static ImageDataTransfer 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);
    }
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -