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.tools;
24
25 import java.awt.datatransfer.DataFlavor;
26 import java.awt.event.MouseEvent;
27 import java.beans.PropertyVetoException;
28
29 import javax.swing.JComponent;
30
31 import com.cosylab.gui.displayers.DisplayerParameters;
32 import com.cosylab.util.CommonException;
33
34 /**
35 * TransferHandler which operates with <code>MultipleAcopDisplayer</code>
36 * that handles with <code>AcopGraphParameters</code>.
37 *
38 * @author <a href="mailto:jaka.bobnar@cosylab.com">Jaka Bobnar</a>
39 * @version $Id: Templates.xml,v 1.10 2004/01/13 16:17:13 jbobnar Exp $
40 *
41 */
42 public class AcopChartTransferHandler extends GraphParametersTransferHandler{
43
44 private static final long serialVersionUID = 4277524441131938702L;
45
46 /**
47 * Constructs a new AcopChartTransferHandler.
48 *
49 * @param comp
50 * @param reciveEnabled
51 * @param exportEnabled
52 * @param f
53 * @param resetFlavors
54 * @see GraphParametersTransferHandler#GraphParametersTransferHandler(JComponent, boolean, boolean, DataFlavor[], boolean)
55 */
56 public AcopChartTransferHandler(MultipleAcopDisplayer<AcopGraphParameters> comp, boolean reciveEnabled, boolean exportEnabled, DataFlavor[] f, boolean resetFlavors) {
57 super((JComponent)comp, reciveEnabled, exportEnabled, f, resetFlavors);
58 }
59
60 /* (non-Javadoc)
61 * @see com.cosylab.gui.components.util.CosyTransferHandler#isMouseDragGesture(java.awt.event.MouseEvent)
62 */
63 @Override
64 protected boolean isMouseDragGesture(MouseEvent e) {
65 AcopGraphParameters[] agp = exportMultipleDisplayerParameters();
66 boolean ok = false;
67 for(AcopGraphParameters p : agp) {
68 if (p.getConnectionParameters() != null) ok = true;
69 }
70
71 return super.isMouseDragGesture(e) &&
72 (e.isControlDown() && ok);
73 }
74
75 /*
76 * (non-Javadoc)
77 * @see de.desy.acop.displayers.tools.GraphParametersTransferHandler#exportMultipleDisplayerParameters()
78 */
79 @Override
80 protected AcopGraphParameters[] exportMultipleDisplayerParameters() {
81 return ((MultipleAcopDisplayer<AcopGraphParameters>)displayer).getDisplayerParameters();
82 }
83
84 /*
85 * (non-Javadoc)
86 * @see com.cosylab.gui.util.AbstractDisplayerParametersTransferHandler#setParametersToDisplayer(java.lang.Object, com.cosylab.gui.displayers.DisplayerParameters)
87 */
88 @Override
89 public boolean setParametersToDisplayer(Object disp, DisplayerParameters parameters) throws PropertyVetoException {
90 try {
91 if (parameters instanceof AcopGraphParameters) {
92 ((MultipleAcopDisplayer<AcopGraphParameters>)displayer).addDisplayerParameters((AcopGraphParameters) parameters);
93 return true;
94 }
95 } catch (CommonException e) {
96 e.printStackTrace();
97 }
98 return false;
99 }
100 }