Example usage for org.eclipse.jface.viewers ViewerCell setForeground

List of usage examples for org.eclipse.jface.viewers ViewerCell setForeground

Introduction

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

Prototype

public void setForeground(Color foreground) 

Source Link

Document

Set the foreground color of the cell.

Usage

From source file:net.tourbook.util.DialogModifyColumns.java

License:Open Source License

private void createUI10ColumnsViewer(final Composite parent) {

    final TableColumnLayout tableLayout = new TableColumnLayout();
    final Composite layoutContainer = new Composite(parent, SWT.NONE);
    layoutContainer.setLayout(tableLayout);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(layoutContainer);

    /*//from  www . j av  a 2  s  .  c o m
     * create table
     */
    final Table table = new Table(layoutContainer, SWT.CHECK | SWT.FULL_SELECTION | SWT.BORDER);

    table.setLayout(new TableLayout());
    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    _columnViewer = new CheckboxTableViewer(table);

    /*
     * create columns
     */
    TableViewerColumn tvc;
    TableColumn tvcColumn;

    // column: label
    tvc = new TableViewerColumn(_columnViewer, SWT.LEAD);
    tvcColumn = tvc.getColumn();
    tvcColumn.setText(Messages.ColumnModifyDialog_column_column);
    tvc.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ColumnDefinition colDef = (ColumnDefinition) cell.getElement();
            cell.setText(colDef.getColumnLabel());

            // paint columns in a different color which can't be hidden
            if (colDef.canModifyVisibility() == false) {
                cell.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_INACTIVE_FOREGROUND));
            }
        }
    });
    tableLayout.setColumnData(tvcColumn, new ColumnWeightData(1, true));

    // column: unit
    tvc = new TableViewerColumn(_columnViewer, SWT.LEAD);
    tvcColumn = tvc.getColumn();
    tvcColumn.setText(Messages.ColumnModifyDialog_column_unit);
    tvc.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ColumnDefinition colDef = (ColumnDefinition) cell.getElement();
            cell.setText(colDef.getColumnUnit());

            // paint columns in a different color which can't be hidden
            if (colDef.canModifyVisibility() == false) {
                cell.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_INACTIVE_FOREGROUND));
            }
        }
    });
    tableLayout.setColumnData(tvcColumn, new ColumnPixelData(_pc.convertWidthInCharsToPixels(13), true));

    // column: width
    tvc = new TableViewerColumn(_columnViewer, SWT.TRAIL);
    tvcColumn = tvc.getColumn();
    tvcColumn.setText(Messages.ColumnModifyDialog_column_width);
    tvc.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ColumnDefinition colDef = (ColumnDefinition) cell.getElement();
            cell.setText(Integer.toString(colDef.getColumnWidth()));

            // paint columns in a different color which can't be hidden
            if (colDef.canModifyVisibility() == false) {
                cell.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_TITLE_INACTIVE_FOREGROUND));
            }
        }
    });
    tableLayout.setColumnData(tvcColumn, new ColumnPixelData(_pc.convertWidthInCharsToPixels(10), true));

    _columnViewer.setContentProvider(new IStructuredContentProvider() {

        public void dispose() {
        }

        public Object[] getElements(final Object inputElement) {
            return _allColumnsInDialog.toArray();
        }

        public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
        }
    });

    _columnViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(final DoubleClickEvent event) {

            final Object firstElement = ((IStructuredSelection) _columnViewer.getSelection()).getFirstElement();
            if (firstElement != null) {

                // check/uncheck current item

                _columnViewer.setChecked(firstElement, !_columnViewer.getChecked(firstElement));
            }
        }
    });

    _columnViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(final CheckStateChangedEvent event) {

            final ColumnDefinition colDef = (ColumnDefinition) event.getElement();

            if (colDef.canModifyVisibility()) {

                // keep the checked status
                colDef.setIsCheckedInDialog(event.getChecked());

                // select the checked item
                _columnViewer.setSelection(new StructuredSelection(colDef));

            } else {

                // column can't be unchecked
                _columnViewer.setChecked(colDef, true);
            }
        }
    });

    _columnViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(final SelectionChangedEvent event) {
            enableUpDownButtons();
        }
    });

    /*
     * set drag adapter
     */
    _columnViewer.addDragSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() },
            new DragSourceListener() {

                public void dragFinished(final DragSourceEvent event) {

                    final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer();

                    if (event.doit == false) {
                        return;
                    }

                    transfer.setSelection(null);
                    transfer.setSelectionSetTime(0);
                }

                public void dragSetData(final DragSourceEvent event) {
                    // data are set in LocalSelectionTransfer
                }

                public void dragStart(final DragSourceEvent event) {

                    final LocalSelectionTransfer transfer = LocalSelectionTransfer.getTransfer();
                    final ISelection selection = _columnViewer.getSelection();

                    _dndCheckedElements = _columnViewer.getCheckedElements();

                    transfer.setSelection(selection);
                    transfer.setSelectionSetTime(_dndDragStartViewerLeft = event.time & 0xFFFFFFFFL);

                    event.doit = !selection.isEmpty();
                }
            });

    /*
     * set drop adapter
     */
    final ViewerDropAdapter viewerDropAdapter = new ViewerDropAdapter(_columnViewer) {

        private Widget _dragOverItem;

        @Override
        public void dragOver(final DropTargetEvent dropEvent) {

            // keep table item
            _dragOverItem = dropEvent.item;

            super.dragOver(dropEvent);
        }

        @Override
        public boolean performDrop(final Object data) {

            if (data instanceof StructuredSelection) {
                final StructuredSelection selection = (StructuredSelection) data;

                if (selection.getFirstElement() instanceof ColumnDefinition) {

                    final ColumnDefinition colDef = (ColumnDefinition) selection.getFirstElement();

                    final int location = getCurrentLocation();
                    final Table filterTable = _columnViewer.getTable();

                    /*
                     * check if drag was startet from this item, remove the item before the new
                     * item is inserted
                     */
                    if (LocalSelectionTransfer.getTransfer().getSelectionSetTime() == _dndDragStartViewerLeft) {
                        _columnViewer.remove(colDef);
                    }

                    int filterIndex;

                    if (_dragOverItem == null) {

                        _columnViewer.add(colDef);
                        filterIndex = filterTable.getItemCount() - 1;

                    } else {

                        // get index of the target in the table
                        filterIndex = filterTable.indexOf((TableItem) _dragOverItem);
                        if (filterIndex == -1) {
                            return false;
                        }

                        if (location == LOCATION_BEFORE) {
                            _columnViewer.insert(colDef, filterIndex);
                        } else if (location == LOCATION_AFTER || location == LOCATION_ON) {
                            _columnViewer.insert(colDef, ++filterIndex);
                        }
                    }

                    // reselect filter item
                    _columnViewer.setSelection(new StructuredSelection(colDef));

                    // set focus to selection
                    filterTable.setSelection(filterIndex);
                    filterTable.setFocus();

                    // recheck items
                    _columnViewer.setCheckedElements(_dndCheckedElements);

                    enableUpDownButtons();

                    return true;
                }
            }

            return false;
        }

        @Override
        public boolean validateDrop(final Object target, final int operation, final TransferData transferType) {

            final LocalSelectionTransfer transferData = LocalSelectionTransfer.getTransfer();

            // check if dragged item is the target item
            final ISelection selection = transferData.getSelection();
            if (selection instanceof StructuredSelection) {
                final Object dragFilter = ((StructuredSelection) selection).getFirstElement();
                if (target == dragFilter) {
                    return false;
                }
            }

            if (transferData.isSupportedType(transferType) == false) {
                return false;
            }

            // check if target is between two items
            if (getCurrentLocation() == LOCATION_ON) {
                return false;
            }

            return true;
        }

    };

    _columnViewer.addDropSupport(DND.DROP_MOVE, new Transfer[] { LocalSelectionTransfer.getTransfer() },
            viewerDropAdapter);
}

