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.cdt.internal.docker.launcher.ContainerPropertyTab.java

License:Open Source License

/**
 * Same as/*from w w w  .  j  a v  a 2 s . c  o m*/
 * {@link ViewerSupport#bind(StructuredViewer, IObservableList, org.eclipse.core.databinding.property.value.IValueProperty[])
 * but with a custom LabelProvider, DataVolumesLabelProvider
 *
 * @param viewer
 * @param input
 * @param labelProperties
 */
private void bind(final StructuredViewer viewer, final IObservableList input,
        final IBeanValueProperty[] labelProperties) {
    final ObservableListContentProvider contentProvider = new ObservableListContentProvider();
    if (viewer.getInput() != null) {
        viewer.setInput(null);
    }
    viewer.setContentProvider(contentProvider);
    viewer.setLabelProvider(new DataVolumesLabelProvider(
            Properties.observeEach(contentProvider.getKnownElements(), labelProperties)));
    if (input != null) {
        viewer.setInput(input);
    }

}

From source file:org.eclipse.e4.demo.contacts.views.ListView.java

License:Open Source License

@Inject
public ListView(Composite parent, EMenuService menuService) {
    // Table composite (because of TableColumnLayout)
    final Composite tableComposite = new Composite(parent, SWT.NONE);
    tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    final TableColumnLayout tableColumnLayout = new TableColumnLayout();
    tableComposite.setLayout(tableColumnLayout);

    // Table viewer
    contactsViewer = new TableViewer(tableComposite, SWT.FULL_SELECTION);
    contactsViewer.getTable().setHeaderVisible(true);
    // contactsViewer.getTable().setLinesVisible(true);
    contactsViewer.setComparator(new ContactViewerComparator());

    contactsViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            selectionService.setSelection(selection.getFirstElement());
        }//from w ww.ja v  a 2 s.  c  o  m
    });

    // First name column
    final TableViewerColumn firstNameColumn = new TableViewerColumn(contactsViewer, SWT.NONE);
    firstNameColumn.getColumn().setText("First Name");
    tableColumnLayout.setColumnData(firstNameColumn.getColumn(), new ColumnWeightData(40));

    // Last name column
    final TableViewerColumn lastNameColumn = new TableViewerColumn(contactsViewer, SWT.NONE);
    lastNameColumn.getColumn().setText("Last Name");
    tableColumnLayout.setColumnData(lastNameColumn.getColumn(), new ColumnWeightData(60));

    menuService.registerContextMenu(contactsViewer.getControl(), "contacts.popup");

    ObservableListContentProvider contentProvider = new ObservableListContentProvider();

    contactsViewer.setContentProvider(contentProvider);

    IObservableMap[] attributes = BeansObservables.observeMaps(contentProvider.getKnownElements(),
            Contact.class, new String[] { "firstName", "lastName" });
    contactsViewer.setLabelProvider(new ObservableMapLabelProvider(attributes));

    contactsViewer.setInput(ContactsRepositoryFactory.getContactsRepository().getAllContacts());

    GridLayoutFactory.fillDefaults().generateLayout(parent);
}

From source file:org.eclipse.e4.demo.e4photo.ExifTable.java

License:Open Source License

@PostConstruct
void init() {// ww w.  j av  a  2s  .com
    parent.setLayout(new FillLayout());

    viewer = new TableViewer(parent,
            SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    viewer.getTable().setHeaderVisible(true);
    viewer.getTable().setLinesVisible(true);

    viewer.getTable().setData("org.eclipse.e4.ui.css.id", "exif");
    viewer.getTable().setData("org.eclipse.e4.ui.css.CssClassName", "properties");

    JSONObject restoredState = null;
    try {
        if (persistedState != null)
            restoredState = new JSONObject(persistedState);
    } catch (JSONException e) {
        //discard persisted state and start with fresh state
    }
    final JSONObject state = restoredState != null ? restoredState : new JSONObject();

    String[] columnNames = new String[] { "name", "make", "model", "orientation", "software", "timestamp",
            "gpsLatitude", "gpsLongitude", "exposure", "iso", "aperture", "exposureComp", "flash", "width",
            "height", "focalLength", "whiteBalance", "lightSource", "exposureProgram" };

    for (int i = 0; i < columnNames.length; i++) {
        TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
        final TableColumn c = column.getColumn();
        final String name = columnNames[i];
        c.setText(name);
        String width = state.optString(name, null);
        if (width != null) {
            c.setWidth(Integer.parseInt(width));
        } else {
            c.pack();
        }
        c.addControlListener(new ControlAdapter() {
            @Override
            public void controlResized(ControlEvent e) {
                try {
                    state.put(name, Integer.toString(c.getWidth()));
                } catch (JSONException e1) {
                    //cannot happen because name is not null
                }
                setPersistedState(state.toString());
            }
        });
    }

    ObservableListContentProvider contentProvider = new ObservableListContentProvider();
    viewer.setContentProvider(contentProvider);

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            Object selected = ((StructuredSelection) event.getSelection()).getFirstElement();
            if (eventAdmin != null)
                EventUtils.post(eventAdmin, EVENT_NAME, selected);
        }
    });

    viewer.setLabelProvider(new ObservableMapLabelProvider(
            PojoObservables.observeMaps(contentProvider.getKnownElements(), Exif.class, columnNames)));

    viewer.setInput(inputList);
}

