package rocks.inspectit.ui.rcp.handlers; import java.util.Iterator; import java.util.List; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.handlers.HandlerUtil; import rocks.inspectit.ui.rcp.editor.root.AbstractRootEditor; import rocks.inspectit.ui.rcp.editor.tree.TreeSubView; import rocks.inspectit.ui.rcp.util.ClipboardUtil; /** * The handler to execute a copy command on our tree sub views. * * @author Patrice Bouillet * */ public class TreeCopyHandler extends AbstractHandler { /** * {@inheritDoc} */ @Override public Object execute(ExecutionEvent event) throws ExecutionException { IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event); AbstractRootEditor rootEditor = (AbstractRootEditor) HandlerUtil.getActiveEditor(event); TreeSubView subView = (TreeSubView) rootEditor.getActiveSubView(); List<Integer> visibleColumnOrder = subView.getColumnOrder(); StringBuilder sb = new StringBuilder(); // columns first List<String> columnNames = subView.getColumnNames(); for (Integer index : visibleColumnOrder) { sb.append(columnNames.get(index.intValue())); sb.append('\t'); } sb.append(System.getProperty("line.separator")); // then each object for (Iterator<?> iterator = selection.iterator(); iterator.hasNext();) { Object object = iterator.next(); List<String> columnValues = subView.getTreeInputController().getColumnValues(object); for (Integer index : visibleColumnOrder) { sb.append(columnValues.get(index.intValue())); sb.append('\t'); } sb.append(System.getProperty("line.separator")); } ClipboardUtil.textToClipboard(HandlerUtil.getActiveShell(event).getDisplay(), sb.toString()); return null; } }