1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.cosylab.gui.components.util;
21 import java.awt.Image;
22 import java.awt.datatransfer.DataFlavor;
23 import java.awt.datatransfer.Transferable;
24
25 import javax.swing.Icon;
26 import javax.swing.ImageIcon;
27 import javax.swing.JComponent;
28 import javax.swing.JLabel;
29 import javax.swing.TransferHandler;
30
31
32 public class ImageClipboardHelper extends TransferHandler implements Transferable {
33
34 private static final long serialVersionUID = 1L;
35 private static final DataFlavor[] flavors = { DataFlavor.imageFlavor };
36 private Image image;
37
38
39
40
41
42 public int getSourceActions(JComponent c) {
43 return TransferHandler.COPY;
44 }
45
46
47
48 public Transferable createTransferable(JComponent comp) {
49 image = null;
50
51 Icon icon = null;
52
53 if (comp instanceof JLabel) {
54 JLabel label = (JLabel) comp;
55 icon = label.getIcon();
56 }
57 if (icon instanceof ImageIcon) {
58 image = ((ImageIcon) icon).getImage();
59
60 return this;
61 }
62
63 return null;
64 }
65
66
67
68 public Object getTransferData(DataFlavor flavor) {
69 if (isDataFlavorSupported(flavor)) {
70 return image;
71 }
72
73 return null;
74 }
75
76 public DataFlavor[] getTransferDataFlavors() {
77 return flavors;
78 }
79
80 public boolean isDataFlavorSupported(DataFlavor flavor) {
81 return flavor.equals(flavors[0]);
82 }
83 }