From source file:org.eclipse.e4.tools.emf.ui.internal.common.component.ControlFactory.java

License:Open Source License

public static void createSelectedElement(Composite parent, final AbstractComponentEditor editor,
        final EMFDataBindingContext context, String label) {
    Label l = new Label(parent, SWT.NONE);
    l.setText(label);// ww  w.  j a  v  a 2  s  . com
    l.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));

    ComboViewer viewer = new ComboViewer(parent);
    GridData gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.horizontalSpan = 2;
    viewer.getControl().setLayoutData(gd);
    IEMFEditListProperty listProp = EMFEditProperties.list(editor.getEditingDomain(),
            UiPackageImpl.Literals.ELEMENT_CONTAINER__CHILDREN);
    IEMFEditValueProperty labelProp = EMFEditProperties.value(editor.getEditingDomain(),
            UiPackageImpl.Literals.UI_LABEL__LABEL);
    IEMFEditValueProperty idProp = EMFEditProperties.value(editor.getEditingDomain(),
            ApplicationPackageImpl.Literals.APPLICATION_ELEMENT__ELEMENT_ID);

    IViewerValueProperty vProp = ViewerProperties.singleSelection();

    final Binding[] binding = new Binding[1];
    final IObservableValue uiObs = vProp.observe(viewer);
    final IObservableValue mObs = EMFEditProperties
            .value(editor.getEditingDomain(), UiPackageImpl.Literals.ELEMENT_CONTAINER__SELECTED_ELEMENT)
            .observeDetail(editor.getMaster());
    editor.getMaster().addValueChangeListener(new IValueChangeListener() {

        @Override
        public void handleValueChange(ValueChangeEvent event) {
            if (binding[0] != null) {
                binding[0].dispose();
            }

        }
    });

    final IObservableList list = listProp.observeDetail(editor.getMaster());
    ObservableListContentProvider cp = new ObservableListContentProvider();
    viewer.setContentProvider(cp);
    IObservableMap[] attributeMaps = { labelProp.observeDetail(cp.getKnownElements()),
            idProp.observeDetail(cp.getKnownElements()) };
    viewer.setLabelProvider(new ObservableMapLabelProvider(attributeMaps) {
        @Override
        public String getText(Object element) {
            EObject o = (EObject) element;
            String rv = o.eClass().getName();

            if (element instanceof MUILabel) {
                MUILabel label = (MUILabel) element;
                if (!Util.isNullOrEmpty(label.getLabel())) {
                    return rv + " - " + label.getLabel().trim(); //$NON-NLS-1$
                }

            }

            if (element instanceof MApplicationElement) {
                MApplicationElement appEl = (MApplicationElement) element;
                if (!Util.isNullOrEmpty(appEl.getElementId())) {
                    return rv + " - " + appEl.getElementId(); //$NON-NLS-1$
                }
            }

            return rv + "[" + list.indexOf(element) + "]"; //$NON-NLS-1$//$NON-NLS-2$
        }
    });
    viewer.setInput(list);

    editor.getMaster().addValueChangeListener(new IValueChangeListener() {

        @Override
        public void handleValueChange(ValueChangeEvent event) {
            binding[0] = context.bindValue(uiObs, mObs);
        }
    });
}

From source file:org.eclipse.e4.tutorial.contacts.views.ListView.java

License:Open Source License

