Example usage for org.eclipse.jface.databinding.viewers ObservableListContentProvider getKnownElements

List of usage examples for org.eclipse.jface.databinding.viewers ObservableListContentProvider getKnownElements

Introduction

In this page you can find the example usage for org.eclipse.jface.databinding.viewers ObservableListContentProvider getKnownElements.

Prototype

public IObservableSet<E> getKnownElements() 

Source Link

Document

Returns the set of elements known to this content provider.

Usage

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;
}