package com.github.fabeclipse.textedgrep.internal.ui.cmd; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.swt.dnd.Clipboard; import org.eclipse.swt.dnd.TextTransfer; import org.eclipse.swt.dnd.Transfer; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.handlers.HandlerUtil; import com.github.fabeclipse.textedgrep.internal.ui.GrepView; public class CopyOriginalRange extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { IWorkbenchPart part = HandlerUtil.getActivePart(event); IWorkbenchWindow activeWorkbenchWindow = HandlerUtil.getActiveWorkbenchWindow(event); Clipboard clipboard = new Clipboard(activeWorkbenchWindow.getShell().getDisplay()); String textData = getContentFromGrepView(part); if (textData != null && !textData.isEmpty()) { TextTransfer textTransfer = TextTransfer.getInstance(); Transfer[] transfers = new Transfer[] { textTransfer }; Object[] data = new Object[] { textData }; clipboard.setContents(data, transfers); clipboard.dispose(); } return null; } private String getContentFromGrepView(IWorkbenchPart part) { if (part instanceof GrepView) { GrepView gv = (GrepView) part; return (gv.getOriginalForCurrentSelection()); } return null; } }