List of usage examples for org.eclipse.jface.viewers ViewerCell setImage
public void setImage(Image image)
From source file:org.bonitasoft.studio.parameters.property.section.provider.ParameterStyledLabelProvider.java
License:Open Source License
@Override public void update(ViewerCell cell) { if (cell.getElement() instanceof Parameter) { Parameter p = (Parameter) cell.getElement(); StyledString styledString = new StyledString(); String decoration = " -- " + typeProvider.getText(p); styledString.append(p.getName(), null); styledString.append(decoration, StyledString.DECORATIONS_STYLER); cell.setText(styledString.getString()); cell.setImage(getImage(p)); cell.setStyleRanges(styledString.getStyleRanges()); }/* www.j a va 2 s.c o m*/ }
From source file:org.csstudio.alarm.beast.ui.alarmtable.AlarmTableLabelProvider.java
License:Open Source License
/** Update one cell of the table */ @Override// w ww . j a va2s .c om 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 w w. j a v a 2 s.com*/ 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.askap.chat.GroupMemberLabelProvider.java
License:Open Source License
/** Display name of member with generic icon * {@inheritDoc}/*from ww w. j a v a 2 s. c o m*/ */ @Override public void update(final ViewerCell cell) { final String person = (String) cell.getElement(); cell.setText(person); if (icon == null) { final ImageDescriptor descr = Activator.getImage(ICON_NAME); if (descr == null) // Running as standalone demo? icon = new Image(Display.getCurrent(), ICON_NAME); else icon = descr.createImage(); } cell.setImage(icon); }
From source file:org.csstudio.display.pvtable.ui.PVTable.java
License:Open Source License
/** * Create GUI components//w ww . j a v a 2 s .c om * * @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.scantree.gui.CommandTreeLabelProvider.java
License:Open Source License
/** {@inheritDoc} */ @Override// ww w . ja v a2 s .c om 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.csstudio.trends.databrowser2.propsheet.AxesTableHandler.java
License:Open Source License
/** Create table columns: Auto-sizable, with label provider and editor * @param table_layout/*from w ww .j a v a 2s.com*/ */ private void createColumns(TableColumnLayout table_layout) { TableViewerColumn col; // Visible? Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.AxisVisibility, 45, 10); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); if (axis.isVisible()) cell.setImage(Activator.getDefault().getImage(Activator.ICON_CHECKED)); else cell.setImage(Activator.getDefault().getImage(Activator.ICON_UNCHECKED)); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).isVisible(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setVisible(((Boolean) value).booleanValue()); if (((Boolean) value).booleanValue()) { if (axis.isAutoScale()) model.setArchiveRescale(ArchiveRescale.NONE); } command.rememberNewConfig(); } }); // Axis Name Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.ValueAxisName, 100, 100); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); cell.setText(axis.getName()); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected Object getValue(final Object element) { return ((AxisConfig) element).getName(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final String name = value.toString().trim(); if (name.equals(axis.getName())) return; final ChangeAxisConfigCommand config = new ChangeAxisConfigCommand(operations_manager, axis); axis.setName(name); config.rememberNewConfig(); } }); // Use Axis Name ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.UseAxisName, 95, 10); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); if (axis.isUsingAxisName()) cell.setImage(Activator.getDefault().getImage(Activator.ICON_CHECKED)); else cell.setImage(Activator.getDefault().getImage(Activator.ICON_UNCHECKED)); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).isUsingAxisName(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.useAxisName(((Boolean) value).booleanValue()); command.rememberNewConfig(); } }); // Use Trace Names ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.UseTraceNames, 110, 10); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); if (axis.isUsingTraceNames()) cell.setImage(Activator.getDefault().getImage(Activator.ICON_CHECKED)); else cell.setImage(Activator.getDefault().getImage(Activator.ICON_UNCHECKED)); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).isUsingTraceNames(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.useTraceNames(((Boolean) value).booleanValue()); command.rememberNewConfig(); } }); // Show Grid? ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.Grid, 50, 5); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); if (axis.isGridVisible()) cell.setImage(Activator.getDefault().getImage(Activator.ICON_CHECKED)); else cell.setImage(Activator.getDefault().getImage(Activator.ICON_UNCHECKED)); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).isGridVisible(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setGridVisible(((Boolean) value).booleanValue()); command.rememberNewConfig(); } }); // Use Right Side? ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.AxisOnRight, 80, 10); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); if (axis.isOnRight()) cell.setImage(Activator.getDefault().getImage(Activator.ICON_CHECKED)); else cell.setImage(Activator.getDefault().getImage(Activator.ICON_UNCHECKED)); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).isOnRight(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setOnRight(((Boolean) value).booleanValue()); command.rememberNewConfig(); } }); // Color Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.Color, 40, 5); col.setLabelProvider(new ColorCellLabelProvider<AxisConfig>() { @Override protected Color getColor(final AxisConfig axis) { return color_registry.createColor(axis.getColor()); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new RGBCellEditor(axes_table.getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).getColor(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setColor((RGB) value); command.rememberNewConfig(); } }); // Minimum value Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.AxisMin, 70, 50); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); cell.setText(Double.toString(axis.getMin())); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected Object getValue(final Object element) { return Double.toString(((AxisConfig) element).getMin()); } @Override protected void setValue(final Object element, final Object value) { try { final AxisConfig axis = (AxisConfig) element; final double limit = Double.parseDouble(value.toString().trim()); if (limit == axis.getMin()) return; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setRange(limit, axis.getMax()); command.rememberNewConfig(); } catch (NumberFormatException ex) { // NOP, leave as is } } }); // Maximum value Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.AxisMax, 70, 50); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); cell.setText(Double.toString(axis.getMax())); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected Object getValue(final Object element) { return Double.toString(((AxisConfig) element).getMax()); } @Override protected void setValue(final Object element, final Object value) { try { final AxisConfig axis = (AxisConfig) element; final double limit = Double.parseDouble(value.toString().trim()); if (limit == axis.getMax()) return; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setRange(axis.getMin(), limit); command.rememberNewConfig(); } catch (NumberFormatException ex) { // NOP, leave as is } } }); // Auto scale Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.AutoScale, 80, 10); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); if (axis.isAutoScale()) cell.setImage(Activator.getDefault().getImage(Activator.ICON_CHECKED)); else cell.setImage(Activator.getDefault().getImage(Activator.ICON_UNCHECKED)); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).isAutoScale(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setAutoScale(((Boolean) value).booleanValue()); if (((Boolean) value).booleanValue() && axis.isVisible()) model.setArchiveRescale(ArchiveRescale.NONE); command.rememberNewConfig(); } }); // Log scale Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.LinLogScaleType, 80, 10); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); if (axis.isLogScale()) cell.setText(Messages.LogScale); else cell.setText(Messages.LinacScale); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).isLogScale(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setLogScale(((Boolean) value).booleanValue()); command.rememberNewConfig(); } }); // Label Font Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.AxisLabelFont, 40, 5); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); cell.setText(axis.getLabelFont().toString()); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new FontCellEditor(axes_table.getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).getLabelFont(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setLabelFont((FontData) value); command.rememberNewConfig(); } }); // Scale Font Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.AxisScaleFont, 40, 5); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); cell.setText(axis.getScaleFont().toString()); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new FontCellEditor(axes_table.getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).getScaleFont(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setScaleFont((FontData) value); command.rememberNewConfig(); } }); }
From source file:org.csstudio.trends.databrowser2.propsheet.TraceTableHandler.java
License:Open Source License
/** Create table columns: Auto-sizable, with label provider and editor * @param table_layout// w w w . java2s . c o m * @param operations_manager * @param table_viewer */ public void createColumns(final TableColumnLayout table_layout, final UndoableActionManager operations_manager, final TableViewer table_viewer) { color_registry = new LocalResourceManager(JFaceResources.getResources(), table_viewer.getTable()); final Shell shell = table_viewer.getTable().getShell(); // Visible Column ---------- TableViewerColumn view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceVisibility, 45, 1); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setImage(item.isVisible() ? Activator.getDefault().getImage(Activator.ICON_CHECKED) : Activator.getDefault().getImage(Activator.ICON_UNCHECKED)); } @Override public String getToolTipText(Object element) { return Messages.TraceVisibilityTT; } }); new TableColumnSortHelper<ModelItem>(table_viewer, view_col) { @Override public int compare(final ModelItem item1, final ModelItem item2) { final int v1 = item1.isVisible() ? 1 : 0; final int v2 = item2.isVisible() ? 1 : 0; final int cmp = v1 - v2; if (cmp != 0) return cmp; return item1.getName().compareTo(item2.getName()); } }; view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected CellEditor getCellEditor(final Object element) { editing = true; return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((ModelItem) element).isVisible(); } @Override protected void setValue(final Object element, final Object value) { final ModelItem item = (ModelItem) element; final boolean visible = ((Boolean) value).booleanValue(); if (!visible && !store.getBoolean(Preferences.ALLOW_HIDE_TRACE)) { MessageDialogWithToggle md = MessageDialogWithToggle.openOkCancelConfirm(shell, Messages.HideTraceWarning, Messages.HideTraceWarningDetail, Messages.DoNotShowAgain, false, null, null); if (md.getToggleState()) store.setValue(Preferences.ALLOW_HIDE_TRACE, true); if (md.getReturnCode() != MessageDialog.OK) return; } new ChangeVisibilityCommand(operations_manager, item, visible); editing = false; } }); // Trace PV/Formula Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.ItemName, 70, 70); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(item.getName()); } @Override public String getToolTipText(Object element) { return Messages.ItemNameTT; } }); new TableColumnSortHelper<ModelItem>(table_viewer, view_col) { @Override public int compare(final ModelItem item1, final ModelItem item2) { return item1.getName().compareTo(item2.getName()); } }; view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected Object getValue(final Object element) { return ((ModelItem) element).getName(); } @Override protected CellEditor getCellEditor(Object element) { editing = true; return super.getCellEditor(element); } @Override protected void setValue(final Object element, final Object value) { final String new_name = value.toString().trim(); final ModelItem item = (ModelItem) element; if (new_name.equals(item.getName())) return; new ChangeNameCommand(shell, operations_manager, item, new_name); editing = false; } }); // Display Name Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceDisplayName, 70, 70); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(item.getDisplayName()); } @Override public String getToolTipText(Object element) { return Messages.TraceDisplayNameTT; } }); new TableColumnSortHelper<ModelItem>(table_viewer, view_col) { @Override public int compare(final ModelItem item1, final ModelItem item2) { return item1.getDisplayName().compareTo(item2.getDisplayName()); } }; view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected Object getValue(final Object element) { return ((ModelItem) element).getDisplayName(); } @Override protected CellEditor getCellEditor(Object element) { editing = true; return super.getCellEditor(element); } @Override protected void setValue(final Object element, final Object value) { final String new_name = value.toString().trim(); final ModelItem item = (ModelItem) element; if (new_name.equals(item.getDisplayName())) return; new ChangeDisplayNameCommand(operations_manager, item, new_name); editing = false; } }); // Color Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.Color, 40, 10); view_col.setLabelProvider(new ColorCellLabelProvider<ModelItem>() { @Override protected Color getColor(ModelItem item) { return color_registry.createColor(item.getColor()); } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected CellEditor getCellEditor(final Object element) { editing = true; return new RGBCellEditor(table_viewer.getTable()); } @Override protected Object getValue(final Object element) { return ((ModelItem) element).getColor(); } @Override protected void setValue(final Object element, final Object value) { new ChangeColorCommand(operations_manager, (ModelItem) element, (RGB) value); editing = false; } }); // Selected sample time stamp and value view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.CursorTimestamp, 150, 30); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); final Optional<PlotDataItem<Instant>> sample = item.getSelectedSample(); if (sample.isPresent()) cell.setText(TimeHelper.format(sample.get().getPosition())); else cell.setText(Messages.NotApplicable); } @Override public String getToolTipText(Object element) { return Messages.CursorTimestampTT; } }); view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.CursorValue, 40, 30); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); final Optional<PlotDataItem<Instant>> sample = item.getSelectedSample(); if (sample.isPresent()) { final PlotSample plot_sample = (PlotSample) sample.get(); String text = DefaultVTypeFormat.get().format(plot_sample.getVType()); final String units = item.getUnits(); if (units != null) text += " " + units; //$NON-NLS-1$ cell.setText(text); } else cell.setText(Messages.NotApplicable); } @Override public String getToolTipText(Object element) { return Messages.CursorValueTT; } }); // Scan Period Column (only applies to PVItems) ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.ScanPeriod, 70, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); if (item instanceof PVItem) cell.setText(Double.toString(((PVItem) item).getScanPeriod())); else cell.setText(Messages.NotApplicable); } @Override public String getToolTipText(final Object element) { if (!(element instanceof PVItem)) return null; return Messages.ScanPeriodTT; } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected boolean canEdit(Object element) { return element instanceof PVItem; } @Override protected CellEditor getCellEditor(Object element) { editing = true; return super.getCellEditor(element); } @Override protected Object getValue(final Object element) { if (element instanceof PVItem) return Double.toString(((PVItem) element).getScanPeriod()); else return Messages.NotApplicable; } @Override protected void setValue(final Object element, final Object value) { if (!(element instanceof PVItem)) return; final PVItem pv = (PVItem) element; try { final double period = Double.parseDouble(value.toString().trim()); if (period != pv.getScanPeriod()) new ChangeSamplePeriodCommand(shell, operations_manager, pv, period); editing = false; } catch (NumberFormatException ex) { // Display will revert to original value return; } } }); // Buffer size Column (only applies to PVItems) ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.LiveSampleBufferSize, 70, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); if (item instanceof PVItem) cell.setText(Integer.toString(((PVItem) item).getLiveCapacity())); else cell.setText(Messages.NotApplicable); } @Override public String getToolTipText(final Object element) { if (!(element instanceof PVItem)) return null; final PVItem pv = (PVItem) element; return NLS.bind(Messages.LiveBufferSizeInfoFmt, pv.getLiveCapacity(), new RelativeTime(pv.getLiveCapacity()).toString()); } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected boolean canEdit(Object element) { return element instanceof PVItem; } @Override protected Object getValue(final Object element) { if (element instanceof PVItem) return Integer.toString(((PVItem) element).getLiveCapacity()); else return Messages.NotApplicable; } @Override protected CellEditor getCellEditor(Object element) { editing = true; return super.getCellEditor(element); } @Override protected void setValue(final Object element, final Object value) { if (!(element instanceof PVItem)) return; final PVItem pv = (PVItem) element; try { final int size = Integer.parseInt(value.toString().trim()); if (size != pv.getLiveCapacity()) new ChangeLiveCapacityCommand(shell, operations_manager, pv, size); editing = false; } catch (NumberFormatException ex) { // Display will revert to original value return; } } }); // Axis Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.Axis, 60, 30); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(item.getAxis().getName()); } @Override public String getToolTipText(Object element) { return Messages.AxisTT; } }); new TableColumnSortHelper<ModelItem>(table_viewer, view_col) { @Override public int compare(final ModelItem item1, final ModelItem item2) { final int cmp = item1.getAxis().getName().compareTo(item2.getAxis().getName()); if (cmp != 0) return cmp; return item1.getDisplayName().compareTo(item2.getDisplayName()); } }; view_col.setEditingSupport(new EditSupportBase(table_viewer) { // Thread-safe copy of model axes as this editor is invoked final List<AxisConfig> axes = new ArrayList<>(); @Override protected CellEditor getCellEditor(final Object element) { editing = true; final List<String> axis_names = new ArrayList<>(); axes.clear(); for (AxisConfig axis : model.getAxes()) { axes.add(axis); axis_names.add(axis.getName()); } final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(), axis_names.toArray(new String[axis_names.size()]), SWT.READ_ONLY); combo.setValue(getValue(element)); return combo; } @Override protected Object getValue(final Object element) { return model.getAxisIndex(((ModelItem) element).getAxis()); } @Override protected void setValue(final Object element, final Object value) { final int axis_index = ((Integer) value).intValue(); final AxisConfig axis = axes.get(axis_index); final ModelItem item = (ModelItem) element; if (axis != item.getAxis()) new ChangeAxisCommand(operations_manager, item, axis); editing = false; } }); // Trace Type Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceType, 75, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(item.getTraceType().toString()); } @Override public String getToolTipText(Object element) { return Messages.TraceTypeTT; } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected CellEditor getCellEditor(final Object element) { editing = true; final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(), TraceType.getDisplayNames(), SWT.READ_ONLY); combo.setValue(getValue(element)); return combo; } @Override protected Object getValue(final Object element) { return ((ModelItem) element).getTraceType().ordinal(); } @Override protected void setValue(final Object element, final Object value) { final TraceType trace_type = TraceType.fromOrdinal(((Integer) value).intValue()); final ModelItem item = (ModelItem) element; if (trace_type != item.getTraceType()) new ChangeTraceTypeCommand(operations_manager, item, trace_type); editing = false; } }); // Line Width Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceLineWidth, 40, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(Integer.toString(item.getLineWidth())); } @Override public String getToolTipText(Object element) { return Messages.TraceLineWidthTT; } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected Object getValue(final Object element) { return Integer.toString(((ModelItem) element).getLineWidth()); } @Override protected CellEditor getCellEditor(Object element) { editing = true; return super.getCellEditor(element); } @Override protected void setValue(final Object element, final Object value) { int width; try { width = Integer.parseInt(value.toString().trim()); } catch (NumberFormatException ex) { width = 0; } final ModelItem item = (ModelItem) element; if (width != item.getLineWidth()) new ChangeLineWidthCommand(operations_manager, item, width); editing = false; } }); // Point Type Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.PointType, 75, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(item.getPointType().toString()); } @Override public String getToolTipText(Object element) { return Messages.PointTypeTT; } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected CellEditor getCellEditor(final Object element) { editing = true; final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(), PointType.getDisplayNames(), SWT.READ_ONLY); combo.setValue(getValue(element)); return combo; } @Override protected Object getValue(final Object element) { return ((ModelItem) element).getPointType().ordinal(); } @Override protected void setValue(final Object element, final Object value) { final PointType point_type = PointType.fromOrdinal(((Integer) value).intValue()); final ModelItem item = (ModelItem) element; if (point_type != item.getPointType()) new ChangePointTypeCommand(operations_manager, item, point_type); editing = false; } }); // Point Size Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.PointSize, 40, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(Integer.toString(item.getPointSize())); } @Override public String getToolTipText(Object element) { return Messages.PointSizeTT; } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected Object getValue(final Object element) { return Integer.toString(((ModelItem) element).getPointSize()); } @Override protected CellEditor getCellEditor(Object element) { editing = true; return super.getCellEditor(element); } @Override protected void setValue(final Object element, final Object value) { int size; try { size = Integer.parseInt(value.toString().trim()); } catch (NumberFormatException ex) { size = 0; } final ModelItem item = (ModelItem) element; if (size != item.getPointSize()) new ChangePointSizeCommand(operations_manager, item, size); editing = false; } }); // Request Type Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.RequestType, 75, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); if (item instanceof PVItem) cell.setText(((PVItem) item).getRequestType().toString()); else cell.setText(Messages.NotApplicable); } @Override public String getToolTipText(Object element) { return Messages.RequestTypeTT; } }); // Edit as boolean: Raw == false, Optimized == true view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected boolean canEdit(final Object element) { return element instanceof PVItem; } @Override protected CellEditor getCellEditor(final Object element) { editing = true; return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((PVItem) element).getRequestType() == RequestType.OPTIMIZED; } @Override protected void setValue(final Object element, final Object value) { final PVItem item = (PVItem) element; final RequestType request_type = ((Boolean) value).booleanValue() ? RequestType.OPTIMIZED : RequestType.RAW; if (request_type == RequestType.RAW && !store.getBoolean(Preferences.ALLOW_REQUEST_RAW)) { MessageDialogWithToggle md = MessageDialogWithToggle.openOkCancelConfirm(shell, Messages.RequestTypeWarning, Messages.RequestTypeWarningDetail, Messages.DoNotShowAgain, false, null, null); if (md.getToggleState()) store.setValue(Preferences.ALLOW_REQUEST_RAW, true); if (md.getReturnCode() == MessageDialog.OK) return; } new ChangeRequestTypeCommand(operations_manager, item, request_type); editing = false; } }); // Waveform Index Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.WaveformIndexCol, 40, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(Integer.toString(item.getWaveformIndex())); } @Override public String getToolTipText(Object element) { return Messages.WaveformIndexColTT; } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected Object getValue(final Object element) { return Integer.toString(((ModelItem) element).getWaveformIndex()); } @Override protected CellEditor getCellEditor(Object element) { editing = true; return super.getCellEditor(element); } @Override protected void setValue(final Object element, final Object value) { int index; try { index = Integer.parseInt(value.toString().trim()); if (index < 0) return; final ModelItem item = (ModelItem) element; if (index != item.getWaveformIndex()) new ChangeWaveformIndexCommand(operations_manager, item, index); } catch (NumberFormatException ex) { return; } finally { editing = false; } } }); ColumnViewerToolTipSupport.enableFor(table_viewer); }
From source file:org.csstudio.trends.databrowser3.propsheet.AxesTableHandler.java
License:Open Source License
/** Create table columns: Auto-sizable, with label provider and editor * @param table_layout/* w ww. j ava 2 s . c om*/ */ private void createColumns(TableColumnLayout table_layout) { TableViewerColumn col; // Visible? Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.AxisVisibility, 45, 10); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); if (axis.isVisible()) cell.setImage(Activator.getDefault().getImage(Activator.ICON_CHECKED)); else cell.setImage(Activator.getDefault().getImage(Activator.ICON_UNCHECKED)); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).isVisible(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setVisible(((Boolean) value).booleanValue()); command.rememberNewConfig(); } }); // Axis Name Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.ValueAxisName, 100, 100); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); cell.setText(axis.getName()); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected Object getValue(final Object element) { return ((AxisConfig) element).getName(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final String name = value.toString().trim(); if (name.equals(axis.getName())) return; final ChangeAxisConfigCommand config = new ChangeAxisConfigCommand(operations_manager, axis); axis.setName(name); config.rememberNewConfig(); } }); // Use Axis Name ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.UseAxisName, 95, 10); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); if (axis.isUsingAxisName()) cell.setImage(Activator.getDefault().getImage(Activator.ICON_CHECKED)); else cell.setImage(Activator.getDefault().getImage(Activator.ICON_UNCHECKED)); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).isUsingAxisName(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.useAxisName(((Boolean) value).booleanValue()); command.rememberNewConfig(); } }); // Use Trace Names ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.UseTraceNames, 110, 10); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); if (axis.isUsingTraceNames()) cell.setImage(Activator.getDefault().getImage(Activator.ICON_CHECKED)); else cell.setImage(Activator.getDefault().getImage(Activator.ICON_UNCHECKED)); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).isUsingTraceNames(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.useTraceNames(((Boolean) value).booleanValue()); command.rememberNewConfig(); } }); // Show Grid? ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.Grid, 50, 5); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); if (axis.isGridVisible()) cell.setImage(Activator.getDefault().getImage(Activator.ICON_CHECKED)); else cell.setImage(Activator.getDefault().getImage(Activator.ICON_UNCHECKED)); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).isGridVisible(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setGridVisible(((Boolean) value).booleanValue()); command.rememberNewConfig(); } }); // Use Right Side? ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.AxisOnRight, 80, 10); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); if (axis.isOnRight()) cell.setImage(Activator.getDefault().getImage(Activator.ICON_CHECKED)); else cell.setImage(Activator.getDefault().getImage(Activator.ICON_UNCHECKED)); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).isOnRight(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setOnRight(((Boolean) value).booleanValue()); command.rememberNewConfig(); } }); // Color Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.Color, 40, 5); col.setLabelProvider(new ColorCellLabelProvider<AxisConfig>() { @Override protected Color getColor(final AxisConfig axis) { return color_registry.createColor(axis.getRGBColor()); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new RGBCellEditor(axes_table.getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).getRGBColor(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setColor((RGB) value); command.rememberNewConfig(); } }); // Minimum value Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.AxisMin, 70, 50); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); cell.setText(Double.toString(axis.getMin())); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected Object getValue(final Object element) { return Double.toString(((AxisConfig) element).getMin()); } @Override protected void setValue(final Object element, final Object value) { try { final AxisConfig axis = (AxisConfig) element; final double limit = Double.parseDouble(value.toString().trim()); if (limit == axis.getMin()) return; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setRange(limit, axis.getMax()); command.rememberNewConfig(); } catch (NumberFormatException ex) { // NOP, leave as is } } }); // Maximum value Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.AxisMax, 70, 50); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); cell.setText(Double.toString(axis.getMax())); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected Object getValue(final Object element) { return Double.toString(((AxisConfig) element).getMax()); } @Override protected void setValue(final Object element, final Object value) { try { final AxisConfig axis = (AxisConfig) element; final double limit = Double.parseDouble(value.toString().trim()); if (limit == axis.getMax()) return; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setRange(axis.getMin(), limit); command.rememberNewConfig(); } catch (NumberFormatException ex) { // NOP, leave as is } } }); // Auto scale Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.AutoScale, 80, 10); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); if (axis.isAutoScale()) cell.setImage(Activator.getDefault().getImage(Activator.ICON_CHECKED)); else cell.setImage(Activator.getDefault().getImage(Activator.ICON_UNCHECKED)); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).isAutoScale(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setAutoScale(((Boolean) value).booleanValue()); command.rememberNewConfig(); } }); // Log scale Column ---------- col = TableHelper.createColumn(table_layout, axes_table, Messages.LinLogScaleType, 80, 10); col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final AxisConfig axis = (AxisConfig) cell.getElement(); if (axis.isLogScale()) cell.setText(Messages.LogScale); else cell.setText(Messages.LinacScale); } }); col.setEditingSupport(new EditSupportBase(axes_table) { @Override protected CellEditor getCellEditor(final Object element) { return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((AxisConfig) element).isLogScale(); } @Override protected void setValue(final Object element, final Object value) { final AxisConfig axis = (AxisConfig) element; final ChangeAxisConfigCommand command = new ChangeAxisConfigCommand(operations_manager, axis); axis.setLogScale(((Boolean) value).booleanValue()); command.rememberNewConfig(); } }); }
From source file:org.csstudio.trends.databrowser3.propsheet.TraceTableHandler.java
License:Open Source License
/** Create table columns: Auto-sizable, with label provider and editor * @param table_layout// www . j ava 2s . co m * @param operations_manager * @param table_viewer */ public void createColumns(final TableColumnLayout table_layout, final UndoableActionManager operations_manager, final TableViewer table_viewer) { color_registry = new LocalResourceManager(JFaceResources.getResources(), table_viewer.getTable()); final Shell shell = table_viewer.getTable().getShell(); // Visible Column ---------- TableViewerColumn view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceVisibility, 45, 1); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setImage(item.isVisible() ? Activator.getDefault().getImage(Activator.ICON_CHECKED) : Activator.getDefault().getImage(Activator.ICON_UNCHECKED)); } @Override public String getToolTipText(Object element) { return Messages.TraceVisibilityTT; } }); new TableColumnSortHelper<ModelItem>(table_viewer, view_col) { @Override public int compare(final ModelItem item1, final ModelItem item2) { final int v1 = item1.isVisible() ? 1 : 0; final int v2 = item2.isVisible() ? 1 : 0; final int cmp = v1 - v2; if (cmp != 0) return cmp; return item1.getName().compareTo(item2.getName()); } }; view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected CellEditor getCellEditor(final Object element) { editing = true; return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((ModelItem) element).isVisible(); } @Override protected void setValue(final Object element, final Object value) { final ModelItem item = (ModelItem) element; final boolean visible = ((Boolean) value).booleanValue(); if (!visible && prompt_for_not_visible) { if (!MessageDialog.openQuestion(shell, Messages.HideTraceWarning, Messages.HideTraceWarningDetail)) return; prompt_for_not_visible = false; } new ChangeVisibilityCommand(operations_manager, item, visible); editing = false; } }); // Trace PV/Formula Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.ItemName, 70, 70); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(item.getName()); } @Override public String getToolTipText(Object element) { return Messages.ItemNameTT; } }); new TableColumnSortHelper<ModelItem>(table_viewer, view_col) { @Override public int compare(final ModelItem item1, final ModelItem item2) { return item1.getName().compareTo(item2.getName()); } }; view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected Object getValue(final Object element) { return ((ModelItem) element).getName(); } @Override protected CellEditor getCellEditor(Object element) { editing = true; return super.getCellEditor(element); } @Override protected void setValue(final Object element, final Object value) { final String new_name = value.toString().trim(); final ModelItem item = (ModelItem) element; if (new_name.equals(item.getName())) return; new ChangeNameCommand(shell, operations_manager, item, new_name); editing = false; } }); // Display Name Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceDisplayName, 70, 70); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(item.getDisplayName()); } @Override public String getToolTipText(Object element) { return Messages.TraceDisplayNameTT; } }); new TableColumnSortHelper<ModelItem>(table_viewer, view_col) { @Override public int compare(final ModelItem item1, final ModelItem item2) { return item1.getDisplayName().compareTo(item2.getDisplayName()); } }; view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected Object getValue(final Object element) { return ((ModelItem) element).getDisplayName(); } @Override protected CellEditor getCellEditor(Object element) { editing = true; return super.getCellEditor(element); } @Override protected void setValue(final Object element, final Object value) { final String new_name = value.toString().trim(); final ModelItem item = (ModelItem) element; if (new_name.equals(item.getDisplayName())) return; new ChangeDisplayNameCommand(operations_manager, item, new_name); editing = false; } }); // Color Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.Color, 40, 10); view_col.setLabelProvider(new ColorCellLabelProvider<ModelItem>() { @Override protected Color getColor(ModelItem item) { return color_registry.createColor(SWTMediaPool.getRGB(item.getPaintColor())); } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected CellEditor getCellEditor(final Object element) { editing = true; return new RGBCellEditor(table_viewer.getTable()); } @Override protected Object getValue(final Object element) { return ((ModelItem) element).getRGBColor(); } @Override protected void setValue(final Object element, final Object value) { new ChangeColorCommand(operations_manager, (ModelItem) element, SWTMediaPool.getJFX((RGB) value)); editing = false; } }); // Selected sample time stamp and value view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.CursorTimestamp, 150, 30); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); final Optional<PlotDataItem<Instant>> sample = item.getSelectedSample(); if (sample.isPresent()) cell.setText(TimeHelper.format(sample.get().getPosition())); else cell.setText(Messages.NotApplicable); } @Override public String getToolTipText(Object element) { return Messages.CursorTimestampTT; } }); view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.CursorValue, 40, 30); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); final Optional<PlotDataItem<Instant>> sample = item.getSelectedSample(); if (sample.isPresent()) { final PlotSample plot_sample = (PlotSample) sample.get(); String text = DefaultVTypeFormat.get().format(plot_sample.getVType()); final String units = item.getUnits(); if (units != null) text += " " + units; //$NON-NLS-1$ cell.setText(text); } else cell.setText(Messages.NotApplicable); } @Override public String getToolTipText(Object element) { return Messages.CursorValueTT; } }); // Scan Period Column (only applies to PVItems) ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.ScanPeriod, 70, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); if (item instanceof PVItem) cell.setText(Double.toString(((PVItem) item).getScanPeriod())); else cell.setText(Messages.NotApplicable); } @Override public String getToolTipText(final Object element) { if (!(element instanceof PVItem)) return null; return Messages.ScanPeriodTT; } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected boolean canEdit(Object element) { return element instanceof PVItem; } @Override protected CellEditor getCellEditor(Object element) { editing = true; return super.getCellEditor(element); } @Override protected Object getValue(final Object element) { if (element instanceof PVItem) return Double.toString(((PVItem) element).getScanPeriod()); else return Messages.NotApplicable; } @Override protected void setValue(final Object element, final Object value) { if (!(element instanceof PVItem)) return; final PVItem pv = (PVItem) element; try { final double period = Double.parseDouble(value.toString().trim()); if (period != pv.getScanPeriod()) new ChangeSamplePeriodCommand(shell, operations_manager, pv, period); editing = false; } catch (NumberFormatException ex) { // Display will revert to original value return; } } }); // Buffer size Column (only applies to PVItems) ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.LiveSampleBufferSize, 70, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); if (item instanceof PVItem) cell.setText(Integer.toString(((PVItem) item).getLiveCapacity())); else cell.setText(Messages.NotApplicable); } @Override public String getToolTipText(final Object element) { if (!(element instanceof PVItem)) return null; final PVItem pv = (PVItem) element; return NLS.bind(Messages.LiveBufferSizeInfoFmt, pv.getLiveCapacity(), new RelativeTime(pv.getLiveCapacity()).toString()); } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected boolean canEdit(Object element) { return element instanceof PVItem; } @Override protected Object getValue(final Object element) { if (element instanceof PVItem) return Integer.toString(((PVItem) element).getLiveCapacity()); else return Messages.NotApplicable; } @Override protected CellEditor getCellEditor(Object element) { editing = true; return super.getCellEditor(element); } @Override protected void setValue(final Object element, final Object value) { if (!(element instanceof PVItem)) return; final PVItem pv = (PVItem) element; try { final int size = Integer.parseInt(value.toString().trim()); if (size != pv.getLiveCapacity()) new ChangeLiveCapacityCommand(shell, operations_manager, pv, size); editing = false; } catch (NumberFormatException ex) { // Display will revert to original value return; } } }); // Axis Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.Axis, 60, 30); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(item.getAxis().getName()); } @Override public String getToolTipText(Object element) { return Messages.AxisTT; } }); new TableColumnSortHelper<ModelItem>(table_viewer, view_col) { @Override public int compare(final ModelItem item1, final ModelItem item2) { final int cmp = item1.getAxis().getName().compareTo(item2.getAxis().getName()); if (cmp != 0) return cmp; return item1.getDisplayName().compareTo(item2.getDisplayName()); } }; view_col.setEditingSupport(new EditSupportBase(table_viewer) { // Thread-safe copy of model axes as this editor is invoked final List<AxisConfig> axes = new ArrayList<>(); @Override protected CellEditor getCellEditor(final Object element) { editing = true; final List<String> axis_names = new ArrayList<>(); axes.clear(); for (AxisConfig axis : model.getAxes()) { axes.add(axis); axis_names.add(axis.getName()); } final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(), axis_names.toArray(new String[axis_names.size()]), SWT.READ_ONLY); combo.setValue(getValue(element)); return combo; } @Override protected Object getValue(final Object element) { return model.getAxisIndex(((ModelItem) element).getAxis()); } @Override protected void setValue(final Object element, final Object value) { final int axis_index = ((Integer) value).intValue(); final AxisConfig axis = axes.get(axis_index); final ModelItem item = (ModelItem) element; if (axis != item.getAxis()) new ChangeAxisCommand(operations_manager, item, axis); editing = false; } }); // Trace Type Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceType, 75, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(item.getTraceType().toString()); } @Override public String getToolTipText(Object element) { return Messages.TraceTypeTT; } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected CellEditor getCellEditor(final Object element) { editing = true; final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(), TraceType.getDisplayNames(), SWT.READ_ONLY); combo.setValue(getValue(element)); return combo; } @Override protected Object getValue(final Object element) { return ((ModelItem) element).getTraceType().ordinal(); } @Override protected void setValue(final Object element, final Object value) { final TraceType trace_type = TraceType.values()[(((Integer) value).intValue())]; final ModelItem item = (ModelItem) element; if (trace_type != item.getTraceType()) new ChangeTraceTypeCommand(operations_manager, item, trace_type); editing = false; } }); // Line Width Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceLineWidth, 40, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(Integer.toString(item.getLineWidth())); } @Override public String getToolTipText(Object element) { return Messages.TraceLineWidthTT; } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected Object getValue(final Object element) { return Integer.toString(((ModelItem) element).getLineWidth()); } @Override protected CellEditor getCellEditor(Object element) { editing = true; return super.getCellEditor(element); } @Override protected void setValue(final Object element, final Object value) { int width; try { width = Integer.parseInt(value.toString().trim()); } catch (NumberFormatException ex) { width = 0; } final ModelItem item = (ModelItem) element; if (width != item.getLineWidth()) new ChangeLineWidthCommand(operations_manager, item, width); editing = false; } }); // Line Style Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceLineStyle, 75, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(item.getLineStyle().toString()); } @Override public String getToolTipText(Object element) { return Messages.TraceLineStyleTT; } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected CellEditor getCellEditor(final Object element) { editing = true; final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(), LineStyle.getDisplayNames(), SWT.READ_ONLY); combo.setValue(getValue(element)); return combo; } @Override protected Object getValue(final Object element) { return ((ModelItem) element).getLineStyle().ordinal(); } @Override protected void setValue(final Object element, final Object value) { final LineStyle line_style = LineStyle.values()[((Integer) value).intValue()]; final ModelItem item = (ModelItem) element; if (line_style != item.getLineStyle()) new ChangeLineStyleCommand(operations_manager, item, line_style); editing = false; } }); // Point Type Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.PointType, 75, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(item.getPointType().toString()); } @Override public String getToolTipText(Object element) { return Messages.PointTypeTT; } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected CellEditor getCellEditor(final Object element) { editing = true; final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(), PointType.getDisplayNames(), SWT.READ_ONLY); combo.setValue(getValue(element)); return combo; } @Override protected Object getValue(final Object element) { return ((ModelItem) element).getPointType().ordinal(); } @Override protected void setValue(final Object element, final Object value) { final PointType point_type = PointType.values()[((Integer) value).intValue()]; final ModelItem item = (ModelItem) element; if (point_type != item.getPointType()) new ChangePointTypeCommand(operations_manager, item, point_type); editing = false; } }); // Point Size Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.PointSize, 40, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(Integer.toString(item.getPointSize())); } @Override public String getToolTipText(Object element) { return Messages.PointSizeTT; } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected Object getValue(final Object element) { return Integer.toString(((ModelItem) element).getPointSize()); } @Override protected CellEditor getCellEditor(Object element) { editing = true; return super.getCellEditor(element); } @Override protected void setValue(final Object element, final Object value) { int size; try { size = Integer.parseInt(value.toString().trim()); } catch (NumberFormatException ex) { size = 0; } final ModelItem item = (ModelItem) element; if (size != item.getPointSize()) new ChangePointSizeCommand(operations_manager, item, size); editing = false; } }); // Request Type Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.RequestType, 75, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); if (item instanceof PVItem) cell.setText(((PVItem) item).getRequestType().toString()); else cell.setText(Messages.NotApplicable); } @Override public String getToolTipText(Object element) { return Messages.RequestTypeTT; } }); // Edit as boolean: Raw == false, Optimized == true view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected boolean canEdit(final Object element) { return element instanceof PVItem; } @Override protected CellEditor getCellEditor(final Object element) { editing = true; return new CheckboxCellEditor(((TableViewer) getViewer()).getTable()); } @Override protected Object getValue(final Object element) { return ((PVItem) element).getRequestType() == RequestType.OPTIMIZED; } @Override protected void setValue(final Object element, final Object value) { final PVItem item = (PVItem) element; final RequestType request_type = ((Boolean) value).booleanValue() ? RequestType.OPTIMIZED : RequestType.RAW; if (request_type == RequestType.RAW && prompt_for_raw_data_request) { if (!MessageDialog.openQuestion(shell, Messages.RequestTypeWarning, Messages.RequestTypeWarningDetail)) return; prompt_for_raw_data_request = false; } new ChangeRequestTypeCommand(operations_manager, item, request_type); editing = false; } }); // Waveform Index Column ---------- view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.WaveformIndexCol, 40, 10); view_col.setLabelProvider(new CellLabelProvider() { @Override public void update(final ViewerCell cell) { final ModelItem item = (ModelItem) cell.getElement(); cell.setText(Integer.toString(item.getWaveformIndex())); } @Override public String getToolTipText(Object element) { return Messages.WaveformIndexColTT; } }); view_col.setEditingSupport(new EditSupportBase(table_viewer) { @Override protected Object getValue(final Object element) { return Integer.toString(((ModelItem) element).getWaveformIndex()); } @Override protected CellEditor getCellEditor(Object element) { editing = true; return super.getCellEditor(element); } @Override protected void setValue(final Object element, final Object value) { int index; try { index = Integer.parseInt(value.toString().trim()); if (index < 0) return; final ModelItem item = (ModelItem) element; if (index != item.getWaveformIndex()) new ChangeWaveformIndexCommand(operations_manager, item, index); } catch (NumberFormatException ex) { return; } finally { editing = false; } } }); ColumnViewerToolTipSupport.enableFor(table_viewer); }