@Inject
public ListView(Composite parent, ContactsRepository contactsRepository) {
    // Table composite (because of TableColumnLayout)
    final Composite tableComposite = new Composite(parent, SWT.NONE);
    tableComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    final TableColumnLayout tableColumnLayout = new TableColumnLayout();
    tableComposite.setLayout(tableColumnLayout);

    // Table viewer
    tableViewer = new TableViewer(tableComposite, SWT.FULL_SELECTION);
    tableViewer.getTable().setHeaderVisible(true);

    // first name column
    final TableViewerColumn firstNameColumn = new TableViewerColumn(tableViewer, SWT.NONE);
    firstNameColumn.getColumn().setText("First Name");
    tableColumnLayout.setColumnData(firstNameColumn.getColumn(), new ColumnWeightData(40));

    // last name column
    final TableViewerColumn lastNameColumn = new TableViewerColumn(tableViewer, SWT.NONE);
    lastNameColumn.getColumn().setText("Last Name");
    tableColumnLayout.setColumnData(lastNameColumn.getColumn(), new ColumnWeightData(40));

    ObservableListContentProvider contentProvider = new ObservableListContentProvider();

    tableViewer.setContentProvider(contentProvider);

    IObservableMap[] attributes = BeansObservables.observeMaps(contentProvider.getKnownElements(),
            Contact.class, new String[] { "firstName", "lastName" });
    tableViewer.setLabelProvider(new ObservableMapLabelProvider(attributes));

    tableViewer.setInput(contactsRepository.getAllContacts());

    GridLayoutFactory.fillDefaults().generateLayout(parent);

    tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override/*from w w w.j  a va  2 s . c o  m*/
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            selectionService.setSelection(selection.getFirstElement());
        }
    });
}

From source file:org.eclipse.e4.xwt.tests.snipppets.Snippet007ColorLabelProvider.java

License:Open Source License

/**
 * @param args//w ww  . j  a  v a  2s .  c  om
 */