From source file:org.apache.sling.ide.eclipse.ui.views.JcrCellLabelProvider.java

License:Apache License

@Override
public void update(ViewerCell cell) {
    int index = cell.getColumnIndex();

    if (!isNewRow(cell)) {
        if (canEdit(cell)) {
            cell.setForeground(normalColor);
        } else {/* www.ja va 2  s .c  o m*/
            cell.setForeground(greyColor);
        }
    }
    if (index == 0) {
        updateName(cell);
        return;
    } else if (index == 1) {
        final Object element = cell.getElement();
        if (element instanceof NewRow) {
            NewRow newRow = (NewRow) element;
            int propertyType = newRow.getType();
            String type = PropertyType.nameFromValue(propertyType);
            cell.setText(type);
        } else if (element instanceof IPropertyDescriptor) {
            IPropertyDescriptor pd = (IPropertyDescriptor) element;
            JcrNode jcrNode = (JcrNode) viewer.getInput();
            Map.Entry me = (Entry) pd.getId();
            final String propertyName = String.valueOf(me.getKey());
            int propertyType = jcrNode.getPropertyType(propertyName);
            if (propertyType <= -1 || propertyType == PropertyType.UNDEFINED) {
                cell.setText("");
            } else {
                final JcrProperty property = jcrNode.getProperty(propertyName);
                String type = PropertyType.nameFromValue(propertyType);
                if (property != null && property.isMultiple()) {
                    type = type + "[]";
                }
                cell.setText(type);
            }
        } else {
            cell.setText("");
        }
        return;
    } else if (index == 2) {
        updateValue(cell);
        return;
    } else {
        final Object element = cell.getElement();
        if (element instanceof NewRow) {
            NewRow newRow = (NewRow) element;
            cell.setText("");
        } else if (element instanceof IPropertyDescriptor) {
            IPropertyDescriptor pd = (IPropertyDescriptor) element;
            JcrNode jcrNode = (JcrNode) viewer.getInput();
            Map.Entry me = (Entry) pd.getId();
            PropertyDefinition prd = jcrNode.getPropertyDefinition(String.valueOf(me.getKey()));
            if (index == 3) {
                // protected
                if (prd != null) {
                    cell.setText(String.valueOf(prd.isProtected()));
                } else {
                    cell.setText("false");
                }
            } else if (index == 4) {
                // mandatory
                if (prd != null) {
                    cell.setText(String.valueOf(prd.isMandatory()));
                } else {
                    cell.setText("false");
                }
            } else if (index == 5) {
                // multiple
                if (prd != null) {
                    cell.setText(String.valueOf(prd.isMultiple()));
                } else {
                    cell.setText(String.valueOf(jcrNode.getProperty(String.valueOf(me.getKey())).isMultiple()));
                }
            } else if (index == 6) {
                // auto creatd
                if (prd != null) {
                    cell.setText(String.valueOf(prd.isAutoCreated()));
                } else {
                    cell.setText("false");
                }
            } else {
                cell.setText("n/a");
                return;
            }
        }

    }
}

From source file:org.apache.sling.ide.eclipse.ui.views.MVPEditor.java

License:Apache License

