/******************************************************************************* * Copyright (c) 2004, 2010 BREDEX GmbH. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * BREDEX GmbH - initial API and implementation and/or initial documentation *******************************************************************************/ package org.eclipse.jubula.client.ui.rcp.handlers; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; import org.eclipse.jubula.client.core.model.INodePO; import org.eclipse.jubula.client.core.model.ISpecTestCasePO; import org.eclipse.jubula.client.core.model.ITestJobPO; import org.eclipse.jubula.client.core.model.ITestSuitePO; import org.eclipse.jubula.client.ui.rcp.handlers.open.AbstractOpenHandler; import org.eclipse.jubula.tools.internal.constants.StringConstants; /** * @author BREDEX GmbH * @created Feb 10, 2011 */ public abstract class AbstractClipboardHandler extends AbstractOpenHandler implements ClipboardOwner { /** <code>OBJECT_TYPE_TESTCASE</code> */ protected static final String OBJECT_TYPE_TESTCASE = "tc"; //$NON-NLS-1$ /** <code>OBJECT_TYPE_TESTSUITE</code> */ protected static final String OBJECT_TYPE_TESTSUITE = "ts"; //$NON-NLS-1$ /** <code>OBJECT_TYPE_TESTJOB</code> */ protected static final String OBJECT_TYPE_TESTJOB = "tj"; //$NON-NLS-1$ /** <code>SPLIT_TOKEN</code> */ protected static final String SPLIT_TOKEN = StringConstants.EQUALS_SIGN; /** * {@inheritDoc} */ public void lostOwnership(Clipboard clipboard, Transferable contents) { // empty } /** * @param node * the node */ protected void copyIDToClipboard(INodePO node) { StringBuilder sb = new StringBuilder(); if (node instanceof ISpecTestCasePO) { sb.append(OBJECT_TYPE_TESTCASE); } else if (node instanceof ITestSuitePO) { sb.append(OBJECT_TYPE_TESTSUITE); } else if (node instanceof ITestJobPO) { sb.append(OBJECT_TYPE_TESTJOB); } sb.append(SPLIT_TOKEN); sb.append(node.getGuid()); copyStringToClipboard(sb.toString()); } /** * @param s the string to copy */ private void copyStringToClipboard(String s) { Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); StringSelection ss = new StringSelection(s); clipboard.setContents(ss, this); } /** * Get the String residing on the clipboard. * * @return any text found on the Clipboard; if none found, return an empty * String. */ public String getClipboardContents() { String result = StringConstants.EMPTY; Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable contents = clipboard.getContents(null); boolean hasTransferableText = (contents != null) && contents.isDataFlavorSupported(DataFlavor.stringFlavor); if (hasTransferableText) { try { result = (String)contents .getTransferData(DataFlavor.stringFlavor); } catch (UnsupportedFlavorException ex) { // ignore } catch (IOException ex) { // ignore } } return result; } }