public static void main(String[] args) {
    final List 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(SWTObservables.getRealm(display), new Runnable() {
        public void run() {
            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 observableList = Observables.staticObservableList(persons);
            ObservableListContentProvider 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[] attributes = BeansObservables.observeMaps(contentProvider.getKnownElements(),
                    Person.class, new String[] { "name", "gender" });

            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:
                public String getColumnText(Object element, int index) {
                    if (index == 0) {
                        return Integer.toString(persons.indexOf(element) + 1);
                    }
                    return ((Person) element).getName();
                }

                public Color getBackground(Object element, int index) {
                    return null;
                }

                public Color getForeground(Object element, int index) {
                    if (index == 0)
                        return null;
                    Person person = (Person) element;
                    return (person.getGender() == Person.MALE) ? male : female;
                }

                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() {
                public void widgetSelected(SelectionEvent arg0) {
                    StructuredSelection selection = (StructuredSelection) viewer.getSelection();
                    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.emf.ecp.edit.internal.swt.controls.TableControl.java

License:Open Source License

@Override
protected void fillControlComposite(Composite parent) {
    final Composite composite = new Composite(parent, SWT.NONE);
    GridDataFactory.fillDefaults().grab(true, true).align(SWT.FILL, SWT.FILL).hint(1, 200).applyTo(composite);
    tableViewer = createTableViewer(composite);

    final ObservableListContentProvider cp = new ObservableListContentProvider();
    final EObject tempInstance = getInstanceOf(clazz);
    final ECPTableViewerComparator comparator = new ECPTableViewerComparator();
    tableViewer.setComparator(comparator);
    int columnNumber = 0;
    final Map<EStructuralFeature, Boolean> readOnlyConfig = createReadOnlyConfig(clazz);
    final List<EStructuralFeature> structuralFeatures = new ArrayList<EStructuralFeature>();
    structuralFeatures.addAll(readOnlyConfig.keySet());
    if (!getControl().isReadonly()) {
        createFixedValidationStatusColumn(tableViewer, structuralFeatures);
    }/*  w w  w .j av a2  s  . c  om*/

    for (final EStructuralFeature feature : structuralFeatures) {
        final IItemPropertyDescriptor itemPropertyDescriptor = adapterFactoryItemDelegator
                .getPropertyDescriptor(tempInstance, feature);
        if (itemPropertyDescriptor == null) {
            // if we can't render because no edit information is available, do nothing
            continue;
        }

        final CellEditor cellEditor = createCellEditor(tempInstance, feature);
        final TableViewerColumn column = TableViewerColumnBuilder.create()
                .setText(itemPropertyDescriptor.getDisplayName(null))
                .setToolTipText(itemPropertyDescriptor.getDescription(null)).setResizable(true)
                .setMoveable(false).setStyle(noStyle()).setData("width", //$NON-NLS-1$
                        ECPCellEditor.class.isInstance(cellEditor)
                                ? ECPCellEditor.class.cast(cellEditor).getColumnWidthWeight()
                                : 100)
                .build(tableViewer);

        column.setLabelProvider(new ECPCellLabelProvider(feature, cellEditor,
                feature.isMany() ? new EObjectObservableMap(cp.getKnownElements(), feature)
                        : EMFProperties.value(feature).observeDetail(cp.getKnownElements())));
        column.getColumn()
                .addSelectionListener(getSelectionAdapter(comparator, column.getColumn(), columnNumber));

        if (!isReadOnlyFeature(readOnlyConfig, feature)) {
            // remove if no editing needed
            final EditingSupport observableSupport = new ECPTableEditingSupport(tableViewer, cellEditor,
                    feature);
            column.setEditingSupport(observableSupport);
        }
        columnNumber++;
    }
    tableViewer.setContentProvider(cp);
    final IObservableList list = EMFEditObservables.observeList(getEditingDomain(mainSetting),
            mainSetting.getEObject(), mainSetting.getEStructuralFeature());
    tableViewer.setInput(list);

    // IMPORTANT:
    // - the minimumWidth and (non)resizable settings of the ColumnWeightData are not supported properly
    // - the layout stops resizing columns that have been resized manually by the user (this could be considered a
    // feature though)
    final TableColumnLayout layout = new TableColumnLayout();
    composite.setLayout(layout);
    for (int i = 0; i < tableViewer.getTable().getColumns().length; i++) {
        final Integer storedValue = (Integer) tableViewer.getTable().getColumns()[i].getData("width"); //$NON-NLS-1$
        layout.setColumnData(tableViewer.getTable().getColumns()[i],
                new ColumnWeightData(storedValue == null ? 50 : storedValue));
    }
}

From source file:org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer.java

License:Open Source License

/**
 * Adds the table columns to the {@link TableViewerSWTBuilder}.
 *
 * @param tableViewerSWTBuilder the builder
 * @param clazz the {@EClass} of the rendered object
 * @param cp the content provider/*from www . jav  a2 s. c om*/
 *
 */
private void addColumns(TableViewerSWTBuilder tableViewerSWTBuilder, EClass clazz,
        ObservableListContentProvider cp) {
    InternalEObject tempInstance = null;
    if (!clazz.isAbstract() && !clazz.isInterface()) {
        tempInstance = getInstanceOf(clazz);
    }
    final VTableDomainModelReference tableDomainModelReference = VTableDomainModelReference.class
            .cast(getVElement().getDomainModelReference());

    /* regular columns */
    for (final VDomainModelReference dmr : tableDomainModelReference.getColumnDomainModelReferences()) {
        try {
            if (dmr == null) {
                continue;
            }

            final IObservableValue text = getLabelText(dmr, true);
            final IObservableValue tooltip = getLabelTooltipText(dmr, true);

            final IValueProperty valueProperty = getEMFFormsDatabinding().getValueProperty(dmr,
                    getViewModelContext().getDomainModel());
            final EStructuralFeature eStructuralFeature = (EStructuralFeature) valueProperty.getValueType();

            final IObservableMap observableMap = valueProperty.observeDetail(cp.getKnownElements());

            final TableControlEditingSupportAndLabelProvider labelProvider = new TableControlEditingSupportAndLabelProvider(
                    tempInstance, eStructuralFeature, dmr, valueProperty, observableMap,
                    tableDomainModelReference.getColumnDomainModelReferences().indexOf(dmr));
            final EditingSupportCreator editingSupportCreator = TableConfigurationHelper
                    .isReadOnly(getVElement(), dmr) ? null : labelProvider;

            // TODO ugly: we need this temporary cell editor so early just to get size information
            final CellEditor tempCellEditor = createCellEditor(tempInstance, eStructuralFeature,
                    new Table(new Shell(), SWT.NONE));

            final int weight = ECPCellEditor.class.isInstance(tempCellEditor)
                    ? ECPCellEditor.class.cast(tempCellEditor).getColumnWidthWeight()
                    : 100;
            final int minWidth = ECPCellEditor.class.isInstance(tempCellEditor)
                    ? ECPCellEditor.class.cast(tempCellEditor).getMinWidth()
                    : 0;

            tableViewerSWTBuilder.addColumn(true, false, SWT.NONE, weight, minWidth, text, tooltip,
                    labelProvider, editingSupportCreator, null);

        } catch (final DatabindingFailedException ex) {
            getReportService().report(new RenderingFailedReport(ex));
            continue;
        }
    }

}

From source file:org.eclipse.emf.example.databinding.project.ui.rcp.views.ProjectCommittersPart.java

License:Open Source License

private void init(IViewSite site, CTabFolder folder, DataBindingContext ctx, EditingDomain editingDomain,
        IObservableValue master) {/* www . j a va2 s.  co  m*/
    final TableViewer viewer = new TableViewer(folder, SWT.FULL_SELECTION);

    {
        IValueProperty prop = EMFEditProperties.value(editingDomain,
                ProjectPackage.Literals.PROJECT__COMMITTERS);
        CTabItem item = new CTabItem(folder, SWT.NONE);
        item.setControl(viewer.getControl());

        ctx.bindValue(WidgetProperties.text().observe(item), prop.observeDetail(master),
                new EMFUpdateValueStrategy(), new EMFUpdateValueStrategy().setConverter(new LengthConverter()));
    }

    folder.setSelection(0);

    viewer.getTable().setHeaderVisible(true);
    ObservableListContentProvider cp = new ObservableListContentProvider();

    {
        IObservableMap[] attributeMap = new IObservableMap[2];
        attributeMap[0] = EMFEditProperties
                .value(editingDomain, FeaturePath.fromList(ProjectPackage.Literals.COMMITTER_SHIP__PERSON,
                        ProjectPackage.Literals.PERSON__LASTNAME))
                .observeDetail(cp.getKnownElements());
        attributeMap[1] = EMFEditProperties
                .value(editingDomain,
                        FeaturePath.fromList(ProjectPackage.Literals.COMMITTER_SHIP__PERSON,
                                ProjectPackage.Literals.PERSON__FIRSTNAME))
                .observeDetail(cp.getKnownElements());

        TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
        column.getColumn().setText("Name");
        column.getColumn().setWidth(150);
        column.setLabelProvider(new GenericMapCellLabelProvider("{0}, {1}", attributeMap));
    }

    {
        IObservableMap attributeMap = EMFEditProperties
                .value(editingDomain, ProjectPackage.Literals.COMMITTER_SHIP__START)
                .observeDetail(cp.getKnownElements());
        TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
        column.getColumn().setText("Start");
        column.getColumn().setWidth(100);
        column.setLabelProvider(new GenericMapCellLabelProvider("{0,date,short}", attributeMap));
    }

    {
        IObservableMap attributeMap = EMFEditProperties
                .value(editingDomain, ProjectPackage.Literals.COMMITTER_SHIP__END)
                .observeDetail(cp.getKnownElements());
        TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
        column.getColumn().setText("End");
        column.getColumn().setWidth(100);
        column.setLabelProvider(new GenericMapCellLabelProvider("{0,date,short}", attributeMap));
    }

    IListProperty prop = EMFEditProperties.list(editingDomain, ProjectPackage.Literals.PROJECT__COMMITTERS);
    viewer.setContentProvider(cp);
    viewer.setInput(prop.observeDetail(master));

    MenuManager mgr = new MenuManager();
    mgr.add(new Action("Hide historic committers", IAction.AS_CHECK_BOX) {
        @Override
        public void run() {
            if (isChecked()) {
                viewer.addFilter(new ViewerFilterImpl());
            } else {
                viewer.setFilters(new ViewerFilter[0]);
            }
        }
    });

    viewer.getControl().setMenu(mgr.createContextMenu(viewer.getControl()));

    site.registerContextMenu(Activator.PLUGIN_ID + ".committers", mgr, viewer);
}

From source file:org.eclipse.emf.examples.library.databinding.stock.StockForm.java

License:Open Source License

@Override
public void doCreateForm(TabFolder folder, TabItem item, EditingDomain domain, DataBindingContext dbc,
        IObservableValue master) {/*from  ww  w.  ja va 2s.  c  om*/
    Composite comp = new Composite(folder, SWT.NONE);
    IValueProperty textProp = WidgetProperties.text();
    dbc.bindValue(textProp.observe(item),
            EMFEditObservables.observeDetailValue(Realm.getDefault(), domain, master,
                    EXTLibraryPackage.Literals.LIBRARY__STOCK),
            new UpdateValueStrategy(), new UpdateValueStrategy().setConverter(new LengthConverter()));

    TableColumnLayout layout = new TableColumnLayout();
    comp.setLayout(layout);

    itemViewer = new TableViewer(comp,
            SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.MULTI);
    IFocusService focusService = (IFocusService) getSite().getService(IFocusService.class);
    focusService.addFocusTracker(itemViewer.getControl(), STOCK_TABLE);
    itemViewer.getTable().setHeaderVisible(true);
    itemViewer.getTable().setLinesVisible(true);
    ObservableListContentProvider cp = new ObservableListContentProvider();
    itemViewer.setContentProvider(cp);
    itemViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent event) {
            ISourceProviderService service = (ISourceProviderService) getSite()
                    .getService(ISourceProviderService.class);
            SourceProvider pv = (SourceProvider) service.getSourceProvider(ISources.SELECTED_STOCK_ITEM_NAME);
            pv.setItemSelection(event.getSelection());
        }

    });

    ConditionalTemplate tplBookTitle = new ConditionalTemplate("${0}") {

        @Override
        public boolean isTemplate(EObject element) {
            return element instanceof Book && ((Book) element).getTitle() != null;
        }

    };
    ConditionalTemplate tplAudiovisualTitle = new ConditionalTemplate("${1}") {

        @Override
        public boolean isTemplate(EObject element) {
            return element instanceof AudioVisualItem && ((AudioVisualItem) element).getTitle() != null;
        }

    };
    ConditionalTemplate tplPeriodicalTitle = new ConditionalTemplate("${2}") {

        @Override
        public boolean isTemplate(EObject element) {
            return element instanceof Periodical && ((Periodical) element).getTitle() != null;
        }

    };

    ConditionalTemplate tplPublicationDate = new ConditionalTemplate("${0,date,medium}") {

        @Override
        public boolean isTemplate(EObject element) {
            return ((Item) element).getPublicationDate() != null;
        }

    };

    ConditionalTemplate tplNullValue = new ConditionalTemplate("-") {

        @Override
        public boolean isTemplate(EObject element) {
            return true;
        }

    };

    IObservableMap featBookTitle = EMFEditObservables.observeMap(domain, cp.getKnownElements(),
            EXTLibraryPackage.Literals.BOOK__TITLE);
    IObservableMap featAudiovisualTitle = EMFEditObservables.observeMap(domain, cp.getKnownElements(),
            EXTLibraryPackage.Literals.AUDIO_VISUAL_ITEM__TITLE);
    IObservableMap featPeriodicalTitle = EMFEditObservables.observeMap(domain, cp.getKnownElements(),
            EXTLibraryPackage.Literals.PERIODICAL__TITLE);
    IObservableMap featItemPublicationDate = EMFEditObservables.observeMap(domain, cp.getKnownElements(),
            EXTLibraryPackage.Literals.ITEM__PUBLICATION_DATE);

    TableViewerColumn c = new TableViewerColumn(itemViewer, SWT.NONE);
    c.getColumn().setText("AAAAA");
    layout.setColumnData(c.getColumn(), new ColumnWeightData(1, 120));
    c.setLabelProvider(new ObservableColumnLabelProvider(
            new IObservableMap[] { featBookTitle, featAudiovisualTitle, featPeriodicalTitle },
            Arrays.asList(tplBookTitle, tplAudiovisualTitle, tplPeriodicalTitle, tplNullValue)));

    c = new TableViewerColumn(itemViewer, SWT.NONE);
    c.getColumn().setText("Type");
    layout.setColumnData(c.getColumn(), new ColumnWeightData(1, 120));
    c.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            if (element instanceof Book) {
                return "Book";
            } else if (element instanceof BookOnTape) {
                return "Book On Tape";
            } else if (element instanceof VideoCassette) {
                return "Video";
            } else if (element instanceof Periodical) {
                return "Periodical";
            } else {
                return "";
            }
        }

    });

    c = new TableViewerColumn(itemViewer, SWT.NONE);
    c.getColumn().setText("Publication Date");
    layout.setColumnData(c.getColumn(), new ColumnWeightData(1, 120));
    c.setLabelProvider(new ObservableColumnLabelProvider(new IObservableMap[] { featItemPublicationDate },
            Arrays.asList(tplPublicationDate, tplNullValue)));

    MenuManager mgr = new MenuManager();
    itemViewer.getControl().setMenu(mgr.createContextMenu(itemViewer.getControl()));
    getSite().registerContextMenu("org.eclipse.emf.examples.library.databinding.stock", mgr, itemViewer);

    item.setControl(comp);
    itemViewer.setInput(EMFEditObservables.observeDetailList(Realm.getDefault(), domain, master,
            EXTLibraryPackage.Literals.LIBRARY__STOCK));
}