List of usage examples for org.eclipse.jface.databinding.viewers ObservableValueEditingSupport create
public static <E, M, T> EditingSupport create(ColumnViewer viewer, DataBindingContext dbc, final CellEditor cellEditor, final IValueProperty<? super CellEditor, T> cellEditorProperty, final IValueProperty<E, M> elementProperty)
From source file:ccw.preferences.HoverPreferencePage.java
License:Open Source License
protected DataBindingContext initDataBindings() { final DataBindingContext context = new DataBindingContext(); // Page Support PreferencePageSupport.create(this, context); // /////////////////////////// // Label/Content providers \\ // /////////////////////////// ObservableListContentProvider contentProvider = new ObservableListContentProvider(); IObservableMap[] columnsObservables = Properties.observeEach(contentProvider.getKnownElements(), HoverViewModel.hoverDisplayDomain); ObservableMapLabelProvider labelProvider = new ObservableMapLabelProvider(columnsObservables); fHoverTableViewer.setLabelProvider(labelProvider); fHoverTableViewer.setContentProvider(contentProvider); fHoverTableViewer.setInput(fViewModel.hoverObservableList); ////////////////////////// // Selected hover logic \\ ////////////////////////// final IObservableValue selectedHover = ViewersObservables.observeSingleSelection(fHoverTableViewer); final IObservableValue isHoverSelected = new ComputedValue(Boolean.TYPE) { @Override/*from w w w .ja v a 2 s . c o m*/ protected Object calculate() { return Boolean.valueOf(selectedHover.getValue() != null); } }; context.bindValue(WidgetProperties.enabled().observe(fGrpSummary), isHoverSelected); context.bindValue(WidgetProperties.enabled().observe(fSummaryHoverModifierStringText), isHoverSelected); final IObservableValue stateMaskOfSelected = HoverViewModel.hoverStateMask.observeDetail(selectedHover); final IObservableValue modifierStringOfSelected = HoverViewModel.hoverModifierString .observeDetail(selectedHover); final UpdateValueStrategy modifierStringStrategyConvert = new UpdateValueStrategy( UpdateValueStrategy.POLICY_CONVERT); modifierStringStrategyConvert.setConverter(new HoverViewModel.StateMaskToModifierConverter()); final Binding stateMaskToModifierBinding = context.bindValue(modifierStringOfSelected, stateMaskOfSelected, new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), modifierStringStrategyConvert); if (!fViewModel.hoverObservableList.isEmpty()) { selectedHover.setValue(fViewModel.hoverObservableList.get(0)); } ////////////////////// // Validation logic \\ ////////////////////// MultiValidator validator = new MultiValidator() { @Override protected IStatus validate() { IStatus status = ValidationStatus.ok(); if (isHoverSelected.getValue() == Boolean.TRUE) { status = fViewModel.stateMaskValidator.validate(stateMaskOfSelected.getValue()); } if (status.isOK()) { Iterator<HoverDescriptor> it = fViewModel.checkedSet.iterator(); while (it.hasNext()) { int stateMask = it.next().getStateMask(); if (!fViewModel.isStateMaskUnique(stateMask)) { status = fViewModel.stateMaskError(stateMask); } } } return status; } }; context.addValidationStatusProvider(validator); ////////////////////////// // Checked hovers logic \\ ////////////////////////// // AR - because of some ordering issue problem, I am disabling the automatic // update from model to target of the checked hovers and... final UpdateSetStrategy checkedModelToTargetStrategy = new UpdateSetStrategy( UpdateValueStrategy.POLICY_ON_REQUEST); // AR - ... add an explicit binding that will be needed... final Binding checkedBindSet = context.bindSet( ViewersObservables.observeCheckedElements(fHoverTableViewer, HoverDescriptor.class), fViewModel.checkedSet, null, checkedModelToTargetStrategy); // AR - ...to manually trigger the update when new elements are added to the provider... IObservableSet realizedElements = contentProvider.getRealizedElements(); realizedElements.addChangeListener(new IChangeListener() { @Override public void handleChange(ChangeEvent event) { checkedBindSet.updateModelToTarget(); } }); ///////////////// // UI Bindings \\ ///////////////// EditingSupport modifierEditorSupport = ObservableValueEditingSupport.create(fHoverTableViewer, context, fHoverModifierStringTextCellEditor, CellEditorProperties.control().value(WidgetProperties.text(SWT.Modify)), HoverViewModel.hoverModifierString); fModifierTableViewerColumn.setEditingSupport(modifierEditorSupport); final UpdateValueStrategy statusMaskToModifierStrategy = new UpdateValueStrategy(); statusMaskToModifierStrategy.setConverter(new HoverViewModel.StateMaskToModifierConverter()); final UpdateValueStrategy modifierToStatusMaskStrategy = new UpdateValueStrategy(); modifierToStatusMaskStrategy.setConverter(new HoverViewModel.ModifierToStateMaskConverter()); context.bindValue(WidgetProperties.text().observe(fSummaryHoverNameLabel), HoverViewModel.hoverLabel.observeDetail(selectedHover)); context.bindValue(WidgetProperties.text().observe(fSummaryHoverDescriptionLabel), HoverViewModel.hoverDescription.observeDetail(selectedHover)); context.bindValue(WidgetProperties.text().observe(fSummaryHoverModifierStringText), HoverViewModel.hoverStateMask.observeDetail(selectedHover), modifierToStatusMaskStrategy, statusMaskToModifierStrategy); KeyListener stateMaskKeyListener = new KeyListener() { public void keyPressed(KeyEvent e) { boolean isPressedKeyModifier = e.keyCode > 0 && e.character == 0 && (e.keyCode & SWT.MODIFIER_MASK) != 0; boolean isStateKeyModifier = e.stateMask > 0 && (e.stateMask & SWT.MODIFIER_MASK) != 0; int mask = SWT.NONE; if (isPressedKeyModifier) { mask = e.keyCode; if (isStateKeyModifier) { mask |= e.stateMask; } stateMaskOfSelected.setValue(mask); stateMaskToModifierBinding.updateModelToTarget(); } } public void keyReleased(KeyEvent e) { if (e.keyCode == SWT.BS || e.keyCode == SWT.DEL) { stateMaskOfSelected.setValue(SWT.NONE); stateMaskToModifierBinding.updateModelToTarget(); } } }; fHoverModifierStringTextCellEditor.getControl().addKeyListener(stateMaskKeyListener); fSummaryHoverModifierStringText.addKeyListener(stateMaskKeyListener); return context; }
From source file:era.foss.typeeditor.common.Ui.java
License:Open Source License
/** * Create a column with EMF databinding for a table viewer * /*from w w w . j a va 2 s. co m*/ * <li>In case the top level structural feature is a reference display a combo box</li> <li>In case the top level * structural feature is a containment reference create element if it does not exist</li> <li>In case the structural * feature is a boolean show a checkbox</li> <li>Otherwise show a simple text field</li>. * * @param column the column * @param eStructuralFeatureList list to create a feature path from * @param refObservedObject the ref observed object * @param refEStructuralFeatureList the ref e structural feature list */ public void bindColumn(TableViewerColumn column, EStructuralFeature[] eStructuralFeatureList, EObject refObservedObject, EStructuralFeature[] refEStructuralFeatureList) { TableViewer tableViewer = (TableViewer) column.getViewer(); ObservableListContentProvider cp = (ObservableListContentProvider) tableViewer.getContentProvider(); assert (cp != null); // get the top level structural feature EStructuralFeature topStructuralFeature = eStructuralFeatureList[0]; // set label provider IValueProperty elementProperty = EMFEditProperties.value(editingDomain, FeaturePath.fromList(eStructuralFeatureList)); IObservableMap attributeMap = elementProperty.observeDetail(cp.getKnownElements()); column.setLabelProvider(new ObservableMapCellLabelProvider(attributeMap)); EditingSupport editingSupport = null; // Show combo box for references if (refObservedObject != null && refEStructuralFeatureList != null) { // Combo box: Create combo box to select choices for the reference ComboBoxViewerCellEditor combo = new ComboBoxViewerCellEditorSp((Composite) tableViewer.getControl(), SWT.READ_ONLY); // Combo box: Set Content Provider ObservableListContentProvider comboContentProvider = new ObservableListContentProvider(); combo.setContentProvider(comboContentProvider); IObservableMap comboAttributeMap = EMFProperties .value(eStructuralFeatureList[eStructuralFeatureList.length - 1]) .observeDetail(comboContentProvider.getKnownElements()); combo.setLabelProvider(new ObservableMapLabelProvider(comboAttributeMap)); // Combo box: set input IEMFListProperty dataTypeDefinitions = EMFProperties .list(FeaturePath.fromList(refEStructuralFeatureList)); combo.setInput(dataTypeDefinitions.observe(refObservedObject)); // Set editing support of table cell IValueProperty editorElementProperty = EMFEditProperties.value(editingDomain, topStructuralFeature); IValueProperty cellEditorProperty = ViewerProperties.singleSelection(); editingSupport = ObservableValueEditingSupport.create(tableViewer, dataBindContext, combo, cellEditorProperty, editorElementProperty); } // Simple text else { IValueProperty cellEditorProperty = CellEditorProperties.control() .value(WidgetProperties.text(SWT.Modify)); editingSupport = ObservableValueEditingSupport.create(tableViewer, dataBindContext, new TextCellEditor(tableViewer.getTable()), cellEditorProperty, elementProperty); } column.setEditingSupport(editingSupport); }
From source file:era.foss.typeeditor.spectype.SpecTypeForm.java
License:Open Source License
/** Create column for selecting the DatatypeDefinition associated with the AttributeDefinition */ private void createSpecAttributeNameColumn(AddDeleteTableViewer specAttributeTableViewer, TableColumnLayout columnLayout) { ///*w w w . ja va 2s. c o m*/ TableViewerColumn nameColumn = new TableViewerColumn(specAttributeTableViewer, SWT.NONE); nameColumn.getColumn().setText(Ui.getUiName(ErfPackage.Literals.IDENTIFIABLE__LONG_NAME)); nameColumn.getColumn().setResizable(true); nameColumn.getColumn().setMoveable(false); columnLayout.setColumnData(nameColumn.getColumn(), new ColumnWeightData(34, 100)); IValueProperty nameColumnElementProperty = EMFEditProperties.value(editingDomain, ErfPackage.Literals.IDENTIFIABLE__LONG_NAME); // add label provider IObservableMap nameColumnAttributeMap = nameColumnElementProperty.observeDetail( ((ObservableListContentProvider) specAttributeTableViewer.getContentProvider()).getKnownElements()); nameColumn.setLabelProvider(new ObservableMapCellLabelProvider(nameColumnAttributeMap)); // add editing support IValueProperty nameColumnCellEditorProperty = CellEditorProperties.control() .value(WidgetProperties.text(SWT.Modify)); EditingSupport editingSupport = ObservableValueEditingSupport.create(specAttributeTableViewer, dataBindContext, new TextCellEditor(specAttributeTableViewer.getTable()), nameColumnCellEditorProperty, nameColumnElementProperty); nameColumn.setEditingSupport(editingSupport); }
From source file:era.foss.typeeditor.view.ViewForm.java
License:Open Source License
/** * Creates the table viewer for {@link ViewElements} * //from w w w . j a v a 2 s . c o m * @param parent parent composite */ private void createViewElementTableViewer(Composite parent) { this.viewElementTableViewer = new AddDeleteTableViewer(parent, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION | AddDeleteTableViewer.NO_DESCRIPTION) { @Override public void addElement() { this.elementOwner = (EObject) viewMaster.getValue(); super.addElement(); // is_a ViewElement ViewElement addedViewElement = (ViewElement) super.getElementAt(super.doGetItemCount() - 1); // default placement of views' elements addedViewElement.setEditorRowPosition(getCurrentMaxRowIdx() + 1); addedViewElement.setEditorColumnPosition(0); addedViewElement.setEditorColumnSpan(2); addedViewElement.setEditorRowSpan(1); } /** * Calculates maximum row index of existing view elements * * @return maximum row index */ private int getCurrentMaxRowIdx() { int maxRowIdx = 0; for (int i = 0; i < super.doGetItemCount(); ++i) { ViewElement iterViewElement = (ViewElement) super.getElementAt(i); maxRowIdx = Math.max(maxRowIdx, iterViewElement.getEditorRowPosition() + (iterViewElement.getEditorRowSpan() - 1)); } return maxRowIdx; } @Override protected void createButtonBar() { super.createButtonBar(); // FIXME @cpn create "add all" button } }; // the owner is null as it is set in the overridden addElement() method viewElementTableViewer.setElementInformation((EObject) viewMaster.getValue(), ErfPackage.Literals.VIEW__VIEW_ELEMENTS, ErfPackage.Literals.VIEW_ELEMENT); viewElementTableViewer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 2)); viewElementTableViewer.setEditingDomain(editingDomain); ObservableListContentProvider tableViewerContentProvider = new ObservableListContentProvider(); viewElementTableViewer.setContentProvider(tableViewerContentProvider); TableColumnLayout columnLayout = (TableColumnLayout) viewElementTableViewer.getTable().getParent() .getLayout(); // create column showing the Attribute Definition TableViewerColumn attributeDefinitionColumn = new TableViewerColumn(viewElementTableViewer, SWT.NONE); columnLayout.setColumnData(attributeDefinitionColumn.getColumn(), new ColumnWeightData(100, 70)); attributeDefinitionColumn.getColumn().setResizable(false); attributeDefinitionColumn.getColumn().setMoveable(false); attributeDefinitionColumn.getColumn() .setText(Ui.getUiName(ErfPackage.Literals.VIEW_ELEMENT__ATTRIBUTE_DEFINITION)); // label provider for column showing the AttributeDefintion IValueProperty elementProperty = EMFEditProperties.value(editingDomain, FeaturePath .fromList(new EStructuralFeature[] { ErfPackage.Literals.VIEW_ELEMENT__ATTRIBUTE_DEFINITION, ErfPackage.Literals.IDENTIFIABLE__LONG_NAME })); IObservableMap attributeMap = elementProperty.observeDetail(tableViewerContentProvider.getKnownElements()); attributeDefinitionColumn.setLabelProvider(new ObservableMapCellLabelProvider(attributeMap)); // editing support column showing the AttributeDefintion // Combo box: Create combo box to select choices for the reference ComboBoxViewerCellEditor combo = new ComboBoxViewerCellEditorSp( (Composite) viewElementTableViewer.getControl(), SWT.DROP_DOWN | SWT.READ_ONLY); // Combo box: Set Content Provider; ObservableListContentProvider comboBoxContentProvider = new ObservableListContentProvider(); combo.setContentProvider(comboBoxContentProvider); // Combo box: Set Label Provider combo.setLabelProvider( new ObservableMapLabelProvider(EMFProperties.value(ErfPackage.Literals.IDENTIFIABLE__LONG_NAME) .observeDetail(comboBoxContentProvider.getKnownElements()))); // Combo box: set input from selected specType IEMFListProperty specAttributesProperty = EMFProperties .list(ErfPackage.Literals.SPEC_TYPE__SPEC_ATTRIBUTES); combo.setInput(specAttributesProperty.observeDetail(specTypeMaster)); // Set editing support of table cell IValueProperty editorElementProperty = EMFEditProperties.value(editingDomain, ErfPackage.Literals.VIEW_ELEMENT__ATTRIBUTE_DEFINITION); IValueProperty cellEditorProperty = ViewerProperties.singleSelection(); attributeDefinitionColumn.setEditingSupport(ObservableValueEditingSupport.create(viewElementTableViewer, dataBindContext, combo, cellEditorProperty, editorElementProperty)); // provide input for the table IEMFListProperty viewsProperty = EMFProperties.list(ErfPackage.Literals.VIEW__VIEW_ELEMENTS); viewElementTableViewer.addFilter(new SpecTypeFilter()); viewElementTableViewer.setInput(viewsProperty.observeDetail(viewMaster)); viewElementMaster = ViewerProperties.singleSelection().observe(viewElementTableViewer); viewElementTableViewer.getTable().select(0); }
From source file:org.eclipsetrader.ui.internal.charts.views.HistoryDataDetailEditor.java
License:Open Source License
void createViewer(Composite parent) { Tree tree = new Tree(parent, SWT.FULL_SELECTION | SWT.MULTI); tree.setHeaderVisible(true);// w w w . j a v a2s . c om tree.setLinesVisible(true); viewer = new TreeViewer(tree); IObservableFactory observableFactory = new IObservableFactory() { @Override public IObservable createObservable(Object target) { if (target instanceof HistoryDataDetailEditorModel) { return Observables .unmodifiableObservableList(((HistoryDataDetailEditorModel) target).getList()); } if (target instanceof HistoryDataEditorModel) { return Observables.unmodifiableObservableList(((HistoryDataEditorModel) target).getList()); } return null; } }; TreeStructureAdvisor treeStructureAdvisor = new TreeStructureAdvisor() { @Override public Boolean hasChildren(Object element) { if (element instanceof HistoryDataEditorModel) { return true; } return false; } }; ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider(observableFactory, treeStructureAdvisor); viewer.setContentProvider(contentProvider); GC gc = new GC(parent); FontMetrics fontMetrics = gc.getFontMetrics(); gc.dispose(); TreeViewerColumn viewerColumn = new TreeViewerColumn(viewer, SWT.NONE); viewerColumn.getColumn().setText(Messages.HistoryDataDetailEditor_Time); viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 70)); viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(tree), CellEditorValueProperty.timeValue(), BeanProperties.value(HistoryDataElement.PROP_DATE))); viewerColumn = new TreeViewerColumn(viewer, SWT.RIGHT); viewerColumn.getColumn().setText(Messages.HistoryDataDetailEditor_Open); viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 55)); viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(tree), CellEditorValueProperty.doubleValue(), BeanProperties.value(HistoryDataElement.PROP_OPEN))); viewerColumn = new TreeViewerColumn(viewer, SWT.RIGHT); viewerColumn.getColumn().setText(Messages.HistoryDataDetailEditor_High); viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 55)); viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(tree), CellEditorValueProperty.doubleValue(), BeanProperties.value(HistoryDataElement.PROP_HIGH))); viewerColumn = new TreeViewerColumn(viewer, SWT.RIGHT); viewerColumn.getColumn().setText(Messages.HistoryDataDetailEditor_Low); viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 55)); viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(tree), CellEditorValueProperty.doubleValue(), BeanProperties.value(HistoryDataElement.PROP_LOW))); viewerColumn = new TreeViewerColumn(viewer, SWT.RIGHT); viewerColumn.getColumn().setText(Messages.HistoryDataDetailEditor_Close); viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 55)); viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(tree), CellEditorValueProperty.doubleValue(), BeanProperties.value(HistoryDataElement.PROP_CLOSE))); viewerColumn = new TreeViewerColumn(viewer, SWT.RIGHT); viewerColumn.getColumn().setText(Messages.HistoryDataDetailEditor_Volume); viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 70)); viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(tree), CellEditorValueProperty.longValue(), BeanProperties.value(HistoryDataElement.PROP_VOLUME))); if (Platform.WS_GTK.equals(Platform.getWS())) { viewerColumn = new TreeViewerColumn(viewer, SWT.RIGHT); viewerColumn.getColumn().setWidth(1); } final String[] properties = new String[] { HistoryDataElement.PROP_DATE, HistoryDataElement.PROP_OPEN, HistoryDataElement.PROP_HIGH, HistoryDataElement.PROP_LOW, HistoryDataElement.PROP_CLOSE, HistoryDataElement.PROP_VOLUME, "" //$NON-NLS-1$ }; DataViewerLabelProvider labelProvider = new DataViewerLabelProvider( BeansObservables.observeMaps(contentProvider.getKnownElements(), properties)); labelProvider.setDateFormat(Util.getTimeFormat()); viewer.setLabelProvider(labelProvider); viewer.setSorter(new ViewerSorter() { @Override public int compare(Viewer viewer, Object o1, Object o2) { if ((o1 instanceof HistoryDataEditorModel) && (o2 instanceof HistoryDataEditorModel)) { TimeSpan ts1 = ((HistoryDataEditorModel) o1).getBarSize(); TimeSpan ts2 = ((HistoryDataEditorModel) o2).getBarSize(); if (ts1.higherThan(ts2)) { return 1; } if (ts2.higherThan(ts1)) { return -1; } return 0; } else if ((o1 instanceof HistoryDataElement) && (o2 instanceof HistoryDataElement)) { HistoryDataElement e1 = (HistoryDataElement) o1; HistoryDataElement e2 = (HistoryDataElement) o2; if (e1.getDate() != null && e2.getDate() != null) { return e1.getDate().compareTo(e2.getDate()); } if (e1.getDate() != null && e2.getDate() == null) { return -1; } if (e1.getDate() == null && e2.getDate() != null) { return 1; } } return 0; } }); CellNavigationStrategy naviStrat = new CellNavigationStrategy() { @Override public ViewerCell findSelectedCell(ColumnViewer viewer, ViewerCell currentSelectedCell, Event event) { ViewerCell cell = super.findSelectedCell(viewer, currentSelectedCell, event); if (cell != null) { if (cell.getColumnIndex() == properties.length - 1) { return null; } Tree tree = ((TreeViewer) viewer).getTree(); tree.showColumn(tree.getColumn(cell.getColumnIndex())); } return cell; } }; TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(viewer, new FocusCellOwnerDrawHighlighter(viewer), naviStrat); ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(viewer) { @Override protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) { return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode == SWT.CR) || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC; } }; TreeViewerEditor.create(viewer, focusCellManager, activationStrategy, ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION); tree.addTraverseListener(new TraverseListener() { @Override public void keyTraversed(TraverseEvent e) { if (e.detail == SWT.TRAVERSE_RETURN || e.detail == SWT.TRAVERSE_ESCAPE) { e.doit = false; } } }); tree.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (viewer.isCellEditorActive()) { return; } if (e.keyCode == SWT.INSERT) { IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); HistoryDataEditorModel parent = null; int index = 0; if (!selection.isEmpty()) { parent = model.getParent(selection.getFirstElement()); if (parent == null) { return; } index = parent.getList().indexOf(selection.getFirstElement()); if (index == -1) { index = parent.getList().size(); } } final HistoryDataElement element = new HistoryDataElement(); parent.getList().add(index, element); e.doit = false; Display.getDefault().asyncExec(new Runnable() { @Override public void run() { if (!viewer.getControl().isDisposed()) { viewer.editElement(element, 0); } } }); } else if (e.character == SWT.DEL) { IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); for (Object element : selection.toList()) { HistoryDataEditorModel parent = model.getParent(selection.getFirstElement()); if (parent != null) { if (parent.getList().remove(element)) { changeSupport.firePropertyChange(PROP_DIRTY, dirty, dirty = true); } } } } } }); viewer.setInput(model); }
From source file:org.eclipsetrader.ui.internal.charts.views.HistoryDataEditor.java
License:Open Source License
void createViewer(Composite parent) { Table table = new Table(parent, SWT.FULL_SELECTION | SWT.MULTI); table.setHeaderVisible(true);/* w w w . j a v a 2 s.co m*/ table.setLinesVisible(true); viewer = new TableViewer(table); ObservableListContentProvider contentProvider = new ObservableListContentProvider(); viewer.setContentProvider(contentProvider); GC gc = new GC(parent); FontMetrics fontMetrics = gc.getFontMetrics(); gc.dispose(); TableViewerColumn viewerColumn = new TableViewerColumn(viewer, SWT.NONE); viewerColumn.getColumn().setText(Messages.HistoryDataEditor_Date); viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 70)); viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(table), CellEditorValueProperty.dateValue(), BeanProperties.value(HistoryDataElement.PROP_DATE))); viewerColumn = new TableViewerColumn(viewer, SWT.RIGHT); viewerColumn.getColumn().setText(Messages.HistoryDataEditor_Open); viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 55)); viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(table), CellEditorValueProperty.doubleValue(), BeanProperties.value(HistoryDataElement.PROP_OPEN))); viewerColumn = new TableViewerColumn(viewer, SWT.RIGHT); viewerColumn.getColumn().setText(Messages.HistoryDataEditor_High); viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 55)); viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(table), CellEditorValueProperty.doubleValue(), BeanProperties.value(HistoryDataElement.PROP_HIGH))); viewerColumn = new TableViewerColumn(viewer, SWT.RIGHT); viewerColumn.getColumn().setText(Messages.HistoryDataEditor_Low); viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 55)); viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(table), CellEditorValueProperty.doubleValue(), BeanProperties.value(HistoryDataElement.PROP_LOW))); viewerColumn = new TableViewerColumn(viewer, SWT.RIGHT); viewerColumn.getColumn().setText(Messages.HistoryDataEditor_Close); viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 55)); viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(table), CellEditorValueProperty.doubleValue(), BeanProperties.value(HistoryDataElement.PROP_CLOSE))); viewerColumn = new TableViewerColumn(viewer, SWT.RIGHT); viewerColumn.getColumn().setText(Messages.HistoryDataEditor_Volume); viewerColumn.getColumn().setWidth(Dialog.convertHorizontalDLUsToPixels(fontMetrics, 70)); viewerColumn.setEditingSupport(ObservableValueEditingSupport.create(viewer, dbc, new TextCellEditor(table), CellEditorValueProperty.longValue(), BeanProperties.value(HistoryDataElement.PROP_VOLUME))); if (Platform.WS_GTK.equals(Platform.getWS())) { viewerColumn = new TableViewerColumn(viewer, SWT.RIGHT); viewerColumn.getColumn().setWidth(1); } final String[] properties = new String[] { HistoryDataElement.PROP_DATE, HistoryDataElement.PROP_OPEN, HistoryDataElement.PROP_HIGH, HistoryDataElement.PROP_LOW, HistoryDataElement.PROP_CLOSE, HistoryDataElement.PROP_VOLUME, "" //$NON-NLS-1$ }; DataViewerLabelProvider labelProvider = new DataViewerLabelProvider( BeansObservables.observeMaps(contentProvider.getKnownElements(), properties)); labelProvider.setDateFormat(Util.getDateFormat()); viewer.setLabelProvider(labelProvider); viewer.setSorter(new ViewerSorter() { @Override public int compare(Viewer viewer, Object o1, Object o2) { HistoryDataElement e1 = (HistoryDataElement) o1; HistoryDataElement e2 = (HistoryDataElement) o2; if (e1.getDate() != null && e2.getDate() != null) { return e1.getDate().compareTo(e2.getDate()); } if (e1.getDate() != null && e2.getDate() == null) { return -1; } if (e1.getDate() == null && e2.getDate() != null) { return 1; } return 0; } }); CellNavigationStrategy naviStrat = new CellNavigationStrategy() { @Override public ViewerCell findSelectedCell(ColumnViewer viewer, ViewerCell currentSelectedCell, Event event) { ViewerCell cell = super.findSelectedCell(viewer, currentSelectedCell, event); if (cell != null) { if (cell.getColumnIndex() == properties.length - 1) { return null; } Table table = ((TableViewer) viewer).getTable(); table.showColumn(table.getColumn(cell.getColumnIndex())); } return cell; } }; TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(viewer, new FocusCellOwnerDrawHighlighter(viewer), naviStrat); ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(viewer) { @Override protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) { return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode == SWT.CR) || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC; } }; TableViewerEditor.create(viewer, focusCellManager, activationStrategy, ColumnViewerEditor.TABBING_HORIZONTAL | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION); table.addTraverseListener(new TraverseListener() { @Override public void keyTraversed(TraverseEvent e) { if (e.detail == SWT.TRAVERSE_RETURN || e.detail == SWT.TRAVERSE_ESCAPE) { e.doit = false; } } }); table.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (viewer.isCellEditorActive()) { return; } if (e.keyCode == SWT.INSERT) { IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); int index = 0; if (!selection.isEmpty()) { index = model.getList().indexOf(selection.getFirstElement()); if (index == -1) { index = model.getList().size(); } } final HistoryDataElement element = new HistoryDataElement(); model.getList().add(index, element); e.doit = false; Display.getDefault().asyncExec(new Runnable() { @Override public void run() { if (!viewer.getControl().isDisposed()) { viewer.editElement(element, 0); } } }); } else if (e.character == SWT.DEL) { IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); if (model.getList().removeAll(selection.toList())) { changeSupport.firePropertyChange(PROP_DIRTY, dirty, dirty = true); } } } }); viewer.setInput(model.getList()); }
From source file:org.switchyard.tools.ui.editor.components.jca.JCAPropertyTable.java
License:Open Source License
/** * Constructor./*w w w .j ava 2s . co m*/ * * @param parent composite parent * @param style any SWT style bits * @param isReadOnly boolean flag * @param toolkit Form toolkit to use when creating controls * @param context the data binding context * @param featurePathToProperties the feature path to the Property list * @param domain the editing domain */ public JCAPropertyTable(Composite parent, int style, boolean isReadOnly, FormToolkit toolkit, DataBindingContext context, FeaturePath featurePathToProperties, EditingDomain domain) { super(parent, style); _isReadOnly = isReadOnly; _changeListeners = new ListenerList(); _bindingValue = new WritableValue(SWTObservables.getRealm(getDisplay()), null, JCABinding.class); int additionalStyles = SWT.NONE; if (isReadOnly) { additionalStyles = SWT.READ_ONLY; } final GridLayout gridLayout = new GridLayout(); gridLayout.marginWidth = 0; gridLayout.marginHeight = 0; gridLayout.numColumns = 2; setLayout(gridLayout); Composite tableComposite = new Composite(this, additionalStyles); GridData gd11 = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 5); gd11.heightHint = 100; tableComposite.setLayoutData(gd11); TableColumnLayout tableLayout = new TableColumnLayout(); tableComposite.setLayout(tableLayout); _propertyTreeTable = new TableViewer(tableComposite, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL | SWT.FULL_SELECTION | additionalStyles); _propertyTreeTable.getTable().setHeaderVisible(true); TableViewerColumn nameColumn = new TableViewerColumn(_propertyTreeTable, SWT.LEFT); nameColumn.getColumn().setText(Messages.label_name); tableLayout.setColumnData(nameColumn.getColumn(), new ColumnWeightData(100, 150, true)); TableViewerColumn valueColumn = new TableViewerColumn(_propertyTreeTable, SWT.LEFT); valueColumn.getColumn().setText(Messages.label_value); tableLayout.setColumnData(valueColumn.getColumn(), new ColumnWeightData(100, 150, true)); IValueProperty nameProperty = domain == null ? EMFProperties.value(JcaPackage.Literals.PROPERTY__NAME) : EMFEditProperties.value(domain, JcaPackage.Literals.PROPERTY__NAME); IValueProperty valueProperty = domain == null ? EMFProperties.value(JcaPackage.Literals.PROPERTY__VALUE) : EMFEditProperties.value(domain, JcaPackage.Literals.PROPERTY__VALUE); IValueProperty cellEditorTextProperty = CellEditorProperties.control() .value(WidgetProperties.text(SWT.Modify)); final ObservableListContentProvider contentProvider; ObservableTracker.setIgnore(true); try { // ignore any observers created internally contentProvider = new ObservableListContentProvider(); } finally { ObservableTracker.setIgnore(false); } nameColumn.setEditingSupport(ObservableValueEditingSupport.create(_propertyTreeTable, context, new TextCellEditor(_propertyTreeTable.getTable()), cellEditorTextProperty, nameProperty)); nameColumn.setLabelProvider( new ObservableMapCellLabelProvider(nameProperty.observeDetail(contentProvider.getKnownElements()))); valueColumn.setEditingSupport(ObservableValueEditingSupport.create(_propertyTreeTable, context, new TextCellEditor(_propertyTreeTable.getTable()), cellEditorTextProperty, valueProperty)); valueColumn.setLabelProvider(new ObservableMapCellLabelProvider( valueProperty.observeDetail(contentProvider.getKnownElements()))); _propertyTreeTable.setContentProvider(contentProvider); _mAddButton = toolkit.createButton(this, Messages.button_add, SWT.NONE); _mAddButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); _mAddButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { addPropertyToList(); } }); _mAddButton.setEnabled(false); _propertyTreeTable.getTable().addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { updatePropertyButtons(); } }); _mRemoveButton = toolkit.createButton(this, Messages.button_remove, SWT.NONE); _mRemoveButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); _mRemoveButton.setEnabled(false); _mRemoveButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { removeFromList(); } }); final IObservableList propertiesList = (domain == null ? EMFProperties.list(featurePathToProperties) : EMFEditProperties.list(domain, featurePathToProperties)).observeDetail(_bindingValue); _propertyTreeTable.setInput(propertiesList); updatePropertyButtons(); }
From source file:org.switchyard.tools.ui.editor.components.soap.InterceptorTable.java
License:Open Source License
/** * Constructor./*from w ww. jav a 2s.c o m*/ * * @param parent composite parent * @param style any SWT style bits * @param isReadOnly boolean flag * @param interceptorsListFeature list we're editing * @param interceptorsFeature actual interceptor list feature * @param interceptorType actual class for the interceptor type * @param context DataBindingContext to use */ public InterceptorTable(Composite parent, int style, boolean isReadOnly, EReference interceptorsListFeature, EReference interceptorsFeature, EClass interceptorType, DataBindingContext context) { super(parent, style); final EditingDomain domain = AdapterFactoryEditingDomain.getEditingDomainFor(getTargetObject()); this._isReadOnly = isReadOnly; this._changeListeners = new ListenerList(); _interceptorsListFeature = interceptorsListFeature; _interceptorsFeature = interceptorsFeature; _interceptorType = interceptorType; int additionalStyles = SWT.NONE; if (isReadOnly) { additionalStyles = SWT.READ_ONLY; } final GridLayout gridLayout = new GridLayout(); gridLayout.marginWidth = 0; gridLayout.marginHeight = 0; gridLayout.numColumns = 2; setLayout(gridLayout); Composite tableComposite = new Composite(this, additionalStyles); GridData gd11 = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 3); gd11.heightHint = 100; tableComposite.setLayoutData(gd11); _interceptorTable = new TableViewer(tableComposite, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL | SWT.FULL_SELECTION | additionalStyles); this._interceptorTable.getTable().setHeaderVisible(true); TableColumnLayout tableLayout = new TableColumnLayout(); tableComposite.setLayout(tableLayout); TableViewerColumn nameColumn = new TableViewerColumn(_interceptorTable, SWT.LEFT); nameColumn.getColumn().setText(Messages.label_name); tableLayout.setColumnData(nameColumn.getColumn(), new ColumnWeightData(100, 150, true)); IValueProperty nameProperty = domain == null ? EMFProperties.value(_interceptorType.getEStructuralFeature("class")) : EMFEditProperties.value(domain, _interceptorType.getEStructuralFeature("class")); IValueProperty cellEditorTextProperty = CellEditorProperties.control() .value(WidgetProperties.text(SWT.Modify)); final ObservableListContentProvider contentProvider; ObservableTracker.setIgnore(true); try { // ignore any observers created internally contentProvider = new ObservableListContentProvider(); } finally { ObservableTracker.setIgnore(false); } nameColumn.setEditingSupport(ObservableValueEditingSupport.create(_interceptorTable, context, new TextCellEditor(_interceptorTable.getTable()), cellEditorTextProperty, nameProperty)); nameColumn.setLabelProvider( new ObservableMapCellLabelProvider(nameProperty.observeDetail(contentProvider.getKnownElements()))); _interceptorTable.setContentProvider(contentProvider); this._mAddButton = new Button(this, SWT.NONE); this._mAddButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); this._mAddButton.setText(Messages.button_add); this._mAddButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { addInterceptorTypeToList(); fireChangedEvent(e.getSource()); } }); this._mAddButton.setEnabled(false); _interceptorTable.getTable().addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { updateInterceptorTypeButtons(); } }); this._mEditButton = new Button(this, SWT.NONE); this._mEditButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); this._mEditButton.setText(Messages.button_edit); this._mEditButton.setEnabled(false); this._mEditButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { editInterceptorType(); fireChangedEvent(e.getSource()); } }); this._mRemoveButton = new Button(this, SWT.NONE); this._mRemoveButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); this._mRemoveButton.setText(Messages.button_remove); this._mRemoveButton.setEnabled(false); this._mRemoveButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { removeFromList(); fireChangedEvent(e.getSource()); } }); // set the input. we're observing a list on the binding value _bindingValue = new WritableValue(SWTObservables.getRealm(getDisplay()), null, SOAPBindingType.class); _interceptorTable .setInput(EMFProperties.list(FeaturePath.fromList(_interceptorsListFeature, _interceptorsFeature)) .observeDetail(_bindingValue)); updateInterceptorTypeButtons(); }
From source file:org.switchyard.tools.ui.editor.diagram.binding.CamelAdditionalURIPropertyTable.java
License:Open Source License
CamelAdditionalURIPropertyTable(Composite parent, int style, boolean isReadOnly, EReference additionalUriParametersFeature, EReference parameterFeature, EClass parameterType, DataBindingContext context) {/* ww w . j av a2 s .c o m*/ super(parent, style); final EditingDomain domain = AdapterFactoryEditingDomain.getEditingDomainFor(getTargetObject()); this._isReadOnly = isReadOnly; this._changeListeners = new ListenerList(); _additionalUriParametersFeature = additionalUriParametersFeature; _parameterFeature = parameterFeature; _parameterType = parameterType; int additionalStyles = SWT.NONE; if (isReadOnly) { additionalStyles = SWT.READ_ONLY; } final GridLayout gridLayout = new GridLayout(); gridLayout.marginWidth = 0; gridLayout.marginHeight = 0; gridLayout.numColumns = 2; setLayout(gridLayout); Composite tableComposite = new Composite(this, additionalStyles); GridData gd11 = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 2); gd11.heightHint = 100; tableComposite.setLayoutData(gd11); _propertyTreeTable = new TableViewer(tableComposite, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL | SWT.FULL_SELECTION | additionalStyles); _propertyTreeTable.getTable().setHeaderVisible(true); TableColumnLayout tableLayout = new TableColumnLayout(); tableComposite.setLayout(tableLayout); TableViewerColumn nameColumn = new TableViewerColumn(_propertyTreeTable, SWT.LEFT); nameColumn.getColumn().setText(Messages.label_name); tableLayout.setColumnData(nameColumn.getColumn(), new ColumnWeightData(100, 150, true)); TableViewerColumn valueColumn = new TableViewerColumn(_propertyTreeTable, SWT.LEFT); valueColumn.getColumn().setText(Messages.label_value); tableLayout.setColumnData(valueColumn.getColumn(), new ColumnWeightData(100, 150, true)); // TODO: need to use EMFEditProperties if we're in an editing context IValueProperty nameProperty = domain == null ? EMFProperties.value(_parameterType.getEStructuralFeature("name")) : EMFEditProperties.value(domain, _parameterType.getEStructuralFeature("name")); IValueProperty valueProperty = domain == null ? EMFProperties.value(_parameterType.getEStructuralFeature("value")) : EMFEditProperties.value(domain, _parameterType.getEStructuralFeature("value")); IValueProperty cellEditorTextProperty = CellEditorProperties.control() .value(WidgetProperties.text(SWT.Modify)); final ObservableListContentProvider contentProvider; ObservableTracker.setIgnore(true); try { // ignore any observers created internally contentProvider = new ObservableListContentProvider(); } finally { ObservableTracker.setIgnore(false); } nameColumn.setEditingSupport(ObservableValueEditingSupport.create(_propertyTreeTable, context, new TextCellEditor(_propertyTreeTable.getTable()), cellEditorTextProperty, nameProperty)); nameColumn.setLabelProvider( new ObservableMapCellLabelProvider(nameProperty.observeDetail(contentProvider.getKnownElements()))); valueColumn.setEditingSupport(ObservableValueEditingSupport.create(_propertyTreeTable, context, new TextCellEditor(_propertyTreeTable.getTable()), cellEditorTextProperty, valueProperty)); valueColumn.setLabelProvider(new ObservableMapCellLabelProvider( valueProperty.observeDetail(contentProvider.getKnownElements()))); _propertyTreeTable.setContentProvider(contentProvider); _mAddButton = new Button(this, SWT.NONE); _mAddButton.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false, false)); _mAddButton.setText(Messages.button_add); _mAddButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { addPropertyToList(); fireChangedEvent(e.getSource()); } }); _mAddButton.setEnabled(false); _propertyTreeTable.getTable().addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { updatePropertyButtons(); } }); _mRemoveButton = new Button(this, SWT.NONE); _mRemoveButton.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, false, false)); _mRemoveButton.setText(Messages.button_remove); _mRemoveButton.setEnabled(false); _mRemoveButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { removeFromList(); fireChangedEvent(e.getSource()); } }); // set the input. we're observing a list on the binding value _bindingValue = new WritableValue(SWTObservables.getRealm(getDisplay()), null, Binding.class); _propertyTreeTable.setInput( EMFProperties.list(FeaturePath.fromList(_additionalUriParametersFeature, _parameterFeature)) .observeDetail(_bindingValue)); updatePropertyButtons(); }