@Override
protected Control createDialogArea(Composite parent) {
    Composite composite = (Composite) super.createDialogArea(parent);

    // now add the node type dropbox-combo
    Composite header = new Composite(composite, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.marginHeight = 0;// w w  w.j  a v a 2 s. co  m
    layout.marginWidth = 0;
    layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    layout.numColumns = 3;
    header.setLayout(layout);

    Label label = new Label(header, SWT.WRAP);
    label.setText("Modify property " + property.getName() + ":");
    GridData data = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL
            | GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER);
    data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
    label.setLayoutData(data);
    label.setFont(parent.getFont());

    ToolBar buttonBar = new ToolBar(header, SWT.NONE);
    ToolItem invisible = new ToolItem(buttonBar, SWT.NONE);

    ToolItem plus = new ToolItem(buttonBar, SWT.NONE);
    plus.setImage(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_ADD)
            .createImage());
    plus.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            plus();
        }
    });

    final ToolItem minus = new ToolItem(buttonBar, SWT.NONE);
    minus.setImage(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_DELETE)
            .createImage());
    minus.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            minus();
        }
    });
    minus.setEnabled(false);

    Composite tableParent = new Composite(composite, SWT.NONE);
    final GridData layoutData = new GridData(GridData.FILL_BOTH);
    layoutData.heightHint = 150;
    tableParent.setLayoutData(layoutData);
    TableColumnLayout tableLayout = new TableColumnLayout();
    tableParent.setLayout(tableLayout);
    viewer = new TableViewer(tableParent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    viewer.getTable().setLinesVisible(true);
    viewer.getTable().setHeaderVisible(true);

    // accessing property here directly, instead of going via (JcrProperty)inputElement;
    String[] rawLines = property.getValuesAsString();
    // convert raw lines to Line objects for easier editing management
    for (int i = 0; i < rawLines.length; i++) {
        lines.add(new Line(rawLines[i]));
    }

    viewer.setContentProvider(new IStructuredContentProvider() {

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        @Override
        public void dispose() {
        }

        @Override
        public Object[] getElements(Object inputElement) {
            return lines.toArray();
        }
    });

    TableViewerColumn column0 = new TableViewerColumn(viewer, SWT.NONE);
    column0.getColumn().setText("Type");
    column0.getColumn().setResizable(true);
    column0.getColumn().setWidth(100);
    tableLayout.setColumnData(column0.getColumn(), new ColumnWeightData(20, 100));
    column0.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(ViewerCell cell) {
            try {
                cell.setText(property.getTypeAsString());
                cell.setForeground(greyColor);
            } catch (Exception e) {
                cell.setText("n/a");
                cell.setForeground(greyColor);
            }
        }
    });

    TableViewerColumn column1 = new TableViewerColumn(viewer, SWT.NONE);
    column1.getColumn().setText("Value");
    column1.getColumn().setResizable(true);
    column1.getColumn().setWidth(200);
    tableLayout.setColumnData(column1.getColumn(), new ColumnWeightData(80, 200));

    column1.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(ViewerCell cell) {
            Line line = (Line) cell.getElement();
            cell.setText(line.getValue());
        }
    });
    column1.setEditingSupport(new EditingSupport(viewer) {

        @Override
        protected void setValue(Object element, Object value) {
            Line line = (Line) element;
            line.setValue(String.valueOf(value));
            // trigger a refresh:
            viewer.setInput(property);
        }

        @Override
        protected Object getValue(Object element) {
            final Line line = (Line) element;
            final String value = line.getValue();
            System.out.println("Value=" + value);
            return value;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            return new TextCellEditor(viewer.getTable());
        }

        @Override
        protected boolean canEdit(Object element) {
            // all values are editable
            return true;
        }
    });
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            final ISelection selection = event.getSelection();
            if (selection instanceof IStructuredSelection) {
                IStructuredSelection iss = (IStructuredSelection) selection;
                if (iss.isEmpty()) {
                    minus.setEnabled(false);
                } else {
                    minus.setEnabled(true);
                }
            } else {
                minus.setEnabled(false);
            }
        }
    });

    viewer.setInput(property);

    return composite;
}

From source file:org.csstudio.alarm.beast.ui.alarmtable.AlarmTableLabelProvider.java

License:Open Source License

/** Update one cell of the table */
@Override/*w  w w . j  a  va2s .co  m*/
public void update(final ViewerCell cell) {
    // AlarmTableProvider should always provide "AlarmTreePV" elements
    final AlarmTreePV alarm = (AlarmTreePV) cell.getElement();

    // Special handling of 'info' entry that has no parent
    switch (column) {
    case ACK:
        cell.setImage(
                alarm.getSeverity().isActive() ? CheckBoxImages.getInstance(cell.getControl()).getImage(false)
                        : CheckBoxImages.getInstance(cell.getControl()).getImage(true));
        break;
    case ICON:
        cell.setImage(icon_provider.getIcon(alarm));
        break;
    case PV:
        cell.setText(alarm.getName());
        break;
    case DESCRIPTION: {
        final String annunciation = AnnunciationFormatter.format(alarm.getDescription(),
                alarm.getSeverity().getDisplayName(), alarm.getValue(), true);
        cell.setText(annunciation);
    }

        break;
    case TIME:
        cell.setText(formatter == null ? alarm.getTimestampText()
                : (alarm.getTimestamp() == null ? ""
                        : formatter.format(
                                ZonedDateTime.ofInstant(alarm.getTimestamp(), ZoneId.systemDefault()))));
        break;
    case CURRENT_SEVERITY:
        if (alarm.getParent() == null)
            return;
        cell.setText(alarm.getCurrentSeverity().getDisplayName());
        cell.setBackground(color_provider.getColor(alarm.getCurrentSeverity()));
        break;
    case CURRENT_STATUS:
        if (alarm.getParent() == null)
            return;
        cell.setText(alarm.getCurrentMessage());
        break;
    case SEVERITY:
        if (alarm.getParent() == null)
            return;
        cell.setText(alarm.getSeverity().getDisplayName());
        cell.setBackground(color_provider.getColor(alarm.getSeverity()));
        break;
    case STATUS:
        if (alarm.getParent() == null)
            return;
        cell.setText(alarm.getMessage());
        break;
    case VALUE:
        if (alarm.getParent() == null)
            return;
        cell.setText(alarm.getValue());
        break;
    case ACTION:
        GDCDataStructure[] guidance = alarm.getGuidance();
        if (guidance.length != 0) {
            cell.setText(guidance[0].getDetails());
        }
        break;
    case ID:
        GDCDataStructure[] guidances = alarm.getGuidance();
        if (guidances.length != 0) {
            cell.setText(guidances[0].getTitle());
        }
        break;
    default:
        break;
    }

    if (column == ColumnInfo.ICON)
        return;

    // If enabled, the background color will reflect the severity of the alarm (when in alarm state).
    // If reverse_colors is also enabled, the background/text colors for unacknowledged cleared alarms will be reversed.
    if (!background_color_alarm_sensitive)
        return;

    final SeverityLevel severity = alarm.getSeverity();
    if (severity == SeverityLevel.OK) {
        // if OK, use default colors
        cell.setBackground(null);
        cell.setForeground(null);
        return;
    }

    final SeverityLevel current_severity = alarm.getCurrentSeverity();
    final Color severity_color = color_provider.getColor(severity);
    final Color color_pair = color_pair_provider == null ? null : color_pair_provider.getColor(severity);

    Color bg_color = severity_color, fg_color = color_pair;

    if (reverse_colors && current_severity == SeverityLevel.OK) {
        // the alarm is currently cleared (recovered), and color reversal is enabled
        bg_color = color_pair;
        fg_color = severity_color;
    }

    cell.setBackground(bg_color);
    cell.setForeground(fg_color);
}

