List of usage examples for org.eclipse.jface.databinding.viewers ObservableListContentProvider getKnownElements
public IObservableSet<E> getKnownElements()
From source file:org.eclipse.emf.examples.library.databinding.writer.WriterForm.java
License:Open Source License
@Override public void doCreateForm(TabFolder folder, TabItem item, final EditingDomain domain, DataBindingContext dbc, IObservableValue master) {// w ww .ja v a 2 s . c o m IValueProperty textProp = WidgetProperties.text(); dbc.bindValue(textProp.observe(item), EMFEditObservables.observeDetailValue(Realm.getDefault(), domain, master, EXTLibraryPackage.Literals.LIBRARY__WRITERS), new UpdateValueStrategy(), new UpdateValueStrategy().setConverter(new LengthConverter())); Composite comp = new Composite(folder, SWT.NONE); TableColumnLayout layout = new TableColumnLayout(); comp.setLayout(layout); writerViewer = new TableViewer(comp, SWT.FULL_SELECTION | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); writerViewer.getTable().setHeaderVisible(true); writerViewer.getTable().setLinesVisible(true); Color color = comp.getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION); final Color bg = new Color(comp.getDisplay(), new RGB(color.getRed() - 50, color.getGreen() - 50, color.getBlue() - 50)); writerViewer.getControl().addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { bg.dispose(); } }); TableViewerFocusCellManager focusCellManager = new TableViewerFocusCellManager(writerViewer, new FocusCellOwnerDrawHighlighter(writerViewer) { @Override protected Color getSelectedCellBackgroundColor(ViewerCell cell) { return bg; } }); ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(writerViewer) { protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) { boolean rv = false; if (event.eventType == ColumnViewerEditorActivationEvent.MOUSE_CLICK_SELECTION) { rv = (((MouseEvent) event.sourceEvent).stateMask & SWT.MOD1) == SWT.MOD1; } return rv || event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode == SWT.CR) || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC; } }; TableViewerEditor.create(writerViewer, focusCellManager, actSupport, ColumnViewerEditor.TABBING_HORIZONTAL //| ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR | ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION); IFocusService focusService = (IFocusService) getSite().getService(IFocusService.class); focusService.addFocusTracker(writerViewer.getControl(), WRITER_TABLE); ObservableListContentProvider cp = new ObservableListContentProvider(); writerViewer.setContentProvider(cp); ConditionalTemplate[] tpl = new ConditionalTemplate[3]; tpl[0] = new ConditionalTemplate("${0}") { @Override public boolean isTemplate(EObject element) { return element instanceof Writer && ((Writer) element).getFirstName() != null; } }; tpl[1] = new ConditionalTemplate("${0}") { @Override public boolean isTemplate(EObject element) { return element instanceof Writer && ((Writer) element).getLastName() != null; } }; tpl[2] = new ConditionalTemplate("-") { @Override public boolean isTemplate(EObject element) { return true; } }; EStructuralFeature[] features = new EStructuralFeature[2]; features[0] = EXTLibraryPackage.Literals.PERSON__FIRST_NAME; features[1] = EXTLibraryPackage.Literals.PERSON__LAST_NAME; IObservableMap[] map = EMFEditObservables.observeMaps(domain, cp.getKnownElements(), features); TableViewerColumn c = new TableViewerColumn(writerViewer, SWT.NONE); c.getColumn().setText("Firstname"); layout.setColumnData(c.getColumn(), new ColumnWeightData(1, 120)); c.setLabelProvider( new ObservableColumnLabelProvider(new IObservableMap[] { map[0] }, Arrays.asList(tpl[0], tpl[2]))); final TextCellEditor editor = new TextCellEditor(writerViewer.getTable()); ObservableValueEditingSupport o = new ObservableValueEditingSupport(writerViewer, dbc) { @Override protected CellEditor getCellEditor(Object element) { return editor; } @Override protected IObservableValue doCreateElementObservable(Object element, ViewerCell cell) { return EMFEditObservables.observeValue(domain, (EObject) element, EXTLibraryPackage.Literals.PERSON__FIRST_NAME); } @Override protected IObservableValue doCreateCellEditorObservable(CellEditor cellEditor) { return SWTObservables.observeText(cellEditor.getControl()); } }; c.setEditingSupport(o); c = new TableViewerColumn(writerViewer, SWT.NONE); c.getColumn().setText("Lastname"); layout.setColumnData(c.getColumn(), new ColumnWeightData(1, 120)); c.setLabelProvider( new ObservableColumnLabelProvider(new IObservableMap[] { map[1] }, Arrays.asList(tpl[1], tpl[2]))); o = new ObservableValueEditingSupport(writerViewer, dbc) { @Override protected CellEditor getCellEditor(Object element) { return editor; } @Override protected IObservableValue doCreateElementObservable(Object element, ViewerCell cell) { return EMFEditObservables.observeValue(domain, (EObject) element, EXTLibraryPackage.Literals.PERSON__LAST_NAME); } @Override protected IObservableValue doCreateCellEditorObservable(CellEditor cellEditor) { return SWTObservables.observeText(cellEditor.getControl()); } }; c.setEditingSupport(o); MenuManager mgr = new MenuManager(); writerViewer.getControl().setMenu(mgr.createContextMenu(writerViewer.getControl())); getSite().registerContextMenu("org.eclipse.emf.examples.library.databinding.writer", mgr, writerViewer); writerViewer.setInput(EMFEditObservables.observeDetailList(Realm.getDefault(), domain, master, EXTLibraryPackage.Literals.LIBRARY__WRITERS)); item.setControl(comp); }
From source file:org.eclipse.jface.examples.databinding.snippets.Snippet007ColorLabelProvider.java
License:Open Source License
/** * @param args//w w w . ja v a 2 s . c o m */ @SuppressWarnings("unchecked") public static void main(String[] args) { final List<Person> persons = new ArrayList<>(); persons.add(new Person("Fiona Apple", Person.FEMALE)); persons.add(new Person("Elliot Smith", Person.MALE)); persons.add(new Person("Diana Krall", Person.FEMALE)); persons.add(new Person("David Gilmour", Person.MALE)); final Display display = new Display(); Realm.runWithDefault(DisplayRealm.getRealm(display), () -> { Shell shell = new Shell(display); shell.setText("Gender Bender"); shell.setLayout(new GridLayout()); Table table = new Table(shell, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); table.setLayoutData(gridData); table.setHeaderVisible(true); table.setLinesVisible(true); TableColumn column = new TableColumn(table, SWT.NONE); column.setText("No"); column.setWidth(20); column = new TableColumn(table, SWT.NONE); column.setText("Name"); column.setWidth(100); final TableViewer viewer = new TableViewer(table); IObservableList<Person> observableList = Observables.staticObservableList(persons); ObservableListContentProvider<Person> contentProvider = new ObservableListContentProvider<>(); viewer.setContentProvider(contentProvider); // this does not have to correspond to the columns in the table, // we just list all attributes that affect the table content. IObservableMap<Person, ?>[] attributes = new IObservableMap[2]; attributes[0] = BeanProperties.value(Person.class, "name") .observeDetail(contentProvider.getKnownElements()); attributes[1] = BeanProperties.value(Person.class, "gender") .observeDetail(contentProvider.getKnownElements()); class ColorLabelProvider extends ObservableMapLabelProvider implements ITableColorProvider { Color male = display.getSystemColor(SWT.COLOR_BLUE); Color female = new Color(display, 255, 192, 203); ColorLabelProvider(IObservableMap<?, ?>[] attributes) { super(attributes); } // to drive home the point that attributes does not have to // match // the columns // in the table, we change the column text as follows: @Override public String getColumnText(Object element, int index) { if (index == 0) { return Integer.toString(persons.indexOf(element) + 1); } return ((Person) element).getName(); } @Override public Color getBackground(Object element, int index) { return null; } @Override public Color getForeground(Object element, int index) { if (index == 0) return null; Person person = (Person) element; return (person.getGender() == Person.MALE) ? male : female; } @Override public void dispose() { super.dispose(); female.dispose(); } } viewer.setLabelProvider(new ColorLabelProvider(attributes)); viewer.setInput(observableList); table.getColumn(0).pack(); Button button = new Button(shell, SWT.PUSH); button.setText("Toggle Gender"); button.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent arg0) { IStructuredSelection selection = viewer.getStructuredSelection(); if (selection != null && !selection.isEmpty()) { Person person = (Person) selection.getFirstElement(); person.setGender((person.getGender() == Person.MALE) ? Person.FEMALE : Person.MALE); } } }); shell.setSize(300, 400); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } }); display.dispose(); }
From source file:org.eclipse.rap.demo.databinding.nestedselection.TestMasterDetailView.java
License:Open Source License
private void bind(final Control parent) { Realm realm = SWTObservables.getRealm(parent.getDisplay()); TableViewer peopleViewer = new TableViewer(personsTable); ObservableListContentProvider peopleViewerContent = new ObservableListContentProvider(); peopleViewer.setContentProvider(peopleViewerContent); String[] attrSimplePerson = new String[] { "name", "state" }; IObservableMap[] attributeMaps = BeansObservables.observeMaps(peopleViewerContent.getKnownElements(), SimplePerson.class, attrSimplePerson); ObservableMapLabelProvider omlProvider = new ObservableMapLabelProvider(attributeMaps); peopleViewer.setLabelProvider(omlProvider); peopleViewer.setInput(new WritableList(realm, model.getPersonList(), SimpleModel.class)); IObservableValue selectedPerson = ViewersObservables.observeSingleSelection(peopleViewer); DataBindingContext dbc = new DataBindingContext(realm) { protected UpdateValueStrategy createTargetToModelUpdateValueStrategy(IObservableValue fromValue, IObservableValue toValue) { return new CustomUpdateValueStrategy(); }/* ww w . jav a 2s . co m*/ }; IConverter upperCaseConverter = new IConverter() { public Object convert(Object fromObject) { return ((String) fromObject).toUpperCase(); } public Object getFromType() { return String.class; } public Object getToType() { return String.class; } }; IValidator vowelValidator = new IValidator() { public IStatus validate(Object value) { String s = (String) value; if (!s.matches("[aeiouAEIOU]*")) { return ValidationStatus.error("only vowels allowed"); } return Status.OK_STATUS; } }; IObservableValue modelObservableValue = BeansObservables.observeDetailValue(realm, selectedPerson, "name", String.class); ISWTObservableValue targetObservableValue = SWTObservables.observeText(name, SWT.Modify); CustomUpdateValueStrategy customUpdateValueStrategy = new CustomUpdateValueStrategy(); customUpdateValueStrategy.setConverter(upperCaseConverter); UpdateValueStrategy targetToModel = customUpdateValueStrategy.setAfterGetValidator(vowelValidator); Binding binding = dbc.bindValue(targetObservableValue, modelObservableValue, targetToModel, null); UpdateValueStrategy updateValueStrategy = new UpdateValueStrategy(); updateValueStrategy.setConverter(new ObjectToStringConverter()); dbc.bindValue(SWTObservables.observeText(validationStatus, SWT.NONE), binding.getValidationStatus(), null, updateValueStrategy); dbc.bindValue(SWTObservables.observeText(address, SWT.Modify), BeansObservables.observeDetailValue(realm, selectedPerson, "address", String.class), null, null); dbc.bindValue(SWTObservables.observeText(city, SWT.Modify), BeansObservables.observeDetailValue(realm, selectedPerson, "city", String.class), null, null); dbc.bindValue(SWTObservables.observeText(state, SWT.Modify), BeansObservables.observeDetailValue(realm, selectedPerson, "state", String.class), null, null); TableViewer ordersViewer = new TableViewer(ordersTable); ObservableListContentProvider ordersViewerContent = new ObservableListContentProvider(); ordersViewer.setContentProvider(ordersViewerContent); String[] propertyNames = new String[] { "orderNumber", "date" }; IObservableMap[] observeMaps = BeansObservables.observeMaps(ordersViewerContent.getKnownElements(), SimpleOrder.class, propertyNames); ObservableMapLabelProvider observableMapLabelProvider = new ObservableMapLabelProvider(observeMaps); ordersViewer.setLabelProvider(observableMapLabelProvider); IObservableList orders = BeansObservables.observeDetailList(realm, selectedPerson, "orders", SimpleOrder.class); ordersViewer.setInput(orders); }
From source file:org.eclipse.riena.internal.ui.ridgets.swt.AbstractTableRidget.java
License:Open Source License
/** * Creates the label provider of this table. * // w w w .ja v a 2 s . c om * @param viewerCP * @return label provider */ private TableRidgetLabelProvider createLabelProvider(final ObservableListContentProvider viewerCP) { IObservableMap[] attrMap; if (AbstractSWTWidgetRidget.isBean(rowClass)) { attrMap = BeansObservables.observeMaps(viewerCP.getKnownElements(), rowClass, renderingMethods); } else { attrMap = PojoObservables.observeMaps(viewerCP.getKnownElements(), rowClass, renderingMethods); } final IColumnFormatter[] formatters = getColumnFormatters(attrMap.length); final TableRidgetLabelProvider labelProvider = new TableRidgetLabelProvider(attrMap, formatters); viewerObservables.addListChangeListener(new IListChangeListener() { public void handleListChange(final ListChangeEvent event) { if ((event.diff != null) && (!event.diff.isEmpty())) { for (final ListDiffEntry diffEntry : event.diff.getDifferences()) { if (!diffEntry.isAddition()) { // an element of the table was removed, // dispose the according image (stored inside the label provider) final Object deletedElement = diffEntry.getElement(); if (deletedElement != null) { labelProvider.disposeImageOfElement(deletedElement); } } } } } }); return labelProvider; }
From source file:org.eclipse.riena.ui.ridgets.swt.AbstractListRidget.java
License:Open Source License
protected void configureViewer(final AbstractListViewer viewer) { final ObservableListContentProvider viewerCP = new ObservableListContentProvider(); final String[] propertyNames = new String[] { renderingMethod }; IObservableMap[] attributeMap = null; // if renderingMethod is null, toString-Method will be used in ListLabelProvider if (null != renderingMethod) { if (AbstractSWTWidgetRidget.isBean(rowBeanClass)) { attributeMap = BeansObservables.observeMaps(viewerCP.getKnownElements(), rowBeanClass, propertyNames);/*from w w w . j a v a 2s . co m*/ } else { attributeMap = PojoObservables.observeMaps(viewerCP.getKnownElements(), rowBeanClass, propertyNames); } } viewer.setLabelProvider(new ListLabelProvider(attributeMap)); viewer.setContentProvider(viewerCP); viewer.setInput(viewerObservables); }
From source file:org.eclipse.thym.ui.config.internal.IconsPage.java
License:Open Source License
protected DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); ////from w w w.j a v a 2s .c om ObservableListContentProvider listContentProvider = new ObservableListContentProvider(); IObservableMap observeMap = BeansObservables.observeMap(listContentProvider.getKnownElements(), Icon.class, "src"); iconsTableViewer.setLabelProvider(new ObservableMapLabelProvider(observeMap)); iconsTableViewer.setContentProvider(listContentProvider); // IObservableList iconsGetWidgetObserveList = BeanProperties.list("icons").observe(getWidget()); iconsTableViewer.setInput(iconsGetWidgetObserveList); // ObservableListContentProvider listContentProvider_1 = new ObservableListContentProvider(); IObservableMap observeMap_1 = BeansObservables.observeMap(listContentProvider_1.getKnownElements(), Splash.class, "src"); splashTableViewer.setLabelProvider(new ObservableMapLabelProvider(observeMap_1)); splashTableViewer.setContentProvider(listContentProvider_1); // IObservableList splashesGetWidgetObserveList = BeanProperties.list("splashes").observe(getWidget()); splashTableViewer.setInput(splashesGetWidgetObserveList); // IObservableValue observeSingleSelectionIconsTableViewer = ViewerProperties.singleSelection() .observe(iconsTableViewer); IObservableValue iconsTableViewerWidthObserveDetailValue = BeanProperties .value(Icon.class, "width", int.class).observeDetail(observeSingleSelectionIconsTableViewer); IObservableValue observeTextTxtWidthObserveWidget = WidgetProperties.text(SWT.Modify).observe(txtWidth); bindingContext.bindValue(iconsTableViewerWidthObserveDetailValue, observeTextTxtWidthObserveWidget, null, null); // IObservableValue observeSingleSelectionIconsTableViewer_1 = ViewerProperties.singleSelection() .observe(iconsTableViewer); IObservableValue iconsTableViewerHeightObserveDetailValue = BeanProperties .value(Icon.class, "height", int.class).observeDetail(observeSingleSelectionIconsTableViewer_1); IObservableValue observeTextTxtHeightObserveWidget = WidgetProperties.text(SWT.Modify).observe(txtHeight); bindingContext.bindValue(iconsTableViewerHeightObserveDetailValue, observeTextTxtHeightObserveWidget, null, null); // IObservableValue observeSingleSelectionIconsTableViewer_2 = ViewerProperties.singleSelection() .observe(iconsTableViewer); IObservableValue iconsTableViewerPlatformObserveDetailValue = BeanProperties .value(Icon.class, "platform", String.class) .observeDetail(observeSingleSelectionIconsTableViewer_2); IObservableValue observeTextTxtPlatformObserveWidget = WidgetProperties.text(SWT.Modify) .observe(txtPlatform); bindingContext.bindValue(iconsTableViewerPlatformObserveDetailValue, observeTextTxtPlatformObserveWidget, null, null); // IObservableValue observeSingleSelectionIconsTableViewer_3 = ViewerProperties.singleSelection() .observe(iconsTableViewer); IObservableValue iconsTableViewerDensityObserveDetailValue = BeanProperties .value(Icon.class, "density", String.class).observeDetail(observeSingleSelectionIconsTableViewer_3); IObservableValue observeTextTxtDensityObserveWidget = WidgetProperties.text(SWT.Modify).observe(txtDensity); bindingContext.bindValue(iconsTableViewerDensityObserveDetailValue, observeTextTxtDensityObserveWidget, null, null); // IObservableValue observeSingleSelectionSplashTableViewer = ViewerProperties.singleSelection() .observe(splashTableViewer); IObservableValue splashTableViewerWidthObserveDetailValue = BeanProperties .value(Splash.class, "width", int.class).observeDetail(observeSingleSelectionSplashTableViewer); IObservableValue observeTextTxtSplshWidthObserveWidget = WidgetProperties.text(SWT.Modify) .observe(txtSplshWidth); bindingContext.bindValue(splashTableViewerWidthObserveDetailValue, observeTextTxtSplshWidthObserveWidget, null, null); // IObservableValue observeSingleSelectionSplashTableViewer_1 = ViewerProperties.singleSelection() .observe(splashTableViewer); IObservableValue splashTableViewerHeightObserveDetailValue = BeanProperties .value(Splash.class, "height", int.class).observeDetail(observeSingleSelectionSplashTableViewer_1); IObservableValue observeTextTxtSplshHeightObserveWidget = WidgetProperties.text(SWT.Modify) .observe(txtSplshHeight); bindingContext.bindValue(splashTableViewerHeightObserveDetailValue, observeTextTxtSplshHeightObserveWidget, null, null); // IObservableValue observeSingleSelectionSplashTableViewer_2 = ViewerProperties.singleSelection() .observe(splashTableViewer); IObservableValue splashTableViewerPlatformObserveDetailValue = BeanProperties .value(Splash.class, "platform", String.class) .observeDetail(observeSingleSelectionSplashTableViewer_2); IObservableValue observeTextTxtSplshPlatformObserveWidget = WidgetProperties.text(SWT.Modify) .observe(txtSplshPlatform); bindingContext.bindValue(splashTableViewerPlatformObserveDetailValue, observeTextTxtSplshPlatformObserveWidget, null, null); // IObservableValue observeSingleSelectionSplashTableViewer_3 = ViewerProperties.singleSelection() .observe(splashTableViewer); IObservableValue splashTableViewerDensityObserveDetailValue = BeanProperties .value(Splash.class, "density", String.class) .observeDetail(observeSingleSelectionSplashTableViewer_3); IObservableValue observeTextTxtSplshDensityObserveWidget = WidgetProperties.text(SWT.Modify) .observe(txtSplshDensity); bindingContext.bindValue(splashTableViewerDensityObserveDetailValue, observeTextTxtSplshDensityObserveWidget, null, null); // return bindingContext; }
From source file:org.eclipse.thym.ui.config.internal.PropertiesPage.java
License:Open Source License
protected DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); ////from w w w .ja v a 2 s .c om ObservableListContentProvider listContentProvider = new ObservableListContentProvider(); IObservableMap[] observeMaps = BeansObservables.observeMaps(listContentProvider.getKnownElements(), Preference.class, new String[] { "name", "value" }); preferencesViewer.setLabelProvider(new ObservableMapLabelProvider(observeMaps)); preferencesViewer.setContentProvider(listContentProvider); // IObservableList preferencesGetWidgetObserveList = BeanProperties.list("preferences").observe(getWidget()); preferencesViewer.setInput(preferencesGetWidgetObserveList); // ObservableListContentProvider listContentProvider_1 = new ObservableListContentProvider(); IObservableMap[] observeMaps_1 = BeansObservables.observeMaps(listContentProvider_1.getKnownElements(), Access.class, new String[] { "origin", "subdomains", "browserOnly" }); accessViewer.setLabelProvider(new ObservableMapLabelProvider(observeMaps_1)); accessViewer.setContentProvider(listContentProvider_1); // IObservableList accessesGetWidgetObserveList = BeanProperties.list("accesses").observe(getWidget()); accessViewer.setInput(accessesGetWidgetObserveList); // ObservableListContentProvider listContentProvider_2 = new ObservableListContentProvider(); IObservableMap[] observeMapsPlugin = BeansObservables.observeMaps(listContentProvider_2.getKnownElements(), Plugin.class, new String[] { "name", "spec" }); featuresTableViewer.setLabelProvider(new ObservableMapLabelProvider(observeMapsPlugin)); featuresTableViewer.setContentProvider(listContentProvider_2); // IObservableList featuresGetWidgetObserveList = BeanProperties.list("plugins").observe(getWidget()); featuresTableViewer.setInput(featuresGetWidgetObserveList); // return bindingContext; }
From source file:org.eclipse.ui.tests.manual.ViewWithSaveables.java
License:Open Source License
public void createPartControl(Composite parent) { viewer = new TableViewer(parent, SWT.BORDER); GridDataFactory.fillDefaults().grab(true, true).span(4, 1).applyTo(viewer.getControl()); ObservableListContentProvider observableListContentProvider = new ObservableListContentProvider(); viewer.setContentProvider(observableListContentProvider); viewer.setLabelProvider(new ObservableMapLabelProvider( new DirtyObservableMap(observableListContentProvider.getKnownElements())) { public String getColumnText(Object element, int columnIndex) { return getText(element); }//from ww w . ja v a2 s . c om public String getText(Object element) { MySaveable saveable = (MySaveable) element; return (saveable.isDirty() ? "*" : "") + saveable.toString(); } }); viewer.setInput(saveables); { Button button = new Button(parent, SWT.PUSH); button.setText("Add"); button.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { addSaveable(); } }); } selection = ViewersObservables.observeSingleSelection(viewer); { final Button button = new Button(parent, SWT.PUSH); button.setText("Remove"); button.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { removeSaveable(); } }); new ControlUpdater(button) { protected void updateControl() { button.setEnabled(selection.getValue() != null); } }; } { final Button button = new Button(parent, SWT.CHECK); button.setText("dirty"); button.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { MySaveable saveable = (MySaveable) selection.getValue(); saveable.setDirty(button.getSelection()); } }); new ControlUpdater(button) { protected void updateControl() { MySaveable saveable = (MySaveable) selection.getValue(); if (saveable == null) { button.setEnabled(false); button.setSelection(false); } else { button.setEnabled(true); // we know that isDirty is implemented using a // WritableValue, // and thus a dependency on that writable value will // result from // calling isDirty(). button.setSelection(saveable.isDirty()); } } }; } getSite().setSelectionProvider(viewer); dirty.addValueChangeListener(new IValueChangeListener() { public void handleValueChange(ValueChangeEvent event) { firePropertyChange(ISaveablePart.PROP_DIRTY); } }); GridLayoutFactory.fillDefaults().numColumns(4).equalWidth(false).generateLayout(parent); }
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);//from w w w. j a va 2s. com 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.eclipsetrader.ui.internal.views.WatchListView.java
License:Open Source License
TableViewer createViewer(Composite parent) { viewer = new TableViewer(parent, SWT.MULTI | SWT.FULL_SELECTION); viewer.getTable().setHeaderVisible(true); viewer.getTable().setLinesVisible(false); final ObservableListContentProvider contentProvider = new ObservableListContentProvider(); viewer.setContentProvider(contentProvider); tickDecorator = new WatchListViewTickDecorator(contentProvider.getKnownElements()); int index = 0; for (WatchListViewColumn column : model.getColumns()) { createViewerColumn(column, tickDecorator); if (dialogSettings != null) { if (column.getId().equals(dialogSettings.get(K_SORT_COLUMN))) { sortColumn = index;/*w w w .j av a 2 s . c o m*/ } } index++; } model.getObservableColumns().addListChangeListener(new IListChangeListener() { @Override public void handleListChange(ListChangeEvent event) { event.diff.accept(new ListDiffVisitor() { @Override public void handleAdd(int index, Object element) { WatchListViewColumn column = (WatchListViewColumn) element; createViewerColumn(index, column, tickDecorator); if (dialogSettings != null && column.getId().equals(dialogSettings.get(K_SORT_COLUMN))) { sortColumn = index; viewer.getTable().setSortDirection(sortDirection); viewer.getTable().setSortColumn(viewer.getTable().getColumn(sortColumn)); } } @Override public void handleRemove(int index, Object element) { WatchListViewColumn column = (WatchListViewColumn) element; if (dialogSettings != null && column.getId().equals(dialogSettings.get(K_SORT_COLUMN))) { sortColumn = -1; } TableColumn tableColumn = viewer.getTable().getColumn(index); tableColumn.dispose(); } }); viewer.refresh(); updateBackgrounds(); } }); viewer.setSorter(new ViewerSorter() { @Override public int compare(Viewer viewer, Object e1, Object e2) { if (sortColumn < 0 || sortColumn >= model.getColumns().size()) { return 0; } String propertyName = model.getColumns().get(sortColumn).getId(); IAdaptable v1 = (IAdaptable) ((WatchListViewItem) e1).getValue(propertyName); IAdaptable v2 = (IAdaptable) ((WatchListViewItem) e2).getValue(propertyName); if (sortDirection == SWT.DOWN) { v1 = (IAdaptable) ((WatchListViewItem) e2).getValue(propertyName); v2 = (IAdaptable) ((WatchListViewItem) e1).getValue(propertyName); } return compareValues(v1, v2); } }); viewer.setInput(model.getObservableItems()); model.getObservableItems().addListChangeListener(new IListChangeListener() { @Override public void handleListChange(ListChangeEvent event) { Display.getDefault().asyncExec(new Runnable() { @Override public void run() { updateBackgrounds(); } }); } }); viewer.getControl().addDisposeListener(new DisposeListener() { @Override public void widgetDisposed(DisposeEvent e) { tickDecorator.dispose(); } }); return viewer; }