Example usage for org.eclipse.jface.viewers TableViewerColumn TableViewerColumn

List of usage examples for org.eclipse.jface.viewers TableViewerColumn TableViewerColumn

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers TableViewerColumn TableViewerColumn.

Prototype

public TableViewerColumn(TableViewer viewer, TableColumn column) 

Source Link

Document

Creates a new viewer column for the given TableViewer on the given TableColumn .

Usage

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;
}