List of usage examples for org.eclipse.jface.viewers ViewerCell setForeground
public void setForeground(Color foreground)
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); }