下面列出了怎么用org.eclipse.swt.widgets.TreeColumn的API类实例代码及写法,或者点击链接到github查看源代码。
protected void handleUniqeValuesColumn() {
TreeColumn treeCol = xViewer.getRightClickSelectedColumn();
XViewerColumn xCol = (XViewerColumn) treeCol.getData();
TreeItem[] items = xViewer.getTree().getSelection();
if (items.length == 0) {
items = xViewer.getTree().getItems();
}
if (items.length == 0) {
XViewerLib.popup(XViewerText.get("error"), XViewerText.get("error.no_items.sum")); //$NON-NLS-1$ //$NON-NLS-2$
return;
}
Set<String> values = new HashSet<>();
for (TreeItem item : items) {
for (int x = 0; x < xViewer.getTree().getColumnCount(); x++) {
if (xViewer.getTree().getColumn(x).equals(treeCol)) {
values.add(((IXViewerLabelProvider) xViewer.getLabelProvider()).getColumnText(item.getData(), x));
}
}
}
String html = HtmlUtil.simplePage(HtmlUtil.textToHtml(CollectionsUtil.toString("\n", values))); //$NON-NLS-1$
new HtmlDialog(XViewerText.get("dialog.unique.title"), XViewerText.get("dialog.unique.prompt", xCol.getName()), //$NON-NLS-1$ //$NON-NLS-2$
html).open();
}
protected void handleHideColumn() {
TreeColumn insertTreeCol = xViewer.getRightClickSelectedColumn();
XViewerColumn insertXCol = (XViewerColumn) insertTreeCol.getData();
// System.out.println("Hide column " + insertXCol);
CustomizeData custData = xViewer.getCustomizeMgr().generateCustDataFromTable();
List<XViewerColumn> xCols = custData.getColumnData().getColumns();
List<XViewerColumn> newXCols = new ArrayList<>();
for (XViewerColumn currXCol : xCols) {
if (currXCol.equals(insertXCol)) {
currXCol.setShow(false);
}
newXCols.add(currXCol);
}
custData.getColumnData().setColumns(newXCols);
xViewer.getCustomizeMgr().loadCustomization(custData);
xViewer.refresh();
}
/**
* Renders the tree into a string.
*
* @param tree
* @return
*/
private String getText(TreeViewer tree){
StringBuilder builder = new StringBuilder();
List<String> properties = new ArrayList<String>();
for (TreeColumn column : getColumns(tree)){
properties.add(column.getText());
}
for (Object item : getItems(tree)) {
getText(tree, item, properties, builder, ""); //$NON-NLS-1$
}
return builder.toString();
}
private void performViewOrCopyCell(Option option) {
try {
MouseEvent event = xViewer.getMouseListener().getLeftClickEvent();
TreeItem item = xViewer.getItemUnderMouseClick(new Point(event.x, event.y));
TreeColumn column = xViewer.getColumnUnderMouseClick(new Point(event.x, event.y));
if (item != null && column != null) {
int columnNum = 0;
for (int x = 0; x < xViewer.getTree().getColumnCount(); x++) {
if (xViewer.getTree().getColumn(x).equals(column)) {
columnNum = x;
break;
}
}
ViewSelectedCellDataAction action = new ViewSelectedCellDataAction(xViewer, clipboard, option);
action.run(column, item, columnNum);
}
} catch (Exception ex) {
// do nothing
}
}
@Override
protected TreeViewer createViewer(final Composite parent, final AbstractColumnLayout columnLayout,
final int style) {
final TreeViewer viewer = new TreeViewer(parent, virual ? (style | VIRTUAL) : style);
final Tree tree = viewer.getTree();
tree.setLinesVisible(linesVisible);
tree.setHeaderVisible(headerVisible);
int columnIndex = 0;
for (final String columnLabel : columnLabels) {
final TreeViewerColumn viewerColumn = new TreeViewerColumn(viewer, NONE);
final TreeColumn column = viewerColumn.getColumn();
columnLayout.setColumnData(column, createColumnLayoutData(columnIndex));
column.setText(columnLabel);
column.setMoveable(moveable);
columnIndex++;
}
return viewer;
}
public void saveTo ( final IMemento memento )
{
if ( memento == null )
{
return;
}
{
final IMemento tableMemento = memento.createChild ( "tableCols" ); //$NON-NLS-1$
for ( int i = 0; i < this.viewer.getTree ().getColumnCount (); i++ )
{
final TreeColumn col = this.viewer.getTree ().getColumn ( i );
tableMemento.putInteger ( "col_" + i, col.getWidth () ); //$NON-NLS-1$
}
}
for ( final ListEntry entry : this.list.getItems () )
{
final Item item = entry.getItem ();
item.saveTo ( memento.createChild ( "item" ) ); //$NON-NLS-1$
}
}
private void makeUIClean() {
if (tree.isDisposed()) {
return;
}
TreeColumn column = tree.getColumn(0);
column.setText("Library");
tree.clearAll(true);
tree.setItemCount(0);
btConda.setEnabled(false);
if (btPipenv != null) {
btPipenv.setEnabled(false);
}
btPip.setEnabled(false);
if (checkUseConda != null) {
checkUseConda.setEnabled(false);
}
}
@Override
public void createPartControl(Composite parent) {
fTree = new Tree(parent, SWT.NONE);
TreeColumn nameCol = new TreeColumn(fTree, SWT.NONE, 0);
TreeColumn valueCol = new TreeColumn(fTree, SWT.NONE, 1);
nameCol.setText(Messages.TmfSynchronizationView_NameColumn);
valueCol.setText(Messages.TmfSynchronizationView_ValueColumn);
fTree.setItemCount(0);
fTree.setHeaderVisible(true);
nameCol.pack();
valueCol.pack();
ITmfTrace trace = TmfTraceManager.getInstance().getActiveTrace();
if (trace != null) {
traceSelected(new TmfTraceSelectedSignal(this, trace));
}
}
/**
* Creates the tree viewer.
*
* @param parent
* the parent composite
* @return the tree viewer
*/
protected CheckboxTreeViewer createTreeViewer(Composite parent) {
PatternFilter filter = new TreePatternFilter();
filter.setIncludeLeadingWildcard(true);
fTree = new FilteredCheckboxTree(parent, SWT.BORDER | SWT.MULTI, filter, true, false);
Tree tree = fTree.getViewer().getTree();
tree.setHeaderVisible(true);
for (String columnName : fColumnNames) {
TreeColumn column = new TreeColumn(tree, SWT.LEFT);
column.setText(columnName);
}
fTree.getViewer().setContentProvider(fContentProvider);
fTree.getViewer().setLabelProvider(fLabelProvider);
fTree.addCheckStateListener(new CheckStateListener());
fTree.getViewer().setComparator(fComparator);
if (fFilters != null) {
for (int i = 0; i != fFilters.size(); i++) {
fTree.getViewer().addFilter(fFilters.get(i));
}
}
fTree.getViewer().setInput(fInput);
return (CheckboxTreeViewer) fTree.getViewer();
}
private static TreeViewerColumn createTreeViewerColumn(TreeViewer viewer,
String title, int bound) {
final TreeViewerColumn viewerColumn = new TreeViewerColumn(viewer,
SWT.NONE);
final TreeColumn column = viewerColumn.getColumn();
column.setText(title);
column.setWidth(bound);
column.setResizable(true);
column.setMoveable(true);
return viewerColumn;
}
@Override
protected void sort(SelectionEvent e) {
// 1) Get tree column which fire this selection event
TreeColumn treeColumn = (TreeColumn) e.getSource();
// 2) Get the owner tree
Tree tree = treeColumn.getParent();
// 3) Modify the SWT Tree sort
tree.setSortColumn(treeColumn);
tree.setSortDirection(getSortDirection());
}
private void applyUsersColumnWidthSetting(){
TreeColumn[] treeColumns = table.getColumns();
String[] userColWidth = colWidth.split(",");
/*if (CoreHub.userCfg.get(PreferencePage.SAVE_COLUM_WIDTH, false)) {
String ucw = CoreHub.userCfg.get(PreferencePage.USR_COLUMN_WIDTH_SETTINGS, colWidth);
userColWidth = ucw.split(",");
}*/
for (int i = 0; i < treeColumns.length; i++) {
treeColumns[i].setWidth(Integer.parseInt(userColWidth[i]));
}
}
private void sortViewer(int propertyIdx, int direction){
TreeColumn column = viewer.getTree().getColumn(propertyIdx);
ovComparator.setColumn(propertyIdx);
ovComparator.setDirection(direction);
viewer.getTree().setSortDirection(ovComparator.getDirection());
viewer.getTree().setSortColumn(column);
viewer.refresh();
}
public int getCurrentColumnWidth(XViewerColumn xCol) {
for (TreeColumn col : getTree().getColumns()) {
if (col.getText().equals(xCol.getName())) {
return col.getWidth();
}
}
return 0;
}
/**
* Will be called when Alt-Left-Click is done within table cell
*
* @return true if handled
*/
public boolean handleAltLeftClick(TreeColumn treeColumn, TreeItem treeItem) {
if (treeColumn.getData() instanceof XViewerColumn) {
if ((XViewerColumn) treeColumn.getData() instanceof IAltLeftClickProvider) {
return ((IAltLeftClickProvider) (XViewerColumn) treeColumn.getData()).handleAltLeftClick(treeColumn,
treeItem);
}
}
return false;
}
/**
* Pack tree.
*
* @param p_tree the tree
*/
public void packTree(Tree p_tree) {
TreeColumn[] columns = p_tree.getColumns();
for (int i = 0; i < columns.length; i++) {
columns[i].pack();
}
}
public void updateTree(Tree tree, List<String[]> listed) {
TreeColumn column = tree.getColumn(0);
column.setText("Library (" + getPackageManagerName() + " | " + listed.size() + " found)");
for (String[] s : listed) {
TreeItem item = new TreeItem(tree, SWT.None);
item.setText(s);
}
}
public TreeColumn getColumnUnderMouseClick(Point point) throws ArrayIndexOutOfBoundsException {
Integer columnNumber = getColumnNumberUnderMouseClick(point);
if (columnNumber == null) {
return null;
}
return getTree().getColumn(columnNumber);
}
public void updateEditMenu(MenuManager mm) {
final Collection<TreeItem> selectedTreeItems = Arrays.asList(xViewer.getTree().getSelection());
Set<TreeColumn> editableColumns = ColumnMultiEditAction.getEditableTreeColumns(xViewer, selectedTreeItems);
MenuManager editMenuManager =
createEditMenuManager(xViewer, XViewerText.get("menu.edit.multi"), selectedTreeItems, editableColumns); //$NON-NLS-1$
mm.add(editMenuManager);
}
protected void handleAddComputedColumn() {
TreeColumn insertTreeCol = xViewer.getRightClickSelectedColumn();
XViewerColumn insertXCol = (XViewerColumn) insertTreeCol.getData();
XCheckFilteredTreeDialog dialog = new XCheckFilteredTreeDialog("", //$NON-NLS-1$
XViewerText.get("dialog.add_column.prompt", insertXCol.getName(), //$NON-NLS-1$
insertXCol.getId()),
patternFilter, new ArrayTreeContentProvider(), new XViewerColumnLabelProvider(), new XViewerColumnSorter());
Collection<XViewerComputedColumn> computedCols = xViewer.getComputedColumns(insertXCol);
if (computedCols.isEmpty()) {
XViewerLib.popup(XViewerText.get("error"), XViewerText.get("error.no_computed")); //$NON-NLS-1$ //$NON-NLS-2$
return;
}
dialog.setInput(computedCols);
if (dialog.open() == 0) {
// System.out.println("Selected " + dialog.getChecked());
// System.out.println("Selected column to add before " + insertXCol);
CustomizeData custData = xViewer.getCustomizeMgr().generateCustDataFromTable();
List<XViewerColumn> xCols = custData.getColumnData().getColumns();
List<XViewerColumn> newXCols = new ArrayList<>();
for (XViewerColumn currXCol : xCols) {
if (currXCol.equals(insertXCol)) {
for (Object obj : dialog.getChecked()) {
XViewerComputedColumn newComputedXCol = ((XViewerComputedColumn) obj).copy();
newComputedXCol.setShow(true);
newComputedXCol.setSourceXViewerColumn(insertXCol);
newComputedXCol.setXViewer(xViewer);
newXCols.add(newComputedXCol);
}
}
newXCols.add(currXCol);
}
custData.getColumnData().setColumns(newXCols);
xViewer.getCustomizeMgr().loadCustomization(custData);
xViewer.refresh();
}
}
protected void handleSumColumn() {
TreeColumn treeCol = xViewer.getRightClickSelectedColumn();
XViewerColumn xCol = (XViewerColumn) treeCol.getData();
if (!xCol.isSummable()) {
XViewerLib.popup("Invalid Selection for Sum",
String.format("Sum not available for column [%s]", xCol.getName()));
return;
}
TreeItem[] items = xViewer.getTree().getSelection();
if (items.length == 0) {
items = xViewer.getTree().getItems();
}
if (items.length == 0) {
XViewerLib.popup(XViewerText.get("error"), XViewerText.get("error.no_items.sum")); //$NON-NLS-1$ //$NON-NLS-2$
return;
}
List<String> values = new ArrayList<>();
for (TreeItem item : items) {
for (int x = 0; x < xViewer.getTree().getColumnCount(); x++) {
if (xViewer.getTree().getColumn(x).equals(treeCol)) {
values.add(((IXViewerLabelProvider) xViewer.getLabelProvider()).getColumnText(item.getData(), x));
}
}
}
XViewerLib.popup(XViewerText.get("menu.sum.prompt"), xCol.sumValues(values)); //$NON-NLS-1$
}
protected void handleAverageColumn() {
TreeColumn treeCol = xViewer.getRightClickSelectedColumn();
XViewerColumn xCol = (XViewerColumn) treeCol.getData();
if (!xCol.isSummable()) {
XViewerLib.popup("Invalid Selection for Average",
String.format("Average not available for column [%s]", xCol.getName()));
return;
}
TreeItem[] items = xViewer.getTree().getSelection();
if (items.length == 0) {
items = xViewer.getTree().getItems();
}
if (items.length == 0) {
XViewerLib.popup(XViewerText.get("error"), XViewerText.get("error.no_items.average")); //$NON-NLS-1$ //$NON-NLS-2$
return;
}
List<String> values = new ArrayList<>();
for (TreeItem item : items) {
for (int x = 0; x < xViewer.getTree().getColumnCount(); x++) {
if (xViewer.getTree().getColumn(x).equals(treeCol)) {
values.add(((IXViewerLabelProvider) xViewer.getLabelProvider()).getColumnText(item.getData(), x));
}
}
}
XViewerLib.popup(XViewerText.get("menu.sum.prompt"), xCol.averageValues(values)); //$NON-NLS-1$
}
@Override
public String getText(Object element) {
if (element instanceof TreeColumn) {
return ((TreeColumn) element).getText();
}
return XViewerText.get("error.unknown_element"); //$NON-NLS-1$
}
public List<XViewerColumn> getCurrentTableColumnsInOrder() {
List<XViewerColumn> columns = new ArrayList<>(15);
for (Integer index : xViewer.getTree().getColumnOrder()) {
TreeColumn treeCol = xViewer.getTree().getColumn(index);
XViewerColumn xCol = (XViewerColumn) treeCol.getData();
columns.add(xCol);
}
return columns;
}
public void setLeftHeader(final String title) {
leftTree.getTree().setHeaderVisible(true);
final TreeColumn columnName = new TreeColumn(leftTree.getTree(), SWT.NONE);
columnName.setText(title);
final TableLayout layout = new TableLayout();
layout.addColumnData(new ColumnWeightData(1, 300));
leftTree.getTree().setLayout(layout);
}
public int getColumnNumFromXViewerColumn(XViewerColumn xCol) {
for (Integer index : xViewer.getTree().getColumnOrder()) {
TreeColumn treeCol = xViewer.getTree().getColumn(index);
XViewerColumn treeXCol = (XViewerColumn) treeCol.getData();
if (xCol.equals(treeXCol)) {
return index;
}
}
return 0;
}
public Pair<XViewerColumn, Integer> getColumnNumFromXViewerColumn(String columnId) {
if (!xViewer.getTree().isDisposed()) {
for (Integer index : xViewer.getTree().getColumnOrder()) {
TreeColumn treeCol = xViewer.getTree().getColumn(index);
XViewerColumn treeXCol = (XViewerColumn) treeCol.getData();
if (treeXCol.getId().equals(columnId)) {
return new Pair<>(treeXCol, index);
}
}
}
return null;
}
@Override
public void controlResized(ControlEvent e) {
if (!enabled && initialized)
return;
double width = tree.getSize().x - 25;
if (width <= 0)
return;
TreeColumn[] columns = tree.getColumns();
int indexOfLargest = -1;
double max = 0;
double diff = 0;
for (int i = 0; i < columns.length; i++) {
if (i >= percents.length)
break;
double colWidth = percents[i] * width;
if (max < colWidth) {
max = colWidth;
indexOfLargest = i;
}
if (colWidth < minimum) {
colWidth = minimum;
diff += minimum - colWidth;
}
columns[i].setWidth((int) colWidth);
}
if (diff > 0) {
columns[indexOfLargest].setWidth((int) (max - diff));
}
initialized = true;
}
@Override
public int compare(Viewer viewer, Object e1, Object e2) {
if (e1 instanceof XViewerColumn) {
return getComparator().compare(((XViewerColumn) e1).getName(), ((XViewerColumn) e2).getName());
} else if ((e1 instanceof TreeColumn) && ((TreeColumn) e1).getData() instanceof XViewerColumn) {
return getComparator().compare(((XViewerColumn) ((TreeColumn) e1).getData()).toString(),
((XViewerColumn) ((TreeColumn) e2).getData()).toString());
} else {
return 0;
}
}
private static void copyHeaders(Tree tree, int levels, StringBuilder text) {
int cols = tree.getColumnCount();
if (cols < 1)
return;
text.append(tree.getColumn(0).getText());
for (int level = 0; level < levels; level++)
text.append('\t');
for (int col = 1; col < cols; col++) {
TreeColumn column = tree.getColumn(col);
text.append(column.getText());
if (col != (cols - 1))
text.append('\t');
}
text.append('\n');
}