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

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

Introduction

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

Prototype

public ObservableListContentProvider() 

Source Link

Document

Constructs an ObservableListContentProvider.

Usage

From source file:at.bestsolution.e4.addressbook.ui.swt.AddressForm.java

License:Open Source License

public void init(AddressBook book) {
    {/*from  w  w  w  .j  av  a2s  . c om*/
        IEMFListProperty mProp = EMFProperties.list(AddressbookPackage.Literals.ADDRESS_BOOK__COUNTRIES);
        IValueProperty props = EMFProperties.value(AddressbookPackage.Literals.COUNTRY__NAME);

        v_country = new ComboViewer(w_country);
        ObservableListContentProvider cp = new ObservableListContentProvider();
        v_country.setContentProvider(cp);
        v_country.setLabelProvider(new ObservableMapLabelProvider(props.observeDetail(cp.getKnownElements())));
        v_country.setInput(mProp.observe(book));
    }

    {
        IObservableValue value = ViewerProperties.singleSelection().observe(v_country);
        IEMFListProperty mProp = EMFProperties.list(AddressbookPackage.Literals.COUNTRY__FEDERAL_STATES);
        IValueProperty props = EMFProperties.value(AddressbookPackage.Literals.FEDERAL_STATE__NAME);

        value.addValueChangeListener(new IValueChangeListener() {

            @Override
            public void handleValueChange(ValueChangeEvent event) {
                if (stateBinding != null) {
                    stateBinding.dispose();
                    stateBinding = null;
                }
            }
        });

        v_state = new ComboViewer(w_state);
        ObservableListContentProvider cp = new ObservableListContentProvider();
        v_state.setContentProvider(cp);
        v_state.setLabelProvider(new ObservableMapLabelProvider(props.observeDetail(cp.getKnownElements())));
        v_state.setInput(mProp.observeDetail(value));

        value.addValueChangeListener(new IValueChangeListener() {

            @Override
            public void handleValueChange(ValueChangeEvent event) {
                if (stateBinding == null && dbc != null && master != null) {
                    bindState();
                }
            }
        });
    }
}

From source file:at.bestsolution.e4.addressbook.ui.swt.PersonList.java

License:Open Source License

@PostConstruct
void init(AddressBook book, final PersonSelectionPublisher personService) {
    {//from  w  w w.  jav  a2 s. c om
        IEMFListProperty mProp = EMFProperties.list(AddressbookPackage.Literals.ADDRESS_BOOK__PERSONS);

        final TableViewer viewer = new TableViewer(w_list);
        ObservableListContentProvider cp = new ObservableListContentProvider();
        viewer.setContentProvider(cp);

        IObservableMap[] map = {
                EMFProperties.value(AddressbookPackage.Literals.PERSON__FIRSTNAME)
                        .observeDetail(cp.getKnownElements()),
                EMFProperties.value(AddressbookPackage.Literals.PERSON__LASTNAME)
                        .observeDetail(cp.getKnownElements()) };

        viewer.setLabelProvider(new ObservableMapLabelProvider(map) {
            @Override
            public String getColumnText(Object element, int columnIndex) {
                Person object = (Person) element;
                return object == null ? "" : object.getFirstname() + " " + object.getLastname();
            }
        });

        final IObservableList list = mProp.observe(book);
        viewer.setInput(list);

        list.addListChangeListener(new IListChangeListener() {

            @Override
            public void handleListChange(ListChangeEvent event) {
                event.diff.accept(new ListDiffVisitor() {

                    @Override
                    public void handleRemove(int index, Object element) {
                        if (list.size() == 0) {
                            return;
                        }
                        if (list.size() > index - 1 && viewer.getSelection().isEmpty()) {
                            if (index - 1 >= 0) {
                                index--;
                            } else {
                                index = 0;
                            }
                            viewer.setSelection(new StructuredSelection(list.get(index)));
                        }
                    }

                    @Override
                    public void handleAdd(int index, Object element) {
                        viewer.setSelection(new StructuredSelection(element));
                    }
                });
            }
        });

        ViewerProperties.singleSelection().observe(viewer).addValueChangeListener(new IValueChangeListener() {

            @Override
            public void handleValueChange(ValueChangeEvent event) {
                personService.setPerson((Person) event.diff.getNewValue());
            }
        });
        if (list.size() > 0) {
            viewer.setSelection(new StructuredSelection(list.get(0)));
        }
    }
}

