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 }