View Javadoc

1   /*
2    * Copyright (c) 2006 Stiftung Deutsches Elektronen-Synchroton,
3    * Member of the Helmholtz Association, (DESY), HAMBURG, GERMANY.
4    *
5    * THIS SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "../AS IS" BASIS.
6    * WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
7    * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR PARTICULAR PURPOSE AND
8    * NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
9    * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
10   * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
11   * THE USE OR OTHER DEALINGS IN THE SOFTWARE. SHOULD THE SOFTWARE PROVE DEFECTIVE
12   * IN ANY RESPECT, THE USER ASSUMES THE COST OF ANY NECESSARY SERVICING, REPAIR OR
13   * CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.
14   * NO USE OF ANY SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
15   * DESY HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
16   * OR MODIFICATIONS.
17   * THE FULL LICENSE SPECIFYING FOR THE SOFTWARE THE REDISTRIBUTION, MODIFICATION,
18   * USAGE AND OTHER RIGHTS AND OBLIGATIONS IS INCLUDED WITH THE DISTRIBUTION OF THIS
19   * PROJECT IN THE FILE LICENSE.HTML. IF THE LICENSE IS NOT INCLUDED YOU MAY FIND A COPY
20   * AT HTTP://WWW.DESY.DE/LEGAL/LICENSE.HTM
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   * <code>AcopChartReorgTransferHandler</code> is an extension of the
48   * <code>TransferHandler</code> adapted to <code>AcopChartReorg</code>.
49   * 
50   * @author <a href="mailto:jaka.bobnar@cosylab.com">Jaka Bobnar</a>
51   * @version $Id: Templates.xml,v 1.10 2004/01/13 16:17:13 jbobnar Exp $
52   * @see AcopChartReorg
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  	/* (non-Javadoc)
69  	 * @see de.desy.acop.displayers.tools.AcopTransferHandler#importData(javax.swing.JComponent, java.awt.datatransfer.Transferable)
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 	 * (non-Javadoc)
104 	 * @see de.desy.acop.displayers.tools.AcopChartTransferHandler#setParametersToDisplayer(java.lang.Object, com.cosylab.gui.displayers.DisplayerParameters)
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 }