From source file:at.bestsolution.translate.view.TranslatorComponent.java

License:Open Source License

private void createUI(Composite parent) {
    GridLayout layout = new GridLayout(2, false);
    parent.setLayout(layout);//from  w  w  w. j  a  v a 2 s.  c  om

    Label l = new Label(parent, SWT.NONE);
    l.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, true, false, 2, 1));
    l.setText("Translator");

    l = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
    l.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, true, false, 2, 1));

    l = new Label(parent, SWT.NONE);
    l.setText("Term");

    term = new Text(parent, SWT.BORDER);
    term.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    l = new Label(parent, SWT.NONE);
    l.setText("Translator");

    translator = new ComboViewer(parent);
    translator.getControl().setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    translator.setContentProvider(new ObservableListContentProvider());
    translator.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            return ((ITranslator) element).getName();
        }
    });

    l = new Label(parent, SWT.NONE);
    l.setText("Source-Language");

    final ComboViewer sourceLanguage = new ComboViewer(parent);
    sourceLanguage.getControl().setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    sourceLanguage.setContentProvider(new ObservableListContentProvider());
    sourceLanguage.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            return ((TranslationLanguage) element).name;
        }
    });

    IListProperty fromProp = PojoProperties.list("languages");
    IValueProperty selectionProp = ViewerProperties.singleSelection();

    IObservableList input = fromProp.observeDetail(selectionProp.observe(translator));
    sourceLanguage.setInput(input);

    l = new Label(parent, SWT.NONE);
    l.setText("Target-Language");

    final ComboViewer targetLanguage = new ComboViewer(parent);
    targetLanguage.getControl().setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    targetLanguage.setContentProvider(new ObservableListContentProvider());
    targetLanguage.setLabelProvider(new LabelProvider());

    IListProperty targetsProp = PojoProperties.list("targets");

    input = targetsProp.observeDetail(selectionProp.observe(sourceLanguage));
    targetLanguage.setInput(input);

    Button b = new Button(parent, SWT.PUSH);
    b.setText("Translate");
    b.setLayoutData(new GridData(GridData.END, GridData.CENTER, false, false, 2, 1));

    l = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
    l.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1));

    l = new Label(parent, SWT.NONE);
    l.setText("Translation");

    final Label translation = new Label(parent, SWT.NONE);
    translation.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

    b.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection transSelection = (IStructuredSelection) translator.getSelection();
            IStructuredSelection sourceSelection = (IStructuredSelection) sourceLanguage.getSelection();
            IStructuredSelection targetSelection = (IStructuredSelection) targetLanguage.getSelection();

            if (!transSelection.isEmpty() && !sourceSelection.isEmpty()) {
                try {
                    String trans = ((ITranslator) transSelection.getFirstElement()).translate(
                            ((TranslationLanguage) sourceSelection.getFirstElement()).name,
                            (String) targetSelection.getFirstElement(), term.getText());
                    translation.setText(trans);
                } catch (InvocationTargetException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        }
    });
}

From source file:au.gov.ga.earthsci.bookmark.part.BookmarksPart.java

License:Apache License

