Transfer type to transfer SWT ImageData objects. : Image « SWT JFace Eclipse « Java






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);
  }
}


           
       








Related examples in the same category

1.Image Analyzer in SWTImage Analyzer in SWT
2.Set icons with different resolutionsSet icons with different resolutions
3.Capture a widget image with a GCCapture a widget image with a GC
4.Create an icon (in memory)Create an icon (in memory)
5.Display an animated GIFDisplay an animated GIF
6.Rotate and flip an imageRotate and flip an image
7.Display an image in a groupDisplay an image in a group
8.SWT and Image
9.Draw Images ExampleDraw Images Example
10.Clip ImageClip Image
11.Double BufferDouble Buffer
12.Image BasicsImage Basics
13.File Icon Util
14.Demonstrates how to draw imagesDemonstrates how to draw images
15.scroll an image (flicker free, no double buffering)scroll an image (flicker free, no double buffering)