List of usage examples for org.eclipse.jface.viewers TableViewerColumn TableViewerColumn
public TableViewerColumn(TableViewer viewer, TableColumn column)
From source file:com.aptana.theme.preferences.ThemePreferencePage.java
License:Open Source License
private void createTokenEditTable(Composite composite) { // FIXME allow drag and drop to sort items in the table! Composite comp = new Composite(composite, SWT.NONE); GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); gridData.heightHint = 200;//from w w w. ja v a 2s .c o m comp.setLayoutData(gridData); TableColumnLayout layout = new TableColumnLayout(); comp.setLayout(layout); final Table table = new Table(comp, SWT.FULL_SELECTION | SWT.SINGLE | SWT.V_SCROLL); table.setHeaderVisible(true); table.setLinesVisible(false); // Hack to force a specific row height table.addListener(SWT.MeasureItem, new Listener() { public void handleEvent(Event event) { event.height = ROW_HEIGHT; } }); // Hack to draw the underline in first column table.addListener(SWT.PaintItem, new Listener() { public void handleEvent(Event event) { if ((event.detail & SWT.FOREGROUND) != 0 && event.index == 0) { TableItem item = (TableItem) event.item; ThemeRule token = (ThemeRule) item.getData(); if ((token.getTextAttribute().style & TextAttribute.UNDERLINE) != 0) { int y = event.getBounds().y + event.getBounds().height - 6; int x2 = event.getBounds().width; Color oldFG = event.gc.getForeground(); Color fg; RGBa rgb = token.getTextAttribute().foreground; if (rgb == null) { fg = ThemePlugin.getDefault().getColorManager().getColor(getTheme().getForeground()); } else { fg = ThemePlugin.getDefault().getColorManager().getColor(rgb.toRGB()); } event.gc.setForeground(fg); event.gc.drawLine(0, y, x2, y); event.gc.setForeground(oldFG); event.detail &= ~SWT.FOREGROUND; } } } }); Listener selectionOverride = new Listener() { public void handleEvent(Event event) { if ((event.detail & SWT.SELECTED) != 0) { Scrollable scrollable = (Scrollable) event.widget; Rectangle clientArea = scrollable.getClientArea(); int clientWidth = clientArea.width; GC gc = event.gc; Color oldBackground = gc.getBackground(); gc.setBackground(ThemePlugin.getDefault().getColorManager() .getColor(getTheme().getSelectionAgainstBG())); gc.fillRectangle(clientArea.x, event.y, clientWidth, event.height); gc.setBackground(oldBackground); event.detail &= ~SWT.SELECTED; event.detail &= ~SWT.BACKGROUND; // force foreground color. Otherwise on dark themes we get black FG (all the time on Win, on // non-focus for Mac) gc.setForeground( ThemePlugin.getDefault().getColorManager().getColor(getTheme().getForeground())); } } }; table.addListener(SWT.EraseItem, selectionOverride); tableViewer = new TableViewer(table); tableViewer.setContentProvider(new IStructuredContentProvider() { private Theme theme; public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { this.theme = (Theme) newInput; } public void dispose() { } public Object[] getElements(Object inputElement) { return theme.getTokens().toArray(); } }); tableViewer.setLabelProvider(new TokenLabelProvider()); tableViewer.getTable().addMouseListener(new MouseAdapter() { @Override public void mouseDown(MouseEvent e) { Table table = tableViewer.getTable(); // If user is clicking in the FG/BG column when it's empty, pop open a color dialog int fgColX = table.getColumn(0).getWidth(); // scope col width int fgColWidth = table.getColumn(1).getWidth(); // fg col width int bgColX = fgColX + fgColWidth; int bgColWidth = table.getColumn(2).getWidth() + 2; if (e.x > fgColX && e.x < (fgColX + fgColWidth)) { // user clicked in FG column ColorDialog colorDialog = new ColorDialog(table.getShell()); colorDialog.setRGB(getTheme().getForeground()); RGB newRGB = colorDialog.open(); if (newRGB == null) { return; // no color selected, don't change a thing! } TableItem tableItem = table.getItem(new Point(e.x, e.y)); ThemeRule token = (ThemeRule) tableItem.getData(); int index = table.indexOf(tableItem); getTheme().updateRule(index, token.updateFG(new RGBa(newRGB))); } else if (e.x > bgColX && e.x < (bgColX + bgColWidth)) // is user clicking in the BG column? { ColorDialog colorDialog = new ColorDialog(table.getShell()); colorDialog.setRGB(getTheme().getBackground()); RGB newRGB = colorDialog.open(); if (newRGB == null) { return; // no color selected, don't change a thing! } TableItem tableItem = table.getItem(new Point(e.x, e.y)); ThemeRule token = (ThemeRule) tableItem.getData(); int index = table.indexOf(tableItem); getTheme().updateRule(index, token.updateBG(new RGBa(newRGB))); } else { return; } tableViewer.refresh(); addCustomTableEditorControls(); } }); TableViewerColumn column = new TableViewerColumn(tableViewer, SWT.NONE); final TableColumn tokenName = column.getColumn(); tokenName.setText("Element"); //$NON-NLS-1$ layout.setColumnData(tokenName, new ColumnWeightData(100, true)); column.setLabelProvider(new ColumnLabelProvider() { public String getText(Object element) { ThemeRule token = (ThemeRule) element; return token.getName(); } public Color getForeground(Object element) { ThemeRule token = (ThemeRule) element; // TODO How do we handle alpha? RGBa fg = token.getTextAttribute().foreground; if (fg == null) return ThemePlugin.getDefault().getColorManager().getColor(getTheme().getForeground()); return ThemePlugin.getDefault().getColorManager().getColor(fg.toRGB()); } public Color getBackground(Object element) { ThemeRule token = (ThemeRule) element; // TODO How do we handle alpha? RGBa bg = token.getTextAttribute().background; if (bg == null) return ThemePlugin.getDefault().getColorManager().getColor(getTheme().getBackground()); return ThemePlugin.getDefault().getColorManager().getColor(bg.toRGB()); } public Font getFont(Object element) { ThemeRule token = (ThemeRule) element; if (token.getTextAttribute().style == 0) // TODO Limit to only checking for bold or italic return fFont; return lazyFont(fFont, token.getTextAttribute().style); } }); column.setEditingSupport(new EditingSupport(tableViewer) { private TextCellEditor cellEditor; @Override protected void setValue(Object element, Object value) { ThemeRule token = (ThemeRule) element; String newName = (String) value; if (newName.equals(token.getName())) { return; } // update the token in the theme int index = getTheme().getTokens().indexOf(token); getTheme().updateRule(index, token.setName(newName)); tableViewer.refresh(); } @Override protected Object getValue(Object element) { ThemeRule token = (ThemeRule) element; return token.getName(); } @Override protected CellEditor getCellEditor(Object element) { ThemeRule token = (ThemeRule) element; cellEditor = new TextCellEditor(table); cellEditor.setValue(token.getName()); return cellEditor; } @Override protected boolean canEdit(Object element) { return true; } }); column = new TableViewerColumn(tableViewer, SWT.NONE); final TableColumn foreground = column.getColumn(); foreground.setResizable(false); foreground.setText(Messages.ThemePreferencePage_ForegroundColumnLabel); layout.setColumnData(foreground, new ColumnPixelData(30, false)); column.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { return ""; //$NON-NLS-1$ } }); column = new TableViewerColumn(tableViewer, SWT.NONE); final TableColumn background = column.getColumn(); background.setResizable(false); background.setText(Messages.ThemePreferencePage_BackgroundColumnLabel); layout.setColumnData(background, new ColumnPixelData(30, false)); column.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { return ""; //$NON-NLS-1$ } }); final TableColumn fontStyle = new TableColumn(table, SWT.NONE); fontStyle.setResizable(false); fontStyle.setText(Messages.ThemePreferencePage_FontStyleColumnLabel); layout.setColumnData(fontStyle, new ColumnPixelData(75, false)); Composite editTokenList = new Composite(composite, SWT.NONE); editTokenList.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); GridLayout grid = new GridLayout(2, false); editTokenList.setLayout(grid); Composite buttons = new Composite(editTokenList, SWT.NONE); GridLayout buttonsLayout = new GridLayout(2, true); buttonsLayout.marginWidth = 0; buttonsLayout.horizontalSpacing = 0; buttons.setLayout(buttonsLayout); fAddTokenButton = new Button(buttons, SWT.PUSH | SWT.FLAT); fAddTokenButton.setBounds(0, 0, 16, 16); fAddTokenButton.setLayoutData(new GridData(GridData.FILL_BOTH)); fAddTokenButton.setText(Messages.ThemePreferencePage_AddTokenLabel); fAddTokenButton.addSelectionListener(this); fRemoveTokenButton = new Button(buttons, SWT.PUSH | SWT.FLAT); fRemoveTokenButton.setLayoutData(new GridData(GridData.FILL_BOTH)); fRemoveTokenButton.setText(Messages.ThemePreferencePage_RemoveTokenLabel); fRemoveTokenButton.addSelectionListener(this); Composite textField = new Composite(editTokenList, SWT.NONE); textField.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); textField.setLayout(new GridLayout(2, false)); Label addTokenLabel = new Label(textField, SWT.RIGHT); addTokenLabel.setText(Messages.ThemePreferencePage_ScopeSelectoreLabel); fScopeText = new Combo(textField, SWT.SINGLE | SWT.BORDER); GridData data = new GridData(GridData.FILL_HORIZONTAL); fScopeText.setLayoutData(data); for (String preset : tokenTypeNames) { fScopeText.add(preset); } table.addSelectionListener(this); fScopeSelectorDecoration = new ControlDecoration(fScopeText, SWT.RIGHT); fScopeText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { // Update the scope selector for the current token! TableItem[] selection = table.getSelection(); if (selection == null || selection.length == 0) { return; } TableItem item = selection[0]; ThemeRule rule = (ThemeRule) item.getData(); String scopeSelectorText = fScopeText.getText(); // Validate the value isn't a duplicate! ScopeSelector selector = new ScopeSelector(scopeSelectorText); ThemeRule match = getTheme().getRuleForSelector(selector); if (scopeSelectorText.length() > 0 && match != null && match != rule) { FieldDecoration dec = FieldDecorationRegistry.getDefault() .getFieldDecoration(FieldDecorationRegistry.DEC_WARNING); fScopeSelectorDecoration.setImage(dec.getImage()); fScopeSelectorDecoration.setDescriptionText(MessageFormat .format(Messages.ThemePreferencePage_DuplicateScopeSelectorRules, match.getName())); fScopeText.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_RED)); } else { fScopeSelectorDecoration.setDescriptionText(null); fScopeSelectorDecoration.setImage(null); fScopeText.setForeground(null); } int index = table.indexOf(item); ThemeRule newRule = rule.setScopeSelector(selector); getTheme().updateRule(index, newRule); item.setData(newRule); } }); addDNDToTable(table); }
From source file:com.archimatetool.editor.preferences.DiagramFiguresPreferenceTab.java
License:Open Source License
private void createTable(Composite parent) { fTableViewer = new TableViewer(parent, SWT.BORDER); TableColumnLayout layout = (TableColumnLayout) parent.getLayout(); TableViewerColumn column = new TableViewerColumn(fTableViewer, SWT.NONE); layout.setColumnData(column.getColumn(), new ColumnWeightData(100, false)); fTableViewer.setContentProvider(new IStructuredContentProvider() { @Override/*from w w w. j a va2s . c om*/ public void dispose() { } @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } @Override public Object[] getElements(Object inputElement) { return ((List<?>) inputElement).toArray(); } }); class TableLabelProvider extends LabelProvider { @Override public Image getImage(Object element) { return ((ImageChoice) element).getImage(); } @Override public String getText(Object element) { return ((ImageChoice) element).name; } } fTableViewer.setLabelProvider(new TableLabelProvider()); fTableViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { ImageChoice ic = (ImageChoice) ((IStructuredSelection) event.getSelection()).getFirstElement(); if (ic != null) { ic.flip(); fTableViewer.update(ic, null); } } }); }
From source file:com.archimatetool.templates.dialog.TemplatesTableViewer.java
License:Open Source License
/** * Set up the columns/*from w w w .j av a 2 s. com*/ */ private void setColumns() { Table table = getTable(); table.setHeaderVisible(false); // Use layout from parent container TableColumnLayout layout = (TableColumnLayout) getControl().getParent().getLayout(); TableViewerColumn column = new TableViewerColumn(this, SWT.NONE); layout.setColumnData(column.getColumn(), new ColumnWeightData(100, false)); }
From source file:com.astra.ses.spell.gui.dialogs.controls.DictVariablesTable.java
License:Open Source License
/*************************************************************************** * /*from w w w . ja v a 2 s . co m*/ **************************************************************************/ private void createColumns() { if (m_simpleTable) { for (int index = 0; index < DictVariablesSimpleTableItems.values().length; index++) { DictVariablesSimpleTableItems item = DictVariablesSimpleTableItems.index(index); TableViewerColumn col = new TableViewerColumn(this, SWT.NONE); col.getColumn().setText(item.title); if (item.width > 0) col.getColumn().setWidth(item.width); col.getColumn().setResizable(true); col.getColumn().setMoveable(false); if (item.center) col.getColumn().setAlignment(SWT.CENTER); col.getColumn().addSelectionListener(getColumnSelectionAdapter(col.getColumn(), index)); } } else { for (int index = 0; index < DictVariablesTableItems.values().length; index++) { DictVariablesTableItems item = DictVariablesTableItems.index(index); TableViewerColumn col = new TableViewerColumn(this, SWT.NONE); if (!m_readOnly) { col.setEditingSupport(new VariableEditSupport(this, item)); } col.getColumn().setText(item.title); if (item.width > 0) col.getColumn().setWidth(item.width); col.getColumn().setResizable(true); col.getColumn().setMoveable(false); if (item.center) col.getColumn().setAlignment(SWT.CENTER); col.getColumn().addSelectionListener(getColumnSelectionAdapter(col.getColumn(), index)); } } }
From source file:com.astra.ses.spell.gui.shared.views.controls.SharedVariablesTableViewer.java
License:Open Source License
private void createColumns(ISharedScope table, boolean monitoringMode) { TableViewerColumn colName = new TableViewerColumn(this, SWT.NONE); colName.getColumn().setText("Variable"); colName.getColumn().setWidth(300);/* w ww .ja v a 2s .co m*/ colName.getColumn().setResizable(true); colName.getColumn().setMoveable(false); TableViewerColumn colValue = new TableViewerColumn(this, SWT.NONE); colValue.getColumn().setText("Value"); colValue.getColumn().setWidth(350); colValue.getColumn().setResizable(true); colValue.getColumn().setMoveable(false); if (!monitoringMode) colValue.setEditingSupport(new SharedVariableEditingSupport(this, table)); }
From source file:com.astra.ses.spell.gui.views.controls.master.CurrentExecutorsTable.java
License:Open Source License
/*************************************************************************** * //from ww w .j a v a 2 s . com **************************************************************************/ private void createColumns() { for (int index = 0; index < CurrentExecutorsTableItems.values().length; index++) { CurrentExecutorsTableItems item = CurrentExecutorsTableItems.index(index); TableViewerColumn col = new TableViewerColumn(this, SWT.NONE); col.getColumn().setText(item.title); if (item.width > 0) col.getColumn().setWidth(item.width); col.getColumn().setResizable(true); col.getColumn().setMoveable(false); if (item.center) col.getColumn().setAlignment(SWT.CENTER); } }
From source file:com.astra.ses.spell.gui.views.controls.master.recovery.RecoveryTable.java
License:Open Source License
/*************************************************************************** * //from www .j av a 2 s.co m **************************************************************************/ private void createColumns() { for (int index = 0; index < RecoveryFilesTableItems.values().length; index++) { RecoveryFilesTableItems item = RecoveryFilesTableItems.index(index); TableViewerColumn col = new TableViewerColumn(this, SWT.NONE); col.getColumn().setText(item.title); if (item.width > 0) col.getColumn().setWidth(item.width); col.getColumn().setResizable(true); col.getColumn().setMoveable(false); if (item.center) col.getColumn().setAlignment(SWT.CENTER); } }
From source file:com.bdaum.zoom.gps.internal.dialogs.TrackpointDialog.java
License:Open Source License
public void createViewer(Composite comp) { viewer = new TableViewer(comp, SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.MULTI); GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true); layoutData.widthHint = 410;//from w w w. ja v a 2 s . c om layoutData.heightHint = 500; viewer.getControl().setLayoutData(layoutData); viewer.getTable().setLinesVisible(true); viewer.getTable().setHeaderVisible(true); viewer.setContentProvider(ArrayContentProvider.getInstance()); TableViewerColumn col1 = new TableViewerColumn(viewer, SWT.NONE); col1.getColumn().setWidth(170); col1.getColumn().setText(Messages.TrackpointDialog_start); col1.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { if (element instanceof SubTrack) return formatDate(((SubTrack) element).getStart()); return super.getText(element); } }); TableViewerColumn col2 = new TableViewerColumn(viewer, SWT.NONE); col2.getColumn().setWidth(170); col2.getColumn().setText(Messages.TrackpointDialog_end); col2.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { if (element instanceof SubTrack) return formatDate(((SubTrack) element).getEnd()); return super.getText(element); } }); TableViewerColumn col3 = new TableViewerColumn(viewer, SWT.NONE); col3.getColumn().setWidth(70); col3.getColumn().setAlignment(SWT.RIGHT); col3.getColumn().setText(Messages.TrackpointDialog_duration); col3.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { if (element instanceof SubTrack) { SubTrack subTrack = (SubTrack) element; return formatTime((subTrack.getEnd() - subTrack.getStart() + 30000L) / 60000L); } return super.getText(element); } }); viewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { updateButtons(); updateMap(); } }); viewer.setInput(subtracks); }
From source file:com.bdaum.zoom.gps.internal.preferences.GpsPreferencePage.java
License:Open Source License
private void createModeGroup(Composite composite) { CGroup group = UiUtilities.createGroup(composite, 1, Messages.getString("GpsPreferencePage.mode")); //$NON-NLS-1$ editButton = WidgetFactory.createCheckButton(group, Messages.getString("GpsPreferencePage.edit_trackpoints"), //$NON-NLS-1$ null);//ww w .ja va 2 s . c om tagButton = WidgetFactory.createCheckButton(group, Messages.getString("GpsPreferencePage.Overwrite_tags"), //$NON-NLS-1$ null); waypointButton = WidgetFactory.createCheckButton(group, Messages.getString("GpsPreferencePage.use_waypoints"), //$NON-NLS-1$ null); altitudeButton = WidgetFactory.createCheckButton(group, Messages.getString("GpsPreferencePage.Update_altitude"), //$NON-NLS-1$ null); new Label(group, SWT.NONE).setText(Messages.getString("GpsPreferencePage.nogo_areas")); //$NON-NLS-1$ Composite viewerGroup = new Composite(group, SWT.NONE); viewerGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); GridLayout layout = new GridLayout(2, false); layout.marginHeight = 0; viewerGroup.setLayout(layout); nogoViewer = new TableViewer(viewerGroup, SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL); GridData layoutData = new GridData(200, 100); layoutData.horizontalIndent = 16; nogoViewer.getControl().setLayoutData(layoutData); TableViewerColumn col1 = new TableViewerColumn(nogoViewer, SWT.NONE); col1.getColumn().setWidth(200); col1.setLabelProvider(ZColumnLabelProvider.getDefaultInstance()); nogoViewer.setContentProvider(ArrayContentProvider.getInstance()); nogoViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { updateTableButtons(); } }); Composite buttonGroup = new Composite(viewerGroup, SWT.NONE); buttonGroup.setLayoutData(new GridData(SWT.END, SWT.FILL, false, true)); buttonGroup.setLayout(new GridLayout(1, false)); addButton = new Button(buttonGroup, SWT.PUSH); addButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false)); addButton.setText(Messages.getString("GpsPreferencePage.add")); //$NON-NLS-1$ addButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { EditNogoDialog dialog = new EditNogoDialog(getShell(), null); if (dialog.open() == EditNogoDialog.OK) { GeoArea area = dialog.getArea(); nogoAreas.add(area); nogoViewer.add(area); nogoViewer.setSelection(new StructuredSelection(area), true); updateTableButtons(); } } }); editNogoButton = new Button(buttonGroup, SWT.PUSH); editNogoButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false)); editNogoButton.setText(Messages.getString("GpsPreferencePage.edit")); //$NON-NLS-1$ editNogoButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { GeoArea area = (GeoArea) nogoViewer.getStructuredSelection().getFirstElement(); EditNogoDialog dialog = new EditNogoDialog(getShell(), area); if (dialog.open() == EditNogoDialog.OK) nogoViewer.update(area, null); } }); deleteButton = new Button(buttonGroup, SWT.PUSH); deleteButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false)); deleteButton.setText(Messages.getString("GpsPreferencePage.remove")); //$NON-NLS-1$ deleteButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { GeoArea area = (GeoArea) nogoViewer.getStructuredSelection().getFirstElement(); nogoAreas.remove(area); nogoViewer.remove(area); updateButtons(); } }); }
From source file:com.bdaum.zoom.peer.internal.preferences.PeerPreferencePage.java
License:Open Source License
@SuppressWarnings("unused") private Control createIncomingGroup(final CTabFolder parent) { Composite comp = new Composite(parent, SWT.NONE); comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); comp.setLayout(new GridLayout(1, false)); Composite innerComp = new Composite(comp, SWT.NONE); GridLayout layout = new GridLayout(2, false); layout.marginWidth = 0;//ww w .j av a 2 s . c o m layout.marginHeight = 20; innerComp.setLayout(layout); innerComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); Label label = new Label(innerComp, SWT.WRAP); label.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 2, 1)); label.setText(Messages.PeerPreferencePage_incoming_msg); incomingViewer = new TableViewer(innerComp, SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION); incomingViewer.getTable().setLinesVisible(true); incomingViewer.getTable().setHeaderVisible(true); incomingViewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); final TableViewerColumn col1 = new TableViewerColumn(incomingViewer, SWT.NONE); col1.getColumn().setWidth(250); col1.getColumn().setText(Messages.PeerPreferencePage_calling_peer); col1.setLabelProvider(ZColumnLabelProvider.getDefaultInstance()); final TableViewerColumn col2 = new TableViewerColumn(incomingViewer, SWT.NONE); col2.getColumn().setWidth(250); col2.getColumn().setText(Messages.PeerPreferencePage_last_access); col2.setLabelProvider(new ZColumnLabelProvider() { @Override public String getText(Object element) { if (element instanceof PeerDefinition) return nf.format(new Date(((PeerDefinition) element).getLastAccess())); return ""; //$NON-NLS-1$ } }); TableViewerColumn col3 = new TableViewerColumn(incomingViewer, SWT.NONE); col3.getColumn().setWidth(250); col3.getColumn().setText(Messages.PeerPreferencePage_last_op); col3.setLabelProvider(new ZColumnLabelProvider() { @Override public String getText(Object element) { if (element instanceof PeerDefinition) return ((PeerDefinition) element).getRightsLabel(); return ""; //$NON-NLS-1$ } @Override public Color getForeground(Object element) { if (element instanceof PeerDefinition) return ((PeerDefinition) element).isBlocked() ? parent.getDisplay().getSystemColor(SWT.COLOR_RED) : null; return super.getForeground(element); } }); new SortColumnManager(incomingViewer, new int[] { SWT.UP, SWT.DOWN, SWT.NONE }, 1); incomingViewer.setContentProvider(ArrayContentProvider.getInstance()); incomingViewer.setComparator(new ZViewerComparator() { @Override public int compare(Viewer viewer, Object e1, Object e2) { if (e1 instanceof PeerDefinition && e2 instanceof PeerDefinition) { Table table = incomingViewer.getTable(); int sortDirection = table.getSortDirection(); TableColumn sortColumn = incomingViewer.getTable().getSortColumn(); int result; if (sortColumn == table.getColumn(0)) result = UiUtilities.stringComparator.compare(((PeerDefinition) e1).getLocation(), ((PeerDefinition) e2).getLocation()); else { long t1 = ((PeerDefinition) e1).getLastAccess(); long t2 = ((PeerDefinition) e2).getLastAccess(); result = t1 > t2 ? 1 : t1 < t2 ? -1 : 0; } return sortDirection == SWT.DOWN ? result : -result; } return super.compare(viewer, e1, e2); } }); Composite buttonGroup = new Composite(innerComp, SWT.NONE); buttonGroup.setLayoutData(new GridData(SWT.END, SWT.BEGINNING, false, true)); buttonGroup.setLayout(new GridLayout()); Button clearButton = new Button(buttonGroup, SWT.PUSH); clearButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false)); clearButton.setText(Messages.PeerPreferencePage_clear); clearButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { @SuppressWarnings("unchecked") Collection<PeerDefinition> peers = (Collection<PeerDefinition>) incomingViewer.getInput(); Iterator<PeerDefinition> it = peers.iterator(); while (it.hasNext()) { PeerDefinition peerDefinition = it.next(); if (!peerDefinition.isBlocked()) it.remove(); } incomingViewer.setInput(peers); } }); final Button blockButton = new Button(buttonGroup, SWT.PUSH); blockButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false)); blockButton.setText(Messages.PeerPreferencePage_toggle); blockButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { IStructuredSelection sel = incomingViewer.getStructuredSelection(); Object firstElement = sel.getFirstElement(); if (firstElement instanceof PeerDefinition) { PeerDefinition peerDefinition = (PeerDefinition) firstElement; if (peerDefinition.isBlocked()) PeerActivator.getDefault().getBlockedNodes().remove(peerDefinition.getHost()); else PeerActivator.getDefault().getBlockedNodes().add(peerDefinition.getHost()); PeerActivator.getDefault().writeBlockedNodes(); incomingViewer.setInput(incomingViewer.getInput()); incomingViewer.setSelection(sel); } } }); blockButton.setEnabled(false); incomingViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { blockButton.setEnabled(!event.getSelection().isEmpty()); } }); return comp; }