private void initCombo(Composite parent) {
    bookmarkListsComboViewer = new ComboViewer(parent, SWT.READ_ONLY | SWT.DROP_DOWN);

    GridData gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.grabExcessHorizontalSpace = true;
    gd.grabExcessVerticalSpace = false;/*from   ww  w .  j a  v  a2 s  . com*/
    bookmarkListsComboViewer.getCombo().setLayoutData(gd);

    bookmarkListsComboViewer.setLabelProvider(new LabelProvider() {
        @Override
        public String getText(Object element) {
            if (!(element instanceof IBookmarkList)) {
                return super.getText(element);
            }
            return ((IBookmarkList) element).getName();
        }
    });

    // Trigger a label refresh if a list name changes etc.
    ObservableListContentProvider contentProvider = new ObservableListContentProvider();
    IObservableMap nameMap = BeanProperties.value("name").observeDetail(contentProvider.getKnownElements()); //$NON-NLS-1$
    nameMap.addMapChangeListener(new IMapChangeListener() {
        @Override
        public void handleMapChange(MapChangeEvent event) {
            for (Object key : event.diff.getChangedKeys()) {
                bookmarkListsComboViewer.refresh(key, true);
            }
        }
    });

    bookmarkListsComboViewer.setContentProvider(contentProvider);
    bookmarkListsComboViewer.setInput(BeanProperties.list("lists").observe(bookmarks)); //$NON-NLS-1$
    bookmarkListsComboViewer.setSelection(new StructuredSelection(bookmarks.getDefaultList()));

    bookmarkListsComboViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            controller.setCurrentList(getSelectedBookmarkList());
        }
    });
}

From source file:au.gov.ga.earthsci.bookmark.part.BookmarksPart.java

License:Apache License

private void initList(Composite parent) {
    Composite tableHolder = new Composite(parent, SWT.NONE);
    GridData gd = new GridData(GridData.FILL_BOTH);
    gd.grabExcessHorizontalSpace = true;
    gd.grabExcessVerticalSpace = true;/*from www  . ja v  a2 s. c  o m*/
    gd.horizontalAlignment = GridData.FILL;
    tableHolder.setLayoutData(gd);

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

    bookmarkListTableViewer = new TableViewer(tableHolder,
            SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    bookmarkListTableViewer.getTable().setHeaderVisible(false);
    bookmarkListTableViewer.getTable().setLinesVisible(false);

    bookmarkListTableViewer.getTable().setLayoutData(gd);

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

    IObservableMap labelMap = BeanProperties.value("name").observeDetail(contentProvider.getKnownElements()); //$NON-NLS-1$

    TableViewerColumn column = new TableViewerColumn(bookmarkListTableViewer, SWT.LEFT);
    column.setEditingSupport(new BookmarkNameEditingSupport(bookmarkListTableViewer));
    column.setLabelProvider(new ObservableMapCellLabelProvider(labelMap) {
        @Override
        public void update(ViewerCell cell) {
            super.update(cell);
            cell.setText(" " + ((IBookmark) cell.getElement()).getName()); //$NON-NLS-1$
            cell.setImage(ImageRegistry.getInstance().get(ImageRegistry.ICON_BOOKMARKS));
        }
    });
    ColumnLayoutData cld = new ColumnWeightData(12);
    layout.setColumnData(column.getColumn(), cld);

    // Allow edit (rename) only via programmatic access (rename command) 
    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(
            bookmarkListTableViewer) {
        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    TableViewerEditor.create(bookmarkListTableViewer, activationStrategy,
            ColumnViewerEditor.KEYBOARD_ACTIVATION);

    // Populate the current selection with the actual bookmark items
    bookmarkListTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) bookmarkListTableViewer.getSelection();
            List<?> list = selection.toList();
            selectionService.setSelection(list.toArray(new IBookmark[list.size()]));
        }
    });

    // Apply the bookmark on double click
    bookmarkListTableViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            controller.apply((IBookmark) ((IStructuredSelection) event.getSelection()).getFirstElement());
        }
    });

    // Deselect when clicking outside a valid row
    bookmarkListTableViewer.getTable().addMouseListener(new MouseAdapter() {
        @Override
        public void mouseUp(MouseEvent e) {
            if (bookmarkListTableViewer.getTable().getItem(new Point(e.x, e.y)) == null) {
                bookmarkListTableViewer.setSelection(null);
            }
        }
    });

}

