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.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 }