List of usage examples for org.eclipse.jface.viewers TreeViewerColumn getColumn
public TreeColumn getColumn()
From source file:fr.inria.linuxtools.tmf.ui.viewers.statistics.TmfStatisticsViewer.java
License:Open Source License
/** * Initialize the content that will be drawn in this viewer * * @param parent/*from w ww . j a v a 2 s .c om*/ * The parent of the control to create */ protected void initContent(Composite parent) { final List<TmfBaseColumnData> columnDataList = getColumnDataProvider().getColumnData(); fTreeViewer = new TreeViewer(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); fTreeViewer.setContentProvider(new TmfTreeContentProvider()); fTreeViewer.getTree().setHeaderVisible(true); fTreeViewer.setUseHashlookup(true); // Creates the columns defined by the column data provider for (final TmfBaseColumnData columnData : columnDataList) { final TreeViewerColumn treeColumn = new TreeViewerColumn(fTreeViewer, columnData.getAlignment()); treeColumn.getColumn().setText(columnData.getHeader()); treeColumn.getColumn().setWidth(columnData.getWidth()); treeColumn.getColumn().setToolTipText(columnData.getTooltip()); // If is dummy column if (columnData == columnDataList.get(TmfBaseColumnDataProvider.StatsColumn.DUMMY.getIndex())) { treeColumn.getColumn().setResizable(false); } // A comparator is defined. if (columnData.getComparator() != null) { // Adds a listener on the columns header for sorting purpose. treeColumn.getColumn().addSelectionListener(new SelectionAdapter() { private ViewerComparator reverseComparator; @Override public void widgetSelected(SelectionEvent e) { // Initializes the reverse comparator once. if (reverseComparator == null) { reverseComparator = new ViewerComparator() { @Override public int compare(Viewer viewer, Object e1, Object e2) { return -1 * columnData.getComparator().compare(viewer, e1, e2); } }; } if (fTreeViewer.getTree().getSortDirection() == SWT.UP || fTreeViewer.getTree().getSortColumn() != treeColumn.getColumn()) { /* * Puts the descendant order if the old order was up * or if the selected column has changed. */ fTreeViewer.setComparator(columnData.getComparator()); fTreeViewer.getTree().setSortDirection(SWT.DOWN); } else { /* * Puts the ascendant ordering if the selected * column hasn't changed. */ fTreeViewer.setComparator(reverseComparator); fTreeViewer.getTree().setSortDirection(SWT.UP); } fTreeViewer.getTree().setSortColumn(treeColumn.getColumn()); } }); } treeColumn.setLabelProvider(columnData.getLabelProvider()); } // Handler that will draw the percentages and the bar charts. fTreeViewer.getTree().addListener(SWT.EraseItem, new Listener() { @Override public void handleEvent(Event event) { if (columnDataList.get(event.index).getPercentageProvider() != null) { TmfStatisticsTreeNode node = (TmfStatisticsTreeNode) event.item.getData(); // If node is hidden, exit immediately. if (TmfBaseColumnDataProvider.HIDDEN_FOLDER_LEVELS.contains(node.getName())) { return; } // Otherwise, get percentage and draw bar and text if applicable. double percentage = columnDataList.get(event.index).getPercentageProvider().getPercentage(node); // The item is selected. if ((event.detail & SWT.SELECTED) > 0) { // Draws our own background to avoid overwriting the bar. event.gc.fillRectangle(event.x, event.y, event.width, event.height); event.detail &= ~SWT.SELECTED; } // Drawing the percentage text // if events are present in top node // and the current node is not the top node // and if is total or partial events column. // If not, exit the method. if (!((event.index == TmfBaseColumnDataProvider.StatsColumn.TOTAL.getIndex() || event.index == TmfBaseColumnDataProvider.StatsColumn.PARTIAL.getIndex()) && node != node.getTop())) { return; } long eventValue = event.index == TmfBaseColumnDataProvider.StatsColumn.TOTAL.getIndex() ? node.getTop().getValues().getTotal() : node.getTop().getValues().getPartial(); if (eventValue != 0) { int oldAlpha = event.gc.getAlpha(); Color oldForeground = event.gc.getForeground(); Color oldBackground = event.gc.getBackground(); // Bar to draw if (percentage != 0) { /* * Draws a transparent gradient rectangle from the * color of foreground and background. */ int barWidth = (int) ((fTreeViewer.getTree().getColumn(event.index).getWidth() - 8) * percentage); event.gc.setAlpha(64); event.gc.setForeground(event.item.getDisplay().getSystemColor(SWT.COLOR_BLUE)); event.gc.setBackground( event.item.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND)); event.gc.fillGradientRectangle(event.x, event.y, barWidth, event.height, true); event.gc.drawRectangle(event.x, event.y, barWidth, event.height); // Restore old values event.gc.setBackground(oldBackground); event.gc.setAlpha(oldAlpha); event.detail &= ~SWT.BACKGROUND; } String percentageText = TmfStatisticsFormatter.toPercentageText(percentage); String absoluteNumberText = TmfStatisticsFormatter.toColumnData(node, TmfBaseColumnDataProvider.StatsColumn.getColumn(event.index)); if (event.width > event.gc.stringExtent(percentageText).x + event.gc.stringExtent(absoluteNumberText).x) { int textHeight = event.gc.stringExtent(percentageText).y; event.gc.setForeground(event.item.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY)); event.gc.drawText(percentageText, event.x, event.y + (event.height - textHeight) / 2, true); } // Restores old values event.gc.setForeground(oldForeground); } } } }); // Initializes the comparator parameters fTreeViewer.setComparator(columnDataList.get(0).getComparator()); fTreeViewer.getTree().setSortColumn(fTreeViewer.getTree().getColumn(0)); fTreeViewer.getTree().setSortDirection(SWT.DOWN); }
From source file:fr.inria.linuxtools.tmf.ui.viewers.tree.TmfTreeColumnData.java
License:Open Source License
/** * Create a TreeColumn with this column's data and adds it to a {@link Tree} * * @param treeViewer/*from ww w. j a v a 2 s . c o m*/ * The {@link TreeViewer} object to add the column to * @return The newly created {@link TreeViewerColumn} */ @NonNull public TreeViewerColumn createColumn(final TreeViewer treeViewer) { final TreeViewerColumn column = new TreeViewerColumn(treeViewer, getAlignment()); final TmfTreeColumnData columnData = this; column.getColumn().setText(getText()); if (getWidth() != -1) { column.getColumn().setWidth(getWidth()); } if (getTooltip() != null) { column.getColumn().setToolTipText(getTooltip()); } column.getColumn().setMoveable(isMovable()); /* Add the comparator to sort the column */ if (getComparator() != null) { column.getColumn().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (treeViewer.getTree().getSortDirection() == SWT.UP || treeViewer.getTree().getSortColumn() != column.getColumn()) { /* * Puts the descendant order if the old order was up * or if the selected column has changed. */ treeViewer.setComparator(columnData.getComparator()); treeViewer.getTree().setSortDirection(SWT.DOWN); } else { ViewerComparator reverseComparator; /* Initializes the reverse comparator. */ reverseComparator = new ViewerComparator() { @Override public int compare(Viewer viewer, Object e1, Object e2) { return -1 * columnData.getComparator().compare(viewer, e1, e2); } }; /* * Puts the ascendant ordering if the selected * column hasn't changed. */ treeViewer.setComparator(reverseComparator); treeViewer.getTree().setSortDirection(SWT.UP); } treeViewer.getTree().setSortColumn(column.getColumn()); } }); } return column; }
From source file:fr.inria.soctrace.framesoc.ui.piechart.view.StatisticsPieChartView.java
License:Open Source License
private void createColumns() { for (final StatisticsTableColumn col : StatisticsTableColumn.values()) { TreeViewerColumn elemsViewerCol = new TreeViewerColumn(tableTreeViewer, SWT.NONE); if (col.equals(StatisticsTableColumn.NAME)) { // add a filter for this column nameFilter = new StatisticsTableRowFilter(col); tableTreeViewer.addFilter(nameFilter); // the label provider puts also the image StatisticsTableRowLabelProvider p = new StatisticsTableRowLabelProvider(col); nameProviders.add(p);/*from ww w. jav a 2 s. co m*/ elemsViewerCol.setLabelProvider(p); } else if (col.equals(StatisticsTableColumn.VALUE)) { elemsViewerCol.setLabelProvider(new ValueLabelProvider(col, this)); } else { elemsViewerCol.setLabelProvider(new TableRowLabelProvider(col)); } final TreeColumn elemsTableCol = elemsViewerCol.getColumn(); elemsTableCol.setWidth(col.getWidth()); elemsTableCol.setText(col.getHeader()); elemsTableCol.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { comparator.setColumn(col); tableTreeViewer.getTree().setSortDirection(comparator.getDirection()); tableTreeViewer.getTree().setSortColumn(elemsTableCol); tableTreeViewer.refresh(); } }); } }
From source file:fr.openpeople.rdal.ide.view.traceability.navigator.AbstractShowHideOutlineCoverageActionDelegate.java
License:Open Source License
protected void setCoverageColumnVisible(final boolean pb_value) { final TreeViewer viewer = getTreeViewer(outlineView.getCurrentPage()); if (viewer != null) { final Tree tree = viewer.getTree(); if (pb_value) { if (tree.getColumnCount() != 2) { parentLayout = tree.getParent().getLayout(); final TreeColumnLayout colLayout = new TreeColumnLayoutFixed(); tree.getParent().setLayout(colLayout); final TreeColumn resourceColumn = new TreeColumn(tree, SWT.NONE); resourceColumn.setText("Resources"); resourceColumn.setWidth(150); final ColumnWeightData colDataRes = new ColumnWeightData(50, 200); colLayout.setColumnData(resourceColumn, colDataRes); resourceColumn.setWidth(colDataRes.minimumWidth); final TreeViewerColumn coverageViewerColumn = new TreeViewerColumn(viewer, SWT.NONE); coverageViewerColumn.setLabelProvider(new CoverageLabelProvider(coverageViewerColumn, viewer, RdalIdePlugin.getDefault().getDefinedCoverageListers(), RdalIdePlugin.getDefault().getExceptionHandler())); final TreeColumn coverageColumn = coverageViewerColumn.getColumn(); coverageColumn.setText("Verif. Rate"); final ColumnWeightData colDataCov = new ColumnWeightData(50, 80); colLayout.setColumnData(coverageColumn, colDataCov); // DB 30/05/2011 Set width now seems necessary. Change in JFace? coverageColumn.setWidth(colDataCov.minimumWidth); }/*from ww w.ja v a 2 s . c o m*/ } else { for (final TreeColumn column : tree.getColumns()) { column.dispose(); } tree.getParent().setLayout(parentLayout); } tree.setHeaderVisible(pb_value); tree.getParent().layout(); viewer.refresh(); } }
From source file:fr.openpeople.rdal.ide.view.traceability.navigator.CoverageLabelProvider.java
License:Open Source License
public CoverageLabelProvider(final TreeViewerColumn p_column2, final TreeViewer p_commonViewer, final Collection<ICoverageLister> p_coverageListers, final IExceptionHandler p_exceptionHandler) { column = p_column2.getColumn(); viewer = p_commonViewer;/*from w w w.j ava2s . co m*/ coverageListers = p_coverageListers; exceptionHandler = p_exceptionHandler; }
From source file:fr.openpeople.rdal.ide.view.traceability.navigator.ShowHideCommonNavigatorCoverageActionDelegate.java
License:Open Source License
private void setCoverageColumnVisible(final boolean pb_value) { final TreeViewer viewer = getTreeVIewer(); final Tree tree = viewer.getTree(); if (pb_value) { parentLayout = tree.getParent().getLayout(); final TreeColumnLayout colLayout = new TreeColumnLayout(); tree.getParent().setLayout(colLayout); final TreeColumn resourceColumn = new TreeColumn(tree, SWT.NONE); resourceColumn.setText("Resources"); final ColumnWeightData colDataRes = new ColumnWeightData(70, 200); colLayout.setColumnData(resourceColumn, colDataRes); final TreeViewerColumn coverageViewerColumn = new TreeViewerColumn(viewer, SWT.NONE); coverageViewerColumn.setLabelProvider(new CoverageLabelProvider(coverageViewerColumn, viewer, RdalIdePlugin.getDefault().getDefinedCoverageListers(), RdalIdePlugin.getDefault().getExceptionHandler())); final TreeColumn coverageColumn = coverageViewerColumn.getColumn(); coverageColumn.setText("Verif. Rate"); final ColumnWeightData colDataCov = new ColumnWeightData(30, 40); colLayout.setColumnData(coverageColumn, colDataCov); } else {//from w ww .ja v a 2 s .c om for (final TreeColumn column : tree.getColumns()) { column.dispose(); } tree.getParent().setLayout(parentLayout); } // This works for both Windows and Linux tree.setHeaderVisible(pb_value); tree.getParent().layout(); viewer.refresh(); // final TreeColumn coverageColumn = tree.getColumn( 1 ); // coverageColumn.setResizable( pb_value ); // Set width does not work for Linux platforms // coverageColumn.setWidth( pb_value ? 150 : 0 ); }
From source file:gov.nasa.arc.spife.core.plan.rules.view.PlanRulesTreeViewer.java
License:Open Source License
public PlanRulesTreeViewer(Composite parent) { super(parent, SWT.MULTI | SWT.FULL_SELECTION); addDoubleClickListener(new IDoubleClickListener() { @Override/* w w w . j a va 2 s . c om*/ public void doubleClick(DoubleClickEvent event) { if (event.getSelection() instanceof IStructuredSelection) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); Object element = selection.getFirstElement(); if (element != null) { // do nothing } } } }); Tree tree = getTree(); tree.setData("name", "PlanRuleView.ruleTree"); tree.setHeaderVisible(true); tree.addMouseMoveListener(new MouseMoveListener() { @Override public void mouseMove(MouseEvent e) { updateToolTip(e); } }); setAutoExpandLevel(3); for (PlanRulesColumnSpecification spec : PlanRulesColumnSpecification.values()) { TreeViewerColumn viewerColumn = new TreeViewerColumn(this, SWT.NONE); final TreeColumn column = viewerColumn.getColumn(); column.setData(PlanRulesColumnSpecification.class.getCanonicalName(), spec); column.setText(spec.getHeaderText()); int defaultWidth = spec.getDefaultWidth(); column.setWidth(defaultWidth); column.pack(); if (defaultWidth > column.getWidth()) { // ensure pack only makes columns wider than default column.setWidth(defaultWidth); } final CellLabelProvider labelProvider; try { labelProvider = spec.getLabelProviderClass().newInstance(); } catch (InstantiationException e) { Logger.getLogger(PlanRulesTreeViewer.class).error("failed to instantiate column", e); continue; } catch (IllegalAccessException e) { Logger.getLogger(PlanRulesTreeViewer.class).error("failed to instantiate column", e); continue; } viewerColumn.setLabelProvider(labelProvider); column.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { handleColumnSelected(labelProvider, column); } @Override public void widgetDefaultSelected(SelectionEvent e) { handleColumnSelected(labelProvider, column); } }); } addCheckStateListener(new ICheckStateListener() { @Override public void checkStateChanged(CheckStateChangedEvent event) { Object element = event.getElement(); refresh(element, true); Object object = getParentElement(element); while (object != null) { update(object, null); object = getParentElement(object); } } }); setComparator(new PlanRulesViewerComparator()); }
From source file:gov.nasa.ensemble.core.plan.advisor.view.PlanAdvisorTreeViewer.java
License:Open Source License
public PlanAdvisorTreeViewer(Composite parent) { super(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION); Tree tree = getTree();//w ww .jav a 2 s . c o m tree.setData("name", "PlanAdvisorView.violationTree"); tree.setLinesVisible(true); tree.setHeaderVisible(true); setAutoExpandLevel(1); TreeColumn sortColumn = null; ViolationViewerComparator violationViewerComparator = new ViolationViewerComparator(); for (PlanAdvisorColumnSpecification spec : PlanAdvisorViewPreferences.getVisibleColumns()) { TreeViewerColumn viewerColumn = new TreeViewerColumn(this, SWT.NONE); final TreeColumn column = viewerColumn.getColumn(); column.setData(PlanAdvisorColumnSpecification.class.getCanonicalName(), spec); column.setText(spec.getHeaderText()); column.setMoveable(true); int defaultWidth = spec.getDefaultWidth(); column.setWidth(defaultWidth); column.pack(); if (defaultWidth > column.getWidth()) { // ensure pack only makes columns wider than default column.setWidth(defaultWidth); } final ViolationKey violationKey = spec.getViolationKey(); ColumnLabelProvider labelProvider = new ViolationColumnLabelProvider(violationKey); viewerColumn.setLabelProvider(labelProvider); if (violationKey == violationViewerComparator.getKey()) { sortColumn = column; } column.addControlListener(new ControlListener() { @Override public void controlMoved(ControlEvent e) { updateOrder(); } @Override public void controlResized(ControlEvent e) { // ignore resizes for now } }); column.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { handleColumnSelected(violationKey, column); } @Override public void widgetDefaultSelected(SelectionEvent e) { handleColumnSelected(violationKey, column); } }); } setComparator(violationViewerComparator); tree.setSortColumn(sortColumn); tree.setSortDirection(SWT.DOWN); tree.addListener(SWT.PaintItem, new PaintListener(tree)); }
From source file:gov.redhawk.ide.codegen.ui.internal.GenerateFilesDialog.java
License:Open Source License
@Override protected Control createDialogArea(final Composite parent) { final Composite container = (Composite) super.createDialogArea(parent); final GridLayout gridLayout = new GridLayout(2, false); container.setLayout(gridLayout);/* w ww .j av a 2 s.c o m*/ boolean warning = false; for (FileStatus s : this.fileStatus) { if (!s.getDoItDefault() && s.getType() != FileStatus.Type.USER) { warning = true; break; } } if (warning) { final Image image = parent.getDisplay().getSystemImage(SWT.ICON_WARNING); final Label warningLabel = new Label(container, SWT.NONE); warningLabel.setImage(image); warningLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false)); final Label label = new Label(container, SWT.NONE); label.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false)); label.setText("Selected files will be generated and their current contents will be lost.\n" + "Unselected files have had their content modified since last generation."); } else { final Image image = parent.getDisplay().getSystemImage(SWT.ICON_INFORMATION); final Label warningLabel = new Label(container, SWT.NONE); warningLabel.setImage(image); warningLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false)); final Label label = new Label(container, SWT.NONE); label.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false)); label.setText("Select files to be generated:"); } Composite treeContainer = new Composite(container, SWT.None); GridData data = new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1); data.widthHint = 600; treeContainer.setLayoutData(data); TreeColumnLayout layout = new TreeColumnLayout(); treeContainer.setLayout(layout); this.treeViewer = new CheckboxTreeViewer(treeContainer, SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL); this.treeViewer.setContentProvider(new FileStatusContentProvider()); this.treeViewer.getTree().setLinesVisible(true); this.treeViewer.getTree().setHeaderVisible(true); TreeViewerColumn column = new TreeViewerColumn(this.treeViewer, SWT.None); column.getColumn().setResizable(true); column.getColumn().setMoveable(false); column.getColumn().setText("File Name"); column.setLabelProvider(new TreeColumnViewerLabelProvider(new LabelProvider())); layout.setColumnData(column.getColumn(), new ColumnWeightData(80, 80, true)); column = new TreeViewerColumn(this.treeViewer, SWT.None); column.getColumn().setResizable(true); column.getColumn().setMoveable(false); column.getColumn().setText("Action"); column.setLabelProvider(new TreeColumnViewerLabelProvider(new LabelProvider() { @Override public String getText(Object element) { return ((FileStatus) element).getDesiredAction().toString(); } })); layout.setColumnData(column.getColumn(), new ColumnWeightData(10, 80, true)); column = new TreeViewerColumn(this.treeViewer, SWT.None); column.getColumn().setResizable(true); column.getColumn().setMoveable(false); column.getColumn().setText("Type"); column.setLabelProvider(new TreeColumnViewerLabelProvider(new LabelProvider() { @Override public String getText(Object element) { return ((FileStatus) element).getType().toString(); } })); layout.setColumnData(column.getColumn(), new ColumnWeightData(10, 80, true)); this.treeViewer.setCheckStateProvider(new ICheckStateProvider() { @Override public boolean isGrayed(Object element) { return false; } @Override public boolean isChecked(Object element) { if (element instanceof FileStatus) { return ((FileStatus) element).isDoIt(); } return false; } }); this.treeViewer.addCheckStateListener(new ICheckStateListener() { @Override public void checkStateChanged(CheckStateChangedEvent event) { FileStatus s = (FileStatus) event.getElement(); if (checkFile(event.getChecked(), s)) { s.setDoIt(event.getChecked()); } treeViewer.refresh(); } }); this.treeViewer.addFilter(new ViewerFilter() { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { if (((FileStatus) element).getType() == FileStatus.Type.USER) { return showUserFiles; } return true; } }); this.treeViewer.setComparator(new ViewerComparator()); this.treeViewer.setInput(this.fileStatus); Composite panel = new Composite(container, SWT.NO_FOCUS); panel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 2, 1)); panel.setLayout(new RowLayout()); final Button restore = new Button(panel, SWT.PUSH); restore.setText("Defaults"); restore.setToolTipText("Clicking this will restore the selection to the default set of files"); restore.addListener(SWT.Selection, new Listener() { @Override public void handleEvent(final Event event) { selectDefaults(); } }); final Button selectAll = new Button(panel, SWT.PUSH); selectAll.setText("Select All"); selectAll.setToolTipText("Clicking this will select all files"); selectAll.addListener(SWT.Selection, new Listener() { @Override public void handleEvent(final Event event) { selectAllFiles(); } }); final Button clear = new Button(panel, SWT.PUSH); clear.setText("Clear"); clear.setToolTipText("Clicking this will deselect all files"); clear.addListener(SWT.Selection, new Listener() { @Override public void handleEvent(final Event event) { GenerateFilesDialog.this.clear(); } }); panel = new Composite(container, SWT.NO_FOCUS); panel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false, 2, 1)); panel.setLayout(new GridLayout(1, false)); Button showUserButton = new Button(panel, SWT.CHECK); showUserButton.setText("Show User Files"); showUserButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { showUserFiles = !showUserFiles; treeViewer.refresh(); } }); final Button alwaysButton = new Button(panel, SWT.CHECK); alwaysButton.setText("Always Generate Default Files Without Asking"); final IPreferenceStore store = RedhawkCodegenUiActivator.getDefault().getPreferenceStore(); alwaysButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { alwaysButton.getSelection(); store.setValue(CodegenPreferenceConstants.P_ALWAYS_GENERATE_DEFAULTS, alwaysButton.getSelection()); } }); alwaysButton.setSelection(store.getBoolean(CodegenPreferenceConstants.P_ALWAYS_GENERATE_DEFAULTS)); return container; }
From source file:gov.redhawk.ide.ui.wizard.RedhawkImportWizardPage2.java
License:Open Source License
private void createColumns(Composite workArea, final TreeViewer viewer) { TreeViewerColumn nameColumn = new TreeViewerColumn(viewer, SWT.NONE); nameColumn.getColumn().setWidth(300); nameColumn.getColumn().setText("Project: "); nameColumn.setLabelProvider(new ColumnLabelProvider() { @Override//from ww w. j a v a2s . com public String getText(Object element) { if (element instanceof ProjectRecord) { ProjectRecord project = (ProjectRecord) element; String dir = project.projectSystemFile.getParentFile().getAbsolutePath(); return NLS.bind(DataTransferMessages.WizardProjectsImportPage_projectLabel, project.getProjectName(), dir); } if (element instanceof ImplWrapper) { ImplWrapper implWrapper = (ImplWrapper) element; return implWrapper.getImpl().getId() + " (implementation)"; } return ""; } }); // Get a String array of accepted template id's CodeGeneratorTemplatesRegistry reg = new CodeGeneratorTemplatesRegistry(); ITemplateDesc[] templateDescriptions = reg.getTemplates(); final String[] templates = new String[templateDescriptions.length]; for (int i = 0; i < templateDescriptions.length; i++) { templates[i] = templateDescriptions[i].getId(); } final TreeViewerColumn templateColumn = new TreeViewerColumn(viewer, SWT.NONE); templateColumn.getColumn().setWidth(500); templateColumn.getColumn().setText("Template: "); templateColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { if (element instanceof ImplWrapper) { ImplWrapper implWrapper = (ImplWrapper) element; return implWrapper.getTemplate(); } else { return ""; } } }); templateColumn.setEditingSupport(new EditingSupport(viewer) { @Override protected boolean canEdit(Object element) { return true; } @Override protected CellEditor getCellEditor(Object element) { ComboBoxCellEditor cellEditor = new ComboBoxCellEditor(viewer.getTree(), templates, SWT.READ_ONLY); return cellEditor; } @Override protected Object getValue(Object element) { if (element instanceof ImplWrapper) { ImplWrapper implWrapper = (ImplWrapper) element; String templateID = implWrapper.getTemplate(); int index = Arrays.asList(templates).indexOf(templateID); return index; } else { return 0; } } @Override protected void setValue(Object element, Object value) { if (element instanceof ImplWrapper) { ImplWrapper implWrapper = (ImplWrapper) element; String template = templates[(Integer) value]; implWrapper.setTemplate(template); viewer.update(element, null); } } }); }