From source file:ccw.preferences.HoverPreferencePage.java

License:Open Source License

protected DataBindingContext initDataBindings() {

    final DataBindingContext context = new DataBindingContext();

    // Page Support
    PreferencePageSupport.create(this, context);

    // ///////////////////////////
    // Label/Content providers \\
    // ///////////////////////////

    ObservableListContentProvider contentProvider = new ObservableListContentProvider();

    IObservableMap[] columnsObservables = Properties.observeEach(contentProvider.getKnownElements(),
            HoverViewModel.hoverDisplayDomain);

    ObservableMapLabelProvider labelProvider = new ObservableMapLabelProvider(columnsObservables);

    fHoverTableViewer.setLabelProvider(labelProvider);
    fHoverTableViewer.setContentProvider(contentProvider);
    fHoverTableViewer.setInput(fViewModel.hoverObservableList);

    //////////////////////////
    // Selected hover logic \\
    //////////////////////////

    final IObservableValue selectedHover = ViewersObservables.observeSingleSelection(fHoverTableViewer);

    final IObservableValue isHoverSelected = new ComputedValue(Boolean.TYPE) {
        @Override//from   ww w  .j a v  a 2 s  . c  o  m
        protected Object calculate() {
            return Boolean.valueOf(selectedHover.getValue() != null);
        }
    };

    context.bindValue(WidgetProperties.enabled().observe(fGrpSummary), isHoverSelected);
    context.bindValue(WidgetProperties.enabled().observe(fSummaryHoverModifierStringText), isHoverSelected);

    final IObservableValue stateMaskOfSelected = HoverViewModel.hoverStateMask.observeDetail(selectedHover);
    final IObservableValue modifierStringOfSelected = HoverViewModel.hoverModifierString
            .observeDetail(selectedHover);

    final UpdateValueStrategy modifierStringStrategyConvert = new UpdateValueStrategy(
            UpdateValueStrategy.POLICY_CONVERT);
    modifierStringStrategyConvert.setConverter(new HoverViewModel.StateMaskToModifierConverter());

    final Binding stateMaskToModifierBinding = context.bindValue(modifierStringOfSelected, stateMaskOfSelected,
            new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER), modifierStringStrategyConvert);

    if (!fViewModel.hoverObservableList.isEmpty()) {
        selectedHover.setValue(fViewModel.hoverObservableList.get(0));
    }

    //////////////////////
    // Validation logic \\
    //////////////////////

    MultiValidator validator = new MultiValidator() {

        @Override
        protected IStatus validate() {
            IStatus status = ValidationStatus.ok();

            if (isHoverSelected.getValue() == Boolean.TRUE) {
                status = fViewModel.stateMaskValidator.validate(stateMaskOfSelected.getValue());
            }

            if (status.isOK()) {
                Iterator<HoverDescriptor> it = fViewModel.checkedSet.iterator();
                while (it.hasNext()) {
                    int stateMask = it.next().getStateMask();
                    if (!fViewModel.isStateMaskUnique(stateMask)) {
                        status = fViewModel.stateMaskError(stateMask);
                    }
                }
            }
            return status;
        }
    };

    context.addValidationStatusProvider(validator);

    //////////////////////////
    // Checked hovers logic \\
    //////////////////////////

    // AR - because of some ordering issue problem, I am disabling the automatic
    // update from model to target of the checked hovers and...
    final UpdateSetStrategy checkedModelToTargetStrategy = new UpdateSetStrategy(
            UpdateValueStrategy.POLICY_ON_REQUEST);

    // AR - ... add an explicit binding that will be needed...
    final Binding checkedBindSet = context.bindSet(
            ViewersObservables.observeCheckedElements(fHoverTableViewer, HoverDescriptor.class),
            fViewModel.checkedSet, null, checkedModelToTargetStrategy);

    // AR - ...to manually trigger the update when new elements are added to the provider...
    IObservableSet realizedElements = contentProvider.getRealizedElements();
    realizedElements.addChangeListener(new IChangeListener() {
        @Override
        public void handleChange(ChangeEvent event) {
            checkedBindSet.updateModelToTarget();
        }
    });

    /////////////////
    // UI Bindings \\
    /////////////////

    EditingSupport modifierEditorSupport = ObservableValueEditingSupport.create(fHoverTableViewer, context,
            fHoverModifierStringTextCellEditor,
            CellEditorProperties.control().value(WidgetProperties.text(SWT.Modify)),
            HoverViewModel.hoverModifierString);

    fModifierTableViewerColumn.setEditingSupport(modifierEditorSupport);

    final UpdateValueStrategy statusMaskToModifierStrategy = new UpdateValueStrategy();
    statusMaskToModifierStrategy.setConverter(new HoverViewModel.StateMaskToModifierConverter());

    final UpdateValueStrategy modifierToStatusMaskStrategy = new UpdateValueStrategy();
    modifierToStatusMaskStrategy.setConverter(new HoverViewModel.ModifierToStateMaskConverter());

    context.bindValue(WidgetProperties.text().observe(fSummaryHoverNameLabel),
            HoverViewModel.hoverLabel.observeDetail(selectedHover));

    context.bindValue(WidgetProperties.text().observe(fSummaryHoverDescriptionLabel),
            HoverViewModel.hoverDescription.observeDetail(selectedHover));

    context.bindValue(WidgetProperties.text().observe(fSummaryHoverModifierStringText),
            HoverViewModel.hoverStateMask.observeDetail(selectedHover), modifierToStatusMaskStrategy,
            statusMaskToModifierStrategy);

    KeyListener stateMaskKeyListener = new KeyListener() {
        public void keyPressed(KeyEvent e) {

            boolean isPressedKeyModifier = e.keyCode > 0 && e.character == 0
                    && (e.keyCode & SWT.MODIFIER_MASK) != 0;
            boolean isStateKeyModifier = e.stateMask > 0 && (e.stateMask & SWT.MODIFIER_MASK) != 0;

            int mask = SWT.NONE;
            if (isPressedKeyModifier) {
                mask = e.keyCode;

                if (isStateKeyModifier) {
                    mask |= e.stateMask;
                }

                stateMaskOfSelected.setValue(mask);
                stateMaskToModifierBinding.updateModelToTarget();
            }
        }

        public void keyReleased(KeyEvent e) {
            if (e.keyCode == SWT.BS || e.keyCode == SWT.DEL) {
                stateMaskOfSelected.setValue(SWT.NONE);
                stateMaskToModifierBinding.updateModelToTarget();
            }
        }
    };

    fHoverModifierStringTextCellEditor.getControl().addKeyListener(stateMaskKeyListener);
    fSummaryHoverModifierStringText.addKeyListener(stateMaskKeyListener);

    return context;
}

