/******************************************************************************* * Copyright (c) 2000, 2010, 2012 IBM Corporation, Gerhardt Informatics Kft. and others. * 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: * IBM Corporation - initial API and implementation * Gerhardt Informatics Kft. - GEFGWT port *******************************************************************************/ package org.eclipse.gef.ui.actions; import org.eclipse.gef.dnd.SimpleObjectTransfer; import org.eclipse.swt.dnd.Transfer; /** * A GEF clipboard for cut/copy/paste actions between GEF editors. It exists * mainly for convenience and allows clients to add graphical objects to the * system clipboard. It will not work between two instances of the workbench * (but will work between multiple windows belonging to a single instance of the * workbench). Setting the contents of the clipboard will erase the previous * contents of the clipboard. * * @author Eric Bordeau * @author Pratik Shah */ public class Clipboard { private static Clipboard defaultClipboard = new Clipboard(); private static final SimpleObjectTransfer TRANSFER = new SimpleObjectTransfer() { private final String TYPE_NAME = "org.eclipse.gef.clipboard.transfer"; //$NON-NLS-1$ private final int TYPE_ID = registerType(TYPE_NAME); protected int[] getTypeIds() { return new int[] { TYPE_ID }; } protected String[] getTypeNames() { return new String[] { TYPE_NAME }; } }; /** * Returns the default clipboard. * * @return the default clipboard */ public static Clipboard getDefault() { return defaultClipboard; } /** * Constructs a new Clipboard object. * * @deprecated As of 3.1, the GEF Clipboard synchronizes with the system * clipboard. Multiple instances of this class should not be * created. Use {@link #getDefault()}. This method will be * removed in future releases. */ public Clipboard() { } /** * Returns the current contents of the clipboard. * * @return contents of the clipboard */ public Object getContents() { org.eclipse.swt.dnd.Clipboard cb = new org.eclipse.swt.dnd.Clipboard( null); Object contents = cb.getContents(TRANSFER); cb.dispose(); return contents; } /** * Sets the contents of the clipboard. This will erase the previous contents * of this as well as the system clipboard. The provided contents will not * be garbage-collected until some other contents are set using this method. * * @param contents * the new contents */ public void setContents(Object contents) { org.eclipse.swt.dnd.Clipboard cb = new org.eclipse.swt.dnd.Clipboard( null); cb.setContents(new Object[] { contents }, new Transfer[] { TRANSFER }); cb.dispose(); } }