1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package de.desy.acop.displayers.tools;
24
25 import java.awt.datatransfer.DataFlavor;
26 import java.awt.datatransfer.Transferable;
27 import java.awt.datatransfer.UnsupportedFlavorException;
28 import java.io.IOException;
29
30 import javax.swing.JComponent;
31
32 import com.cosylab.gui.displayers.DisplayerParameters;
33 import com.cosylab.gui.util.DisplayerParametersFlavor;
34
35 import de.desy.acop.displayers.AcopTable;
36 import de.desy.acop.displayers.selector.AcopTableParametersDialog;
37 import de.desy.acop.displayers.table.AcopTableParameters;
38 import de.desy.acop.displayers.table.AcopTableParametersFlavor;
39 import de.desy.acop.transport.ConnectionParameters;
40
41
42
43
44
45
46
47
48
49 public class AcopTableTransferHandler extends AcopMultipleDisplayerParametersTransferHandler{
50
51 private static final long serialVersionUID = 4277524441131938702L;
52 private AcopTableParametersDialog tableDialog;
53
54 public AcopTableTransferHandler(AcopTable comp, boolean reciveEnabled, boolean exportEnabled, DataFlavor[] f, boolean resetFlavors) {
55 super(comp, reciveEnabled, exportEnabled, f, resetFlavors);
56 }
57
58
59
60
61 @Override
62 public Object getTransferData(DataFlavor flavor)
63 throws UnsupportedFlavorException, IOException {
64 if (flavor.equals(AcopTableParametersFlavor.FLAVOR)) {
65 return exportDisplayerParameters();
66 } else if (flavor instanceof DisplayerParametersFlavor) {
67 return exportDisplayerParameters();
68 } else if (flavor instanceof ConnectionParametersFlavor) {
69 return ((AcopTableParameters)exportDisplayerParameters()).getConnectionParameters();
70 } else if (flavor.isFlavorTextType()){
71 return ((AcopTableParameters)exportDisplayerParameters()).getConnectionParameters().toString();
72 } else {
73 return super.getTransferData(flavor);
74 }
75 }
76
77
78
79
80
81 @Override
82 protected DisplayerParameters exportDisplayerParameters() {
83 return ((AcopTable)displayer).getSelectedParameters();
84 }
85
86
87
88
89
90 protected AcopTableParameters convertParameters(AcopDisplayerParameters adp) {
91 if (tableDialog == null) {
92 tableDialog = new AcopTableParametersDialog(displayer);
93 }
94 return tableDialog.showDialog(displayer,adp);
95 }
96
97
98
99
100
101 protected AcopTableParameters convertParameters(ConnectionParameters adp) {
102 if (tableDialog == null) {
103 tableDialog = new AcopTableParametersDialog(displayer);
104 }
105 return tableDialog.showDialog(displayer,adp);
106 }
107
108
109
110
111
112 @Override
113 protected DisplayerParameters[] castParameters(Object... parameters) {
114 if (parameters instanceof AcopTableParameters[]) {
115 return (AcopTableParameters[])parameters.getClass().cast(parameters);
116 } else if (parameters instanceof AcopDisplayerParameters[]) {
117 return (AcopDisplayerParameters[])parameters.getClass().cast(parameters);
118 } else if (parameters.length == 1) {
119 if (parameters[0] instanceof AcopTableParameters) {
120 return new AcopTableParameters[] {(AcopTableParameters)parameters[0]};
121 } else if (parameters[0] instanceof AcopDisplayerParameters) {
122 return new AcopDisplayerParameters[] {(AcopDisplayerParameters)parameters[0]};
123 }
124 }
125 return super.castParameters(parameters);
126 }
127
128
129
130
131 @Override
132 public boolean importData(JComponent comp, Transferable t) {
133 try {
134 if (t.isDataFlavorSupported(AcopTableParametersFlavor.FLAVOR)) {
135 Object drop = t.getTransferData(AcopTableParametersFlavor.FLAVOR);
136
137 if (!(drop instanceof AcopTableParameters[])) {
138 return false;
139 }
140
141 AcopTableParameters[] p = (AcopTableParameters[])drop;
142 for (int i = 0; i < p.length; i++) {
143 setParametersToDisplayer(displayer,p[i]);
144 }
145 return true;
146 }
147 } catch (Exception e) {
148 e.printStackTrace();
149 }
150
151 if (super.importData(comp,t)) {
152 return true;
153 }
154
155 return false;
156 }
157
158 }