/** * @version $Id: CCPUtil.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $ * * 2011/12/02 13:16:12 * @author kousuke-morishima * * Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved. */ package com.tida_okinawa.corona.internal.ui.actions; import org.eclipse.jface.util.LocalSelectionTransfer; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.SWTException; import org.eclipse.swt.dnd.Clipboard; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.widgets.Display; /** * @author kousuke-morishima */ public class CCPUtil { /** コンストラクター */ public CCPUtil() { } /** * UIスレッド以外から呼び出すと、{@link SWTException}が発生します。 * データのゲット、セットが終わったらdisposeすること。 * * @return クリップボード */ public Clipboard getClipboard() { Display display = Display.getCurrent(); display = (display == null) ? Display.getDefault() : display; Clipboard clip = new Clipboard(display); return clip; } /** * デフォルトのTransfer({@link #defaultTransfer()})を使って、クリップボードにデータを格納する<br/> * Transferを指定したいときは、 {@link #getClipboard()} * で取得したClipboardのsetContentsを直接呼び出す。 * * @param selection * クリップボードに格納するデータ * @see Clipboard#setContents(Object[], Transfer[]) */ public void setContents(ISelection selection) { Clipboard clip = getClipboard(); Transfer t = defaultTransfer(); ((LocalSelectionTransfer) t).setSelection(selection); clip.setContents(new Object[] { selection }, new Transfer[] { t }); clip.dispose(); } /** * @return デフォルトのTransfer({@link #defaultTransfer()})を使ってクリップボードに格納したデータ */ public ISelection getContents() { Clipboard clip = getClipboard(); ISelection ret = (ISelection) clip.getContents(defaultTransfer()); clip.dispose(); return ret; } public static Transfer defaultTransfer() { Transfer t = LocalSelectionTransfer.getTransfer(); return t; } }