From source file:org.csstudio.alarm.beast.ui.alarmtree.AlarmTreeLabelProvider.java

License:Open Source License

/** Set a cell's text and color from alarm tree item */
@Override//from w  ww .  j  av  a2 s .  c  om
public void update(final ViewerCell cell) {
    final AlarmTreeItem item = (AlarmTreeItem) cell.getElement();
    // Text
    String text = getText(item);
    if (!text.equals(cell.getText()))
        cell.setText(text);

    // Provide icon that represents the item's severity
    if (item instanceof AlarmTreePV && !((AlarmTreePV) item).isEnabled()) {
        cell.setImage(icon_provider.getDisabledIcon());
        cell.setBackground(null);
        cell.setForeground(null);
        return; // done, skip the color coding
    } else
        cell.setImage(icon_provider.getIcon(item.getCurrentSeverity(), item.getSeverity(),
                item.getDisabledChildCount() > 0));

    // Color-code AlarmTreePV based on severity.
    final SeverityLevel severity = item.getSeverity();
    //  'OK' severity isn't color-coded.
    if (severity == SeverityLevel.OK) {
        cell.setBackground(null);
        cell.setForeground(null);
        return;
    }
    //  Generally, the foreground (text) color is set,
    //  but for PV items with active alarms, the background
    //  color is set to make it stand out even more.
    final Color color = color_provider.getColor(severity);
    if ((item instanceof AlarmTreePV) && severity.isActive()) {
        cell.setBackground(color);
        cell.setForeground(null);
    } else {
        cell.setForeground(color);
        cell.setBackground(null);
    }
}

From source file:org.csstudio.display.pvtable.ui.PVTable.java

License:Open Source License

/**
 * Create GUI components/*from w  w  w  .  j av a 2s  . co  m*/
 *
 * @param parent
 */
