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(IViewerUpdater<E> viewerUpdater) 

Source Link

Document

Constructs an ObservableListContentProvider with the given viewer updater.

Usage

From source file:au.gov.ga.earthsci.bookmark.ui.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   www. j a  va2  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<IBookmarkList> contentProvider = new ObservableListContentProvider<IBookmarkList>(
            IBookmarkList.class);
    IObservableSet<IBookmarkList> knownElements = contentProvider.getKnownElements();
    IObservableMap<IBookmarkList, String> nameMap = BeanProperties
            .value(IBookmarkList.class, "name", String.class).observeDetail(knownElements); //$NON-NLS-1$
    nameMap.addMapChangeListener(new IMapChangeListener<IBookmarkList, String>() {
        @Override
        public void handleMapChange(MapChangeEvent<IBookmarkList, String> event) {
            for (IBookmarkList key : event.diff.getChangedKeys()) {
                bookmarkListsComboViewer.refresh(key, true);
            }
        }
    });

    IBeanListProperty<IBookmarks, IBookmarkList> listsProperty = BeanProperties.list(IBookmarks.class, "lists", //$NON-NLS-1$
            IBookmarkList.class);
    IObservableList<IBookmarkList> observableList = listsProperty.observe(bookmarks);
    bookmarkListsComboViewer.setContentProvider(contentProvider);
    bookmarkListsComboViewer.setInput(observableList);
    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.ui.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;/*  w w  w .j a  v  a2 s. c  om*/
    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<IBookmark> contentProvider = new ObservableListContentProvider<IBookmark>(
            IBookmark.class);
    bookmarkListTableViewer.setContentProvider(contentProvider);

    IObservableSet<IBookmark> knownElements = contentProvider.getKnownElements();
    IObservableMap<IBookmark, String> nameMap = BeanProperties.value(IBookmark.class, "name", String.class) //$NON-NLS-1$
            .observeDetail(knownElements);

    TableViewerColumn column = new TableViewerColumn(bookmarkListTableViewer, SWT.LEFT);
    column.setEditingSupport(new BookmarkNameEditingSupport(bookmarkListTableViewer));
    column.setLabelProvider(new ObservableMapCellLabelProvider<IBookmark, String>(nameMap) {
        @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);
            }
        }
    });

}