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.chart;
24
25 import java.awt.datatransfer.DataFlavor;
26 import java.awt.datatransfer.Transferable;
27 import java.beans.PropertyVetoException;
28
29 import javax.swing.JComponent;
30
31 import com.cosylab.gui.displayers.DisplayerParameters;
32 import com.cosylab.gui.util.DisplayerParametersFlavor;
33 import com.cosylab.gui.util.MultipleDisplayerParametersFlavor;
34
35 import de.desy.acop.displayers.AcopChartReorg;
36 import de.desy.acop.displayers.AcopTrendChart;
37 import de.desy.acop.displayers.tools.AcopChartTransferHandler;
38 import de.desy.acop.displayers.tools.AcopDisplayerParametersFlavor;
39 import de.desy.acop.displayers.tools.AcopGraphHistoryParameters;
40 import de.desy.acop.displayers.tools.AcopGraphParameters;
41 import de.desy.acop.displayers.tools.AcopGraphParametersFlavor;
42 import de.desy.acop.displayers.tools.ConnectionParametersFlavor;
43 import de.desy.acop.transport.ConnectionParameters;
44
45
46
47
48
49
50
51
52
53
54 public class AcopChartReorgTransferHandler extends AcopChartTransferHandler {
55
56 private static final long serialVersionUID = -6825714785450126489L;
57
58 private TrendSelectorDialog trendSelectorDialog;
59
60 public AcopChartReorgTransferHandler(AcopChartReorg comp) {
61 super(comp, true, true, new DataFlavor[] {AcopGraphParametersFlavor.FLAVOR,
62 AcopDisplayerParametersFlavor.FLAVOR, MultipleDisplayerParametersFlavor.FLAVOR,
63 DisplayerParametersFlavor.FLAVOR,ConnectionParametersFlavor.FLAVOR,
64 DataFlavor.stringFlavor}, true);
65
66 }
67
68
69
70
71 @Override
72 public boolean importData(JComponent comp, Transferable t) {
73 try {
74 if (t.isDataFlavorSupported(AcopGraphParametersFlavor.FLAVOR)) {
75 Object drop= t.getTransferData(AcopGraphParametersFlavor.FLAVOR);
76
77 if (!(drop instanceof AcopGraphParameters[])) {
78 return false;
79 }
80
81 AcopGraphParameters[] p = (AcopGraphParameters[])drop;
82 for (int i = 0; i < p.length; i++) {
83 if (displayer instanceof AcopTrendChart && !(p[i] instanceof AcopGraphHistoryParameters && ((AcopGraphHistoryParameters)p[i]).getHistoryParameters() != null)) {
84 HistoryParameters hp = getTrendSelectorDialog().chooseHistoryParameters(p[i].getConnectionParameters());
85 p[i] = new AcopGraphHistoryParameters(p[i], hp);
86 }
87 ((AcopChartReorg)displayer).addDisplayerParameters(p[i]);
88 }
89 return true;
90 }
91 } catch (Exception e) {
92 e.printStackTrace();
93 }
94
95 if (super.importData(comp,t)) {
96 return true;
97 }
98
99 return false;
100 }
101
102
103
104
105
106 @Override
107 public boolean setParametersToDisplayer(Object disp, DisplayerParameters parameters) throws PropertyVetoException {
108 try {
109 if (displayer instanceof AcopTrendChart && !(parameters instanceof AcopGraphHistoryParameters && ((AcopGraphHistoryParameters)parameters).getHistoryParameters() != null)) {
110 ConnectionParameters cp = ((AcopGraphParameters)parameters).getConnectionParameters();
111 HistoryParameters hp = getTrendSelectorDialog().chooseHistoryParameters(cp.deriveWithDeviceProperty(cp.getDeviceProperty() +".HIST"));
112 parameters = new AcopGraphHistoryParameters((AcopGraphParameters)parameters, hp);
113 }
114 } catch (Exception e) {
115 e.printStackTrace();
116 }
117 return super.setParametersToDisplayer(disp, parameters);
118 }
119
120 private TrendSelectorDialog getTrendSelectorDialog() {
121 if (trendSelectorDialog == null) {
122 trendSelectorDialog = new TrendSelectorDialog(displayer);
123 }
124
125 return trendSelectorDialog;
126 }
127
128 }