private void createComponents(final Composite parent) {
    // TableColumnLayout requires table to be only child of parent.
    // To assert that'll always be the case, create box.
    final Composite table_box = new Composite(parent, 0);
    parent.setLayout(new FillLayout());
    final TableColumnLayout layout = new MinSizeTableColumnLayout(50);
    table_box.setLayout(layout);

    // Tried CheckboxTableViewer, but it lead to inconsistent refreshes:
    // Rows would appear blank. Didn't investigate further, stuck with
    // TableViewer.
    viewer = new TableViewer(table_box,
            SWT.CHECK | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.VIRTUAL);

    final Table table = viewer.getTable();
    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    // PV Name column: Has the 'check box' to select, allows editing
    final TableViewerColumn pv_column = createColumn(viewer, layout, Messages.PV, 75, 100,
            new PVTableCellLabelProvider() {
                @Override
                public void update(final ViewerCell cell) {
                    final TableItem tab_item = (TableItem) cell.getItem();
                    final PVTableItem item = (PVTableItem) cell.getElement();
                    if (item.isConfHeader()) {
                        cell.setText(item.getConfHeader());
                        cell.setForeground(tab_item.getDisplay().getSystemColor(SWT.COLOR_DARK_BLUE));
                        return;
                    }
                    if (item.isMeasureHeader() && model.getConfig() != null) {
                        cell.setText(item.getMeasureHeader());
                        cell.setForeground(tab_item.getDisplay().getSystemColor(SWT.COLOR_DARK_GREEN));
                        return;
                    }
                    if (item.isComment()) {
                        cell.setText(item.getComment());
                        cell.setForeground(tab_item.getDisplay().getSystemColor(SWT.COLOR_BLUE));
                        return;
                    }
                    tab_item.setChecked(item.isSelected());
                    cell.setText(item.getName());
                    cell.setForeground(null);
                }
            });
    pv_column.setEditingSupport(new EditingSupport(viewer) {
        @Override
        protected boolean canEdit(final Object element) {
            final PVTableItem item = (PVTableItem) element;
            if (item.isMeasure() && !item.isMeasureHeader())
                return false;
            return true;
        }

        @Override
        protected CellEditor getCellEditor(final Object element) {
            return AutoCompleteUIHelper.createAutoCompleteTextCellEditor(table, AutoCompleteTypes.PV);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final String new_name = value.toString().trim();
            final PVTableItem item = (PVTableItem) element;

            if (item == PVTableModelContentProvider.NEW_ITEM) {
                // Set name of magic NEW_ITEM: Add new item
                if (new_name.isEmpty())
                    return;
                model.addItem(new_name);
                viewer.setInput(model);
            } else if (item.isMeasureHeader() && !new_name.startsWith("#mesure#"))
                return;
            else if (new_name.isEmpty()) {
                if (item.isConfHeader()) {
                    boolean isDelete = MessageDialog.openConfirm(Display.getCurrent().getActiveShell(),
                            Messages.InformationPopup, Messages.InformationPopup_DelConfHeader);

                    if (isDelete == false)
                        return;

                    Configuration conf = model.getConfig();
                    System.out.println("PVTable.createComponents(...).new EditingSupport() {...}.setValue() "
                            + conf + " " + ((conf != null) ? conf.getMeasures() : ""));
                    List<Measure> allMeasures = conf.getMeasures();
                    for (Measure measure : allMeasures) {
                        List<PVTableItem> itemsMeasure = measure.getItems();
                        for (PVTableItem itemMes : itemsMeasure)
                            model.removeItem(itemMes);
                    }
                }
                // Setting name to nothing: Remove item
                model.removeItem(item);
                viewer.remove(item);

                viewer.setItemCount(model.getItemCount() + 1);
                viewer.refresh();
            } else {
                // Change name of existing item
                item.updateName(new_name);
                model.isConfHeaderToAdd(item);
                model.fireModelChange();
            }
        }

        @Override
        protected Object getValue(final Object element) {
            final PVTableItem item = (PVTableItem) element;
            return item.getName();
        }
    });
    // Allow check/uncheck to select items for restore
    viewer.getTable().addListener(SWT.Selection, new Listener() {
        @Override
        public void handleEvent(final Event event) {
            final TableItem tab_item = (TableItem) event.item;
            final PVTableItem item = (PVTableItem) tab_item.getData();

            if (event.detail != SWT.CHECK) {
                changeContextMenu(item);
                return;
            }

            if (item.isComment() || item.isMeasure()) {
                tab_item.setChecked(false);
                return;
            }

            /*
             * Toggle selection of PVTableItem, then update the TableItem to
             * reflect current state. When instead updating the PVTableItem
             * from the TableItem's check mark, the result was inconsistent
             * behavior for selected rows: Could not un-check the checkbox
             * for a selected row...
             */
            if (item == PVTableModelContentProvider.NEW_ITEM)
                item.setSelected(false);
            else
                item.setSelected(!item.isSelected());
            tab_item.setChecked(item.isSelected());
        }
    });

    // Optionally, add column to display item.getDescription()
    if (Preferences.showDescription()) {
        createColumn(viewer, layout, Messages.Description, 50, 40, new PVTableCellLabelProvider() {
            @Override
            public void update(final ViewerCell cell) {
                final PVTableItem item = (PVTableItem) cell.getElement();
                cell.setText(item.getDescription());
            }
        });
    }

    // Read-only time stamp
    createColumn(viewer, layout, Messages.Time, 50, 100, new PVTableCellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final PVTableItem item = (PVTableItem) cell.getElement();
            final VType value = item.getValue();
            if (!item.isMeasureHeader() && (value == null || item.isComment()))
                cell.setText(""); //$NON-NLS-1$
            else
                cell.setText(TimestampHelper.format(VTypeHelper.getTimestamp(value)));
        }
    });
    // Editable value
    final TableViewerColumn value_column = createColumn(viewer, layout, Messages.Value, 100, 50,
            new PVTableCellLabelProviderWithChangeIndicator(changed_background) {
                @Override
                public void update(final ViewerCell cell) {
                    final PVTableItem item = (PVTableItem) cell.getElement();
                    final VType value = item.getValue();
                    if (value == null)
                        cell.setText(""); //$NON-NLS-1$
                    else
                        cell.setText(VTypeHelper.toString(value));
                    super.update(cell);
                }
            });
    value_column.setEditingSupport(new EditingSupport(viewer) {
        /** When a combo box editor is created, its value must be the integer
         *  index. Note that this variable is shared for all rows. When
         *  editing, the UI thread calls getCellEditor() for the row, then
         *  get/setValue().
         */
        private boolean need_index = false;

        @Override
        protected boolean canEdit(final Object element) {
            final PVTableItem item = (PVTableItem) element;
            return item.isWritable();
        }

        @Override
        protected CellEditor getCellEditor(final Object element) {
            final PVTableItem item = (PVTableItem) element;
            final String[] options = item.getValueOptions();
            need_index = options != null;
            if (need_index)
                return new ComboBoxCellEditor(table, options, SWT.READ_ONLY);
            return new TextCellEditor(table);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final PVTableItem item = (PVTableItem) element;
            item.setValue(value.toString());
        }

        @Override
        protected Object getValue(final Object element) {
            final PVTableItem item = (PVTableItem) element;
            final VType value = item.getValue();
            if (need_index) {
                if (value == null || !(value instanceof VEnum))
                    return 0;
                return ((VEnum) value).getIndex();
            }
            if (value == null)
                return ""; //$NON-NLS-1$
            return VTypeHelper.toString(value);
        }
    });
    // Remaining columns are read-only
    createColumn(viewer, layout, Messages.Alarm, 100, 50, new PVTableCellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final PVTableItem item = (PVTableItem) cell.getElement();
            final VType value = item.getValue();
            if (value == null)
                cell.setText(""); //$NON-NLS-1$
            else {
                cell.setText(VTypeHelper.formatAlarm(value));
                cell.setForeground(alarm_colors.get(VTypeHelper.getSeverity(value)));
            }
        }
    });
    // Column Saved Value
    createColumn(viewer, layout, Messages.Saved, 100, 50,
            new PVTableCellLabelProviderWithChangeIndicator(changed_background) {
                @Override
                public void update(final ViewerCell cell) {
                    final PVTableItem item = (PVTableItem) cell.getElement();
                    final SavedValue value = item.getSavedValue().orElse(null);
                    if (value == null)
                        cell.setText(""); //$NON-NLS-1$
                    else
                        cell.setText(value.toString());
                    super.update(cell);
                }
            });

    // Optionally, add column to display item.getTime_saved()
    if (Preferences.showSaveTimestamp()) {
        createColumn(viewer, layout, Messages.Saved_Value_TimeStamp, 50, 40, new PVTableCellLabelProvider() {
            @Override
            public void update(final ViewerCell cell) {
                final PVTableItem item = (PVTableItem) cell.getElement();
                cell.setText(item.getTime_saved());
            }
        });
    }

    final TableViewerColumn completion_column = createColumn(viewer, layout, "Completion", 10, 100,
            new PVTableCellLabelProvider() {
                @Override
                public void update(final ViewerCell cell) {
                    final PVTableItem item = (PVTableItem) cell.getElement();
                    if (item.isWritable()) {
                        if (item.isUsingCompletion())
                            cell.setImage(icon_checked);
                        else
                            cell.setImage(icon_unchecked);
                    }
                }
            });
    completion_column.getColumn().setToolTipText("Await completion (use put-callback) when restoring values?");
    completion_column.setEditingSupport(new EditingSupport(viewer) {
        @Override
        protected boolean canEdit(final Object element) {
            return ((PVTableItem) element).isWritable();
        }

        @Override
        protected CellEditor getCellEditor(final Object element) {
            return new CheckboxCellEditor(table);
        }

        @Override
        protected Object getValue(final Object element) {
            return ((PVTableItem) element).isUsingCompletion();
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            ((PVTableItem) element).setUseCompletion((Boolean) value);
            model.fireModelChange();
        }
    });

    ColumnViewerToolTipSupport.enableFor(viewer);
    viewer.setContentProvider(new PVTableModelContentProvider());
}

