Package jrdesktop.utilities

Source Code of jrdesktop.utilities.ClipbrdUtility$ImageSelection

package jrdesktop.utilities;

import java.awt.Image;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.FlavorEvent;
import java.awt.datatransfer.FlavorListener;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.File;
import java.util.List;
import javax.swing.ImageIcon;

import jrdesktop.Commons;

/**
* ClipbrdUtility.java
* @author benbac
*/

public class ClipbrdUtility {
   
    private Clipboard clipboard;
   
    private FlavorListener flavorlistener;
    private Object object;
   
    private String txt = "jrdesktop";
    private ImageIcon img = new ImageIcon(Commons.ALIVE_ICON)

    public ClipbrdUtility() {
        initClipboard();
        clipboard.addFlavorListener(flavorlistener);       
    }
   
    public void initClipboard() {
        clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
   
        flavorlistener = new FlavorListener() {
            public void flavorsChanged(FlavorEvent event) {
                try {               
                    Transferable content = clipboard.getContents(this);
                    if (content == null) return;
                       
                    if(content.isDataFlavorSupported(DataFlavor.stringFlavor)) {
                        String newtxt = (String) clipboard.getData(DataFlavor.stringFlavor);
                        if (!txt.equals(newtxt)) {
                            txt = newtxt;
                            object = txt;
                        }
                    }
                    else if (content.isDataFlavorSupported(DataFlavor.imageFlavor)) {
                        Image image = (Image) clipboard.getData(DataFlavor.imageFlavor);                       
                        if (!img.getImage().equals(image)) {
                            img = new ImageIcon(image);
                            object = img;
                        }
                    }                            
                }   
                catch (Exception ex) {
                    ex.printStackTrace();
                }         
            }
        };
    }

    public boolean isEmpty() {
        return (object == null);
    }
   
   public void setText(String string) {
       if (txt.equals(string)) return;
       txt = string;
       clipboard.setContents(new StringSelection(txt), null);    
    }
   
    public void setImage(ImageIcon image) {
        if (img.getImage().equals(image.getImage())) return;
        img = image;
        clipboard.setContents(new ImageSelection(img.getImage()), null);
    }  
   
    public void setContent(Object object) {
        if (object == null) return;
       
        if (object instanceof String)
            setText((String) object);   
        else if (object instanceof ImageIcon)
            setImage((ImageIcon) object);
    }
   
    public Object getContent() {
        Object obj = object;
        object = null;
        return obj;
    }
   
    public File[] getFiles() {
        File[] files = new File[]{};
        try {
            Transferable transferable = clipboard.getContents(this);
            if (transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
                List list = (List) clipboard.getData(DataFlavor.javaFileListFlavor)
                files = (File[]) list.toArray(new File[list.size()]);//.clone();
            }
            else if (transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) {
                String data = (String) clipboard.getData(
                    //new DataFlavor("text/uri-list;class=java.lang.String"));
                     new DataFlavor("application/x-java-serialized-object; class=java.lang.String"));
                List<File> list = FileUtility.textToFileList(data);
                files = (File[]) list.toArray(new File[list.size()]); //.clone();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return files;
    }
   
   public void addFlavorListener() {
        clipboard.addFlavorListener(flavorlistener);
   }
  
   public void removeFlavorListener() {
       clipboard.removeFlavorListener(flavorlistener);
  
   
    /*
    * Helper class to put an Image on a clipboard as DataFlavor.imageFlavor.
    */
    public static class ImageSelection implements Transferable {

        private final Image img;

        public ImageSelection(Image img) {
            this.img = img;
        }
        static DataFlavor[] flavors = new DataFlavor[]{DataFlavor.imageFlavor};

        public DataFlavor[] getTransferDataFlavors() {
            return (DataFlavor[]) flavors.clone();        
        }

        public boolean isDataFlavorSupported(DataFlavor flavor) {
            return flavor.equals(DataFlavor.imageFlavor);
        }

        public Object getTransferData(DataFlavor flavor)
                throws UnsupportedFlavorException {
            if (!isDataFlavorSupported(flavor))
                throw new UnsupportedFlavorException(flavor);
            return img;
        }
    }
}
TOP

Related Classes of jrdesktop.utilities.ClipbrdUtility$ImageSelection

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.