From source file:ch.acanda.eclipse.pmd.properties.RuleSetConfigurationTable.java

License:Open Source License

private void initDataBindings() {
    final DataBindingContext bindingContext = new DataBindingContext();
    //// w w  w. j av a2  s . c  om
    final ObservableListContentProvider listContentProvider = new ObservableListContentProvider();
    tableViewer.setContentProvider(listContentProvider);
    //
    final IObservableList ruleSetsObserveList = BeansObservables.observeList(Realm.getDefault(), model,
            "ruleSets");
    tableViewer.setInput(ruleSetsObserveList);
    //
    final IObservableValue tableObserveEnabledObserveWidget = SWTObservables.observeEnabled(table);
    final IObservableValue modelPMDEnabledObserveValue = BeansObservables.observeValue(model, "PMDEnabled");
    bindingContext.bindValue(tableObserveEnabledObserveWidget, modelPMDEnabledObserveValue, null, null);
    //
    final IObservableList tableViewerObserveMultiSelection = ViewersObservables
            .observeMultiSelection(tableViewer);
    final IObservableList selectedRuleSetsObserveList = BeansObservables.observeList(Realm.getDefault(), model,
            "selectedRuleSets");
    bindingContext.bindList(tableViewerObserveMultiSelection, selectedRuleSetsObserveList, null, null);
    //
    final IObservableSet tableViewerObserveCheckedElements = ViewersObservables
            .observeCheckedElements(tableViewer, RuleSetViewModel.class);
    final IObservableSet activeConfigurationsObserveSet = BeansObservables.observeSet(Realm.getDefault(), model,
            "activeRuleSets");
    bindingContext.bindSet(tableViewerObserveCheckedElements, activeConfigurationsObserveSet, null, null);
}