From source file:org.csstudio.scan.ui.scanmonitor.GUI.java

License:Open Source License

/** Create GUI elements
 *  @param parent Parent component/* w  w  w.  j  a v  a 2 s .c  o  m*/
 *  @param site Site or <code>null</code>
 */
private void createComponents(final Composite parent, final IWorkbenchPartSite site) {
    final Display display = parent.getDisplay();

    parent.setLayout(new GridLayout(2, false));

    // Note: TableColumnLayout requires that table is only child element!
    final Composite table_box = new Composite(parent, 0);
    table_box.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));

    // If more components are added, the table will need to be wrapped
    // into its own Composite.
    final TableColumnLayout table_layout = new MinSizeTableColumnLayout(10);
    table_box.setLayout(table_layout);

    table_viewer = new TableViewer(table_box,
            SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    final Table table = table_viewer.getTable();
    table.setHeaderVisible(true);
    table.setLinesVisible(true);
    createColumn(0, table_viewer, table_layout, Messages.ID, 30, 25, new CellLabelProvider() {
        @Override
        public String getToolTipText(final Object element) {
            final ScanInfo info = (ScanInfo) element;
            return NLS.bind(Messages.ID_Fmt, info.getId());
        }

        @Override
        public void update(final ViewerCell cell) {
            final ScanInfo info = (ScanInfo) cell.getElement();
            cell.setText(Long.toString(info.getId()));
        }
    });
    createColumn(1, table_viewer, table_layout, Messages.CreateTime, 150, 25, new CellLabelProvider() {
        @Override
        public String getToolTipText(final Object element) {
            final ScanInfo info = (ScanInfo) element;
            return NLS.bind(Messages.CreateTimeFmt, TimestampFormats.formatCompactDateTime(info.getCreated()));
        }

        @Override
        public void update(final ViewerCell cell) {
            final ScanInfo info = (ScanInfo) cell.getElement();
            cell.setText(ScanSampleFormatter.format(info.getCreated()));
        }
    });
    createColumn(2, table_viewer, table_layout, Messages.Name, 120, 100, new CellLabelProvider() {
        @Override
        public String getToolTipText(final Object element) {
            final ScanInfo info = (ScanInfo) element;
            return NLS.bind(Messages.NameFmt, info.getName());
        }

        @Override
        public void update(final ViewerCell cell) {
            final ScanInfo info = (ScanInfo) cell.getElement();
            cell.setText(info.getName());
        }
    });
    createColumn(3, table_viewer, table_layout, Messages.State, 90, 50, new CellLabelProvider() {
        @Override
        public String getToolTipText(final Object element) {
            final ScanInfo info = (ScanInfo) element;
            return NLS.bind(Messages.StateFmt, info.getState());
        }

        @Override
        public void update(final ViewerCell cell) {
            final ScanInfo info = (ScanInfo) cell.getElement();
            cell.setText(info.getState().toString());
            cell.setForeground(getStateColor(display, info));
        }
    });
    final TableViewerColumn perc_col = createColumn(4, table_viewer, table_layout, Messages.Percent, 25, 25,
            new CellLabelProvider() {
                @Override
                public String getToolTipText(final Object element) {
                    final ScanInfo info = (ScanInfo) element;
                    return NLS.bind(Messages.PercentFmt, new Object[] { info.getPerformedWorkUnits(),
                            info.getTotalWorkUnits(), info.getPercentage() });
                }

                @Override
                public void update(final ViewerCell cell) {
                    /* Custom painted...
                    final ScanInfo info = (ScanInfo) cell.getElement();
                    cell.setText(Integer.toString(info.getPercentage()));
                    */
                }
            });
    createColumn(5, table_viewer, table_layout, Messages.Runtime, 65, 5, new CellLabelProvider() {
        @Override
        public String getToolTipText(final Object element) {
            return Messages.Runtime_TT;
        }

        @Override
        public void update(final ViewerCell cell) {
            final ScanInfo info = (ScanInfo) cell.getElement();
            if (info.getState() != ScanState.Logged)
                cell.setText(info.getRuntimeText());
        }
    });
    createColumn(6, table_viewer, table_layout, Messages.FinishTime, 65, 5, new CellLabelProvider() {
        @Override
        public String getToolTipText(final Object element) {
            final ScanInfo info = (ScanInfo) element;
            return NLS.bind(Messages.FinishTimeFmt,
                    TimestampFormats.formatCompactDateTime(info.getFinishTime()));
        }

        @Override
        public void update(final ViewerCell cell) {
            final ScanInfo info = (ScanInfo) cell.getElement();
            cell.setText(TimestampFormats.formatCompactDateTime(info.getFinishTime()));
        }
    });
    createColumn(7, table_viewer, table_layout, Messages.CurrentCommand, 80, 100, new CellLabelProvider() {
        @Override
        public String getToolTipText(final Object element) {
            final ScanInfo info = (ScanInfo) element;
            final String command = info.getCurrentCommand();
            if (command.length() > 0)
                return NLS.bind(Messages.CurrentCommandFmt, command);
            else
                return Messages.CurrentCommandEmpty;
        }

        @Override
        public void update(final ViewerCell cell) {
            final ScanInfo info = (ScanInfo) cell.getElement();
            cell.setText(info.getCurrentCommand());
        }
    });
    createColumn(8, table_viewer, table_layout, Messages.Error, 80, 150, new CellLabelProvider() {
        @Override
        public String getToolTipText(final Object element) {
            final ScanInfo info = (ScanInfo) element;
            if (info.getError().isPresent())
                return NLS.bind(Messages.ErrorMsgFmt, info.getError().get());
            else
                return Messages.NoError;
        }

        @Override
        public void update(final ViewerCell cell) {
            final ScanInfo info = (ScanInfo) cell.getElement();
            cell.setText(info.getError().orElse("")); //$NON-NLS-1$
        }
    });

    // Custom-paint the perc_col cells to get progress bar
    table.addListener(SWT.PaintItem, new Listener() {
        @Override
        public void handleEvent(final Event event) {
            if (event.index != 4) // index of the percent column
                return;
            final GC gc = event.gc;
            final TableItem item = (TableItem) event.item;
            final ScanInfo info = (ScanInfo) item.getData();
            if (info.getState() == ScanState.Logged)
                return;

            final Color foreground = gc.getForeground();
            final Color background = gc.getBackground();
            gc.setForeground(getStateColor(display, info));
            gc.setBackground(display.getSystemColor(SWT.COLOR_GRAY));
            final int width = (perc_col.getColumn().getWidth() - 1) * info.getPercentage() / 100;
            gc.fillGradientRectangle(event.x, event.y, width, event.height, false);
            gc.drawRectangle(event.x, event.y, width - 1, event.height - 1);
            gc.setForeground(foreground);
            gc.setBackground(background);
        }
    });

    table_viewer.setComparator(comparator);

    ColumnViewerToolTipSupport.enableFor(table_viewer);
    table_viewer.setContentProvider(new ScanInfoModelContentProvider());

    if (ScanSystemPreferences.getShowMemoryUsage()) {
        final Label l = new Label(parent, 0);
        l.setText(Messages.MemInfo);
        l.setLayoutData(new GridData());
        mem_info = new Bar(parent, 0);
        mem_info.setLayoutData(new GridData(SWT.FILL, 0, true, false));
        mem_info.setToolTipText(Messages.MemInfoTT);
    }

    // Publish current selection
    if (site != null)
        site.setSelectionProvider(table_viewer);
}

