/******************************************************************************* * Copyright (c) 2000, 2005 IBM Corporation 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 *******************************************************************************/ package org.eclipse.gef.ui.actions; import org.eclipse.swt.dnd.Transfer; import org.eclipse.gef.dnd.SimpleObjectTransfer; /** * 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(); } }