package net.sourceforge.pmd.eclipse.ui.preferences.br;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
/**
*
* @author Brian Remedios
*/
public class TreeUtil {
private TreeUtil() {}
public static String getSelectionAsString(TreeViewer viewer, String columnSeparator, String lineSeparator) {
String[][] data = getStringContents(viewer);
StringBuilder sb = new StringBuilder();
for (int r=0; r<data.length; r++) {
sb.append(data[r][0]);
for (int c=1; c<data[r].length; c++) {
sb.append(columnSeparator).append(data[r][c]);
}
sb.append(lineSeparator);
}
return sb.toString();
}
public static String[][] getStringContents(TreeViewer viewer) {
Object[] items = ((IStructuredSelection)viewer.getSelection()).toArray();
ITableLabelProvider provider = (ITableLabelProvider)viewer.getLabelProvider();
int columnCount = viewer.getTree().getColumnCount();
String[][] output = new String[items.length][columnCount];
for (int r=0; r<items.length; r++) {
for (int c=0; c<columnCount; c++) {
output[r][c] = provider.getColumnText(items[r], c);
}
}
return output;
}
public static void copySelectionToClipboard(TreeViewer viewer) {
Clipboard clipboard = new Clipboard(viewer.getTree().getDisplay());
clipboard.setContents(
new Object[] { getSelectionAsString(viewer, "\t", System.getProperty("line.separator"))},
new Transfer[] { TextTransfer.getInstance() }
);
}
}