From source file:org.csstudio.scan.ui.scantree.gui.CommandTreeLabelProvider.java

License:Open Source License

/** {@inheritDoc} */
@Override/*from  www  .  j  av a  2s .co m*/
public void update(final ViewerCell cell) {
    final ScanCommand command = (ScanCommand) cell.getElement();
    cell.setText(getText(command));
    cell.setImage(getImage(command));

    // highlight the currently active command
    if (active_command.get() == command)
        cell.setForeground(cell.getControl().getDisplay().getSystemColor(SWT.COLOR_GREEN));
    else
        cell.setForeground(null);
}

From source file:org.dynami.views.OrdersView.java

License:Apache License

private void colorizeOrder(final ViewerCell cell, final Order order) {
    switch (order.status) {
    case STATUS.CANCELLED:
        cell.setForeground(GREY);
        cell.setBackground(getRevertColor(GREY));
        break;/*from w w  w.j a v  a2s  . c  o m*/
    case STATUS.PARTIALLY_EXECUTED:
        cell.setForeground(MAGENTA);
        cell.setBackground(getRevertColor(MAGENTA));
        break;
    case STATUS.PENDING:
        cell.setForeground(BLUE);
        cell.setBackground(getRevertColor(BLUE));
        break;
    case STATUS.REFUSED:
        cell.setForeground(RED);
        cell.setBackground(getRevertColor(RED));
        break;
    default:
        break;
    }
}

From source file:org.dynami.views.TracesView.java

License:Apache License