From source file:ch.acanda.eclipse.pmd.wizard.AddRuleSetConfigurationWizardPage.java

License:Open Source License

private DataBindingContext initDataBindings() {
    final DataBindingContext bindingContext = new DataBindingContext();
    ///* w  ww. j a v a 2  s . com*/
    final IObservableValue locationObserveText = SWTObservables.observeDelayedValue(200,
            SWTObservables.observeText(location, SWT.Modify));
    final IObservableValue locationObserveValue = BeansObservables.observeValue(controller.getModel(),
            "location");
    bindingContext.bindValue(locationObserveText, locationObserveValue, null, null);
    //
    final ObservableListContentProvider rulesContentProvider = new ObservableListContentProvider();
    final IObservableMap rulesObserveMap = PojoObservables.observeMap(rulesContentProvider.getKnownElements(),
            Rule.class, "name");
    tableViewer.setLabelProvider(new ObservableMapLabelProvider(rulesObserveMap));
    tableViewer.setContentProvider(rulesContentProvider);
    //
    final IObservableList rulesObserveList = BeansObservables.observeList(Realm.getDefault(),
            controller.getModel(), "rules");
    tableViewer.setInput(rulesObserveList);
    //
    final IObservableValue nameObserveTextObserveWidget = SWTObservables.observeDelayedValue(100,
            SWTObservables.observeText(name, SWT.Modify));
    final IObservableValue controllergetModelNameObserveValue = BeansObservables
            .observeValue(controller.getModel(), "name");
    bindingContext.bindValue(nameObserveTextObserveWidget, controllergetModelNameObserveValue, null, null);
    //
    final IObservableValue observeVisibleBrowseObserveWidget = WidgetProperties.visible().observe(browse);
    final IObservableValue browseEnabledControllergetModelObserveValue = BeanProperties.value("browseEnabled")
            .observe(controller.getModel());
    bindingContext.bindValue(observeVisibleBrowseObserveWidget, browseEnabledControllergetModelObserveValue,
            null, null);
    //
    return bindingContext;
}

From source file:ch.elexis.core.ui.contacts.views.ContactSelectorView.java

License:Open Source License

public ContactSelectorView() {
    contactList = new WritableList();
    contentProvider = new ObservableListContentProvider();
    filterPositionTitle = new KontaktAnzeigeTextFieldViewerFilter();
    loadContactsRunnable = new LoadContactsRunnable();
}

From source file:com.hibouhome.rcp.spikes.databinding.parts.StockistsPart.java

License:Open Source License

private void createCountriesListViewer(final Composite parent) {
    countriesListViewer = new ListViewer(parent);
    countriesListViewer.getList().setLayoutData(new GridData(60, 300));
    countriesListViewer.setLabelProvider(new LabelProvider() {

        @Override/*from w  w  w  .  j  av a 2  s  . c  om*/
        public String getText(final Object element) {
            return ((Country) element).getName();
        }
    });
    countriesListViewer.setContentProvider(new ObservableListContentProvider());
    final IEMFListProperty countriesProperty = EMFProperties
            .list(StockistsPackage.Literals.STOCKISTS__COUNTRIES);
    countriesListViewer.setInput(countriesProperty.observe(stockists));
}