1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.cosylab.gui.util;
21
22 import java.awt.Component;
23 import java.awt.datatransfer.DataFlavor;
24 import java.awt.datatransfer.Transferable;
25 import java.awt.datatransfer.UnsupportedFlavorException;
26 import java.io.IOException;
27
28 import javax.swing.JComponent;
29
30 import sun.reflect.generics.reflectiveObjects.NotImplementedException;
31
32 import com.cosylab.gui.displayers.DisplayerParameters;
33 import com.cosylab.gui.displayers.MultipleDisplayer;
34
35
36
37
38
39
40
41
42 public class MultipleDisplayerParametersTransferHandler extends AbstractDisplayerParametersTransferHandler {
43
44 private static final long serialVersionUID = -4223198013311762602L;
45
46 protected MultipleDisplayer mDisplayer;
47
48 public MultipleDisplayerParametersTransferHandler(MultipleDisplayer comp, boolean reciveEnabled, boolean exportEnabled) {
49 super((JComponent)comp,reciveEnabled, exportEnabled);
50 mDisplayer= (MultipleDisplayer)comp;
51 }
52
53 public MultipleDisplayerParametersTransferHandler(MultipleDisplayer comp, boolean reciveEnabled, boolean exportEnabled, DataFlavor[] f, boolean resetFlavors) {
54 super((JComponent)comp, reciveEnabled, exportEnabled, f, resetFlavors);
55 mDisplayer= (MultipleDisplayer)comp;
56 }
57
58
59
60
61
62
63 @Override
64 public Object getTransferData(DataFlavor flavor)
65 throws UnsupportedFlavorException, IOException {
66 if (flavor instanceof MultipleDisplayerParametersFlavor) {
67 DisplayerParameters[] p= exportMultipleDisplayerParameters();
68 if (p!=null) {
69 return p;
70 }
71 }
72 return super.getTransferData(flavor);
73 }
74
75 protected DisplayerParameters exportDisplayerParameters() {
76 DisplayerParameters[] d= exportMultipleDisplayerParameters();
77 int i = selectParameters((Component)mDisplayer,d);
78 if (i<0) {
79 return null;
80 }
81 return d[i];
82 }
83
84 protected DisplayerParameters[] exportMultipleDisplayerParameters() {
85 throw new NotImplementedException();
86 }
87
88
89
90
91 @Override
92 public boolean importData(JComponent comp, Transferable t) {
93 try {
94 Object drop=null;
95 if (t.isDataFlavorSupported(MultipleDisplayerParametersFlavor.FLAVOR)) {
96 drop= t.getTransferData(MultipleDisplayerParametersFlavor.FLAVOR);
97 DisplayerParameters[] dp = null;
98 dp = castParameters(drop);
99
100 if (dp!=null) {
101 return importDisplayerParameters(dp);
102 }
103 } else {
104 super.importData(comp, t);
105 }
106 } catch (Exception e) {
107 e.printStackTrace();
108 }
109
110 return false;
111 }
112
113 public int displayerParametersDimension() {
114 return mDisplayer.getConsumers().length;
115 };
116
117
118
119
120
121 public MultipleDisplayer getMultipleDisplayer() {
122 return mDisplayer;
123 }
124 }