@Override
public void createPartControl(Composite parent) {
    Composite container = new Composite(parent, SWT.NONE);
    container.setLayout(new FormLayout());

    Composite fltr_composite = new Composite(container, SWT.NONE);
    fltr_composite.setLayout(new RowLayout(SWT.HORIZONTAL));
    FormData fd_fltr_composite = new FormData();
    fd_fltr_composite.bottom = new FormAttachment(0, 29);
    fd_fltr_composite.top = new FormAttachment(0);
    fd_fltr_composite.left = new FormAttachment(0);

    fltr_composite.setLayoutData(fd_fltr_composite);

    Composite tbl_composite = new Composite(container, SWT.NONE);

    fd_fltr_composite.right = new FormAttachment(tbl_composite, 0, SWT.RIGHT);
    TableColumnLayout tcl_layout = new TableColumnLayout();
    tbl_composite.setLayout(tcl_layout);

    tableViewer = new TableViewer(tbl_composite, SWT.BORDER | SWT.FULL_SELECTION | SWT.V_SCROLL);
    tableViewer.setContentProvider(ArrayContentProvider.getInstance());
    traceFilter = new TextFilter();
    tableViewer.addFilter(traceFilter);/*w w w  . j  a v  a 2 s  . c o  m*/

    FormData fd_table = new FormData();
    fd_table.top = new FormAttachment(fltr_composite, 6);
    fd_table.bottom = new FormAttachment(100);

    final Button btnFiltermarket = new Button(fltr_composite, SWT.TOGGLE);
    btnFiltermarket.setSelection(true);
    btnFiltermarket.setText("");
    btnFiltermarket.setToolTipText("Filter market");
    btnFiltermarket.setImage(Activator.getImageDescriptor("/icons/trace_market.gif").createImage());
    btnFiltermarket.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (((Button) e.getSource()).getSelection()) {
                tableViewer.removeFilter(marketFilter);
                tableViewer.refresh();
            } else {
                tableViewer.addFilter(marketFilter);
                tableViewer.refresh();
            }
        }
    });

    final Button btnFilterinfo = new Button(fltr_composite, SWT.TOGGLE);
    btnFilterinfo.setSelection(true);
    btnFilterinfo.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (((Button) e.getSource()).getSelection()) {
                tableViewer.removeFilter(infoFilter);
                tableViewer.refresh();
            } else {
                tableViewer.addFilter(infoFilter);
                tableViewer.refresh();
            }
        }
    });
    btnFilterinfo.setToolTipText("Info Filter");
    btnFilterinfo.setText("");
    btnFilterinfo.setImage(Activator.getImageDescriptor("/icons/trace_info.gif").createImage());

    Button btnFilterwarn = new Button(fltr_composite, SWT.TOGGLE);
    btnFilterwarn.setSelection(true);
    btnFilterwarn.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (((Button) e.getSource()).getSelection()) {
                tableViewer.removeFilter(warnFilter);
                tableViewer.refresh();
            } else {
                tableViewer.addFilter(warnFilter);
                tableViewer.refresh();
            }
        }
    });
    btnFilterwarn.setText("");
    btnFilterwarn.setToolTipText("Warning filter");
    btnFilterwarn.setImage(Activator.getImageDescriptor("/icons/trace_warn.gif").createImage());

    Button btnFiltererror = new Button(fltr_composite, SWT.TOGGLE);
    btnFiltererror.setSelection(true);
    btnFiltererror.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (((Button) e.getSource()).getSelection()) {
                tableViewer.removeFilter(errorFilter);
                tableViewer.refresh();
            } else {
                tableViewer.addFilter(errorFilter);
                tableViewer.refresh();
            }
        }
    });
    btnFiltererror.setToolTipText("Error filter");
    btnFiltererror.setImage(Activator.getImageDescriptor("/icons/trace_error.gif").createImage());
    btnFiltererror.setText("");

    Button btnFilterdebug = new Button(fltr_composite, SWT.TOGGLE);
    btnFilterdebug.setSelection(true);
    btnFilterdebug.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (((Button) e.getSource()).getSelection()) {
                tableViewer.removeFilter(debugFilter);
            } else {
                tableViewer.addFilter(debugFilter);
            }
        }
    });
    btnFilterdebug.setToolTipText("Debug filter");
    btnFilterdebug.setImage(Activator.getImageDescriptor("/icons/trace_debug.gif").createImage());
    btnFilterdebug.setText("");

    Label label = new Label(fltr_composite, SWT.SEPARATOR | SWT.VERTICAL);
    label.setLayoutData(new RowData(2, 25));

    textTraceFilter = new Text(fltr_composite, SWT.BORDER | SWT.WRAP);
    textTraceFilter.setLayoutData(new RowData(281, SWT.DEFAULT));
    textTraceFilter.setText("");
    textTraceFilter.addTraverseListener(new TraverseListener() {
        @Override
        public void keyTraversed(TraverseEvent event) {
            if (event.detail == SWT.TRAVERSE_RETURN) {
                traceFilter.setSearchText(textTraceFilter.getText());
                tableViewer.addFilter(traceFilter);
            }
        }
    });

    Button btnSearch = new Button(fltr_composite, SWT.NONE);
    btnSearch.setToolTipText("Search");
    btnSearch.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            traceFilter.setSearchText(textTraceFilter.getText());
            tableViewer.addFilter(traceFilter);
        }
    });
    btnSearch.setImage(Activator.getImageDescriptor("/icons/trace_search.gif").createImage());

    Label label_1 = new Label(fltr_composite, SWT.SEPARATOR | SWT.VERTICAL);
    label_1.setLayoutData(new RowData(2, 24));

    Button btnRemove = new Button(fltr_composite, SWT.NONE);
    btnRemove.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            textTraceFilter.setText("");
            traceFilter.setSearchText("");
            tableViewer.removeFilter(traceFilter);
        }
    });
    btnRemove.setToolTipText("Remove");
    btnRemove.setImage(Activator.getImageDescriptor("/icons/trace_remove.gif").createImage());
    btnRemove.setText("");
    fd_table.left = new FormAttachment(0);
    fd_table.right = new FormAttachment(100);
    tbl_composite.setLayoutData(fd_table);

    tableViewer.getTable().setHeaderVisible(true);
    tableViewer.getTable().setLinesVisible(true);

    final TableViewerColumn tblclmnDate = new TableViewerColumn(tableViewer, SWT.NONE);
    tblclmnDate.getColumn().setText("Date");
    tcl_layout.setColumnData(tblclmnDate.getColumn(), new ColumnWeightData(10, true));
    tblclmnDate.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            Trace t = (Trace) cell.getElement();
            cell.setText(DUtils.LONG_DATE_FORMAT.format(new Date(t.time)));
            cell.setForeground(getColor(t.type));
        }
    });

    final TableViewerColumn tblclmnType = new TableViewerColumn(tableViewer, SWT.NONE);
    tcl_layout.setColumnData(tblclmnType.getColumn(), new ColumnWeightData(10, true));
    tblclmnType.getColumn().setText("Type");
    tblclmnType.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            Trace t = (Trace) cell.getElement();
            cell.setText(ITraceManager.KEYS.type(t.type));
            cell.setForeground(getColor(t.type));
        }
    });

    final TableViewerColumn tblclmnPhase = new TableViewerColumn(tableViewer, SWT.NONE);
    tblclmnPhase.getColumn().setText("Phase");
    tcl_layout.setColumnData(tblclmnPhase.getColumn(), new ColumnWeightData(20, true));
    tblclmnPhase.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            Trace t = (Trace) cell.getElement();
            cell.setText(t.phase);
            cell.setForeground(getColor(t.type));
        }
    });

    final TableViewerColumn tblclmnTrace = new TableViewerColumn(tableViewer, SWT.NONE);
    tblclmnTrace.getColumn().setText("Trace");
    tcl_layout.setColumnData(tblclmnTrace.getColumn(), new ColumnWeightData(60, true));
    tblclmnTrace.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            Trace t = (Trace) cell.getElement();
            cell.setText(t.line);
            cell.setForeground(getColor(t.type));
        }
    });

    traceService.dispatch().subscribe(traceListener);
}