Example usage for org.eclipse.jface.viewers ILazyTreeContentProvider ILazyTreeContentProvider

List of usage examples for org.eclipse.jface.viewers ILazyTreeContentProvider ILazyTreeContentProvider

Introduction

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

Prototype

ILazyTreeContentProvider

Source Link

Usage

From source file:com.diffplug.common.swt.jface.ViewerMisc.java

License:Apache License

/** Sets an {@link ILazyTreeContentProvider} implemented by the given {@link TreeDef.Parented}. */
@SuppressWarnings("unchecked")
public static <T> void setLazyTreeContentProvider(TreeViewer viewer, TreeDef.Parented<T> treeDef) {
    Preconditions.checkArgument(SwtMisc.flagIsSet(SWT.VIRTUAL, viewer.getControl()),
            "The tree must have SWT.VIRTUAL set.");
    viewer.setUseHashlookup(true);/*from   ww w .j  av a 2 s  . c  o m*/
    viewer.setContentProvider(new ILazyTreeContentProvider() {
        @Override
        public void dispose() {
        }

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        @Override
        public void updateElement(Object parent, int index) {
            T child = treeDef.childrenOf((T) parent).get(index);
            viewer.replace(parent, index, child);
            updateChildCount(child, 0);
        }

        @Override
        public void updateChildCount(Object element, int currentChildCount) {
            viewer.setChildCount(element, treeDef.childrenOf((T) element).size());
        }

        @Override
        public Object getParent(Object element) {
            return treeDef.parentOf((T) element);
        }
    });
}

From source file:org.eclipse.ptp.internal.rm.lml.ui.views.TableView.java

License:Open Source License

@Override
public void createPartControl(Composite parent) {
    gid = getViewSite().getId();/* w  w w .j a v a2 s . co m*/
    composite = new Composite(parent, SWT.None);
    treeColumnLayout = new TreeColumnLayout();
    composite.setLayout(treeColumnLayout);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    viewer = new TreeViewer(composite, SWT.MULTI | SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.VIRTUAL);
    viewer.getTree().setLayout(new TableLayout());
    viewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
    viewer.setContentProvider(new ILazyTreeContentProvider() {
        private Row[] rows;

        @Override
        public void dispose() {
            // Nothing
        }

        @Override
        public Object getParent(Object element) {
            if (element instanceof Cell) {
                return ((Cell) element).row;
            }
            return rows;
        }

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            this.rows = (Row[]) newInput;
        }

        @Override
        public void updateChildCount(Object element, int currentChildCount) {
            // Nothing
        }

        @Override
        public void updateElement(Object parent, int index) {
            Object element;
            if (parent instanceof Row) {
                element = ((Row) parent).cells[index];
            } else {
                element = rows[index];
            }
            viewer.replace(parent, index, element);
            updateChildCount(element, -1);
        }
    });
    viewer.setUseHashlookup(true);
    /*
     * Must expand first level of table, otherwise it may not be redrawn.
     */
    viewer.setAutoExpandLevel(2);

    tree = viewer.getTree();

    headerMenu = new Menu(composite);
    // Part for the controlling Monitor - context menu
    final MenuManager contextMenu = new MenuManager();
    contextMenu.setRemoveAllWhenShown(true);
    final Menu menu = contextMenu.createContextMenu(tree);
    getSite().registerContextMenu(contextMenu, viewer);
    getSite().setSelectionProvider(viewer);

    tree.setLinesVisible(true);
    tree.setHeaderVisible(true);
    tree.addListener(SWT.MenuDetect, new Listener() {
        @Override
        public void handleEvent(Event event) {
            final Point pt = tree.getDisplay().map(null, tree, new Point(event.x, event.y));
            final Rectangle clientArea = tree.getClientArea();
            final boolean header = clientArea.y <= pt.y && pt.y < (clientArea.y + tree.getHeaderHeight());
            tree.setMenu(header ? headerMenu : menu);
        }
    });

    /*
     * Get the selected LguiItem (if there is one) so that the table will be populated when the it is first created
     */
    fLguiItem = lmlManager.getSelectedLguiItem();

    // ViewMenuManager
    viewMenuManager = getViewSite().getActionBars().getMenuManager();
    final IAction filterOwnJobsAction = new Action(Messages.TableView_Show_only_my_jobs, IAction.AS_CHECK_BOX) {

        @Override
        public void run() {

            final List<String> columnsTitle = new LinkedList<String>();
            columnsTitle.add(ILMLCoreConstants.OWNER);
            fLguiItem.getTableHandler().deleteOldPattern(gid, columnsTitle);

            if (isChecked()) {
                final List<IPattern> filterValuesNew = new LinkedList<IPattern>();
                filterValuesNew.add((new Pattern(ILMLCoreConstants.OWNER, ILMLCoreConstants.TABLECOLUMN_ALPHA))
                        .setRelation(ILMLCoreConstants.EQ, fLguiItem.getUsername()));

                fLguiItem.getTableHandler().generateNewPattern(gid, filterValuesNew);
                setViewerInput(fLguiItem.getTableHandler().getPattern(gid));
            } else {
                setViewerInput();
            }
            updateAfterLastFilter = false;
        }

    };
    final IAction filterAction = new Action(Messages.TableView_Filters) {

        @Override
        public void run() {
            final FilterDialog dialog = new FilterDialog(new Shell(viewSite.getShell()), gid);
            dialog.open();
        }
    };

    filterOwnJobsActionItem = new ActionContributionItem(filterOwnJobsAction);
    filterActionItem = new ActionContributionItem(filterAction);
    viewMenuManager.add(filterOwnJobsActionItem);
    viewMenuManager.add(new Separator());
    viewMenuManager.add(filterActionItem);
    filterOwnJobsActionItem.getAction().setEnabled(false);
    filterActionItem.getAction().setEnabled(false);

    viewCreated = createTable();

    tree.addDisposeListener(new DisposeListener() {
        @Override
        public void widgetDisposed(DisposeEvent e) {
            if (fLguiItem != null) {
                saveColumnLayout();
            }
        }
    });
}

From source file:org.eclipse.ptp.rm.lml.ui.views.TableView.java

License:Open Source License

@Override
public void createPartControl(Composite parent) {
    gid = getViewSite().getId();// w  w  w.  j  a v  a2s .c o m
    composite = new Composite(parent, SWT.None);
    treeColumnLayout = new TreeColumnLayout();
    composite.setLayout(treeColumnLayout);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    viewer = new TreeViewer(composite, SWT.MULTI | SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.VIRTUAL);
    viewer.getTree().setLayout(new TableLayout());
    viewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
    viewer.setContentProvider(new ILazyTreeContentProvider() {
        private Row[] rows;

        public void dispose() {
            // Nothing
        }

        public Object getParent(Object element) {
            if (element instanceof Cell) {
                return ((Cell) element).row;
            }
            return rows;
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            this.rows = (Row[]) newInput;
        }

        public void updateChildCount(Object element, int currentChildCount) {
            // Nothing
        }

        public void updateElement(Object parent, int index) {
            Object element;
            if (parent instanceof Row) {
                element = ((Row) parent).cells[index];
            } else {
                element = rows[index];
            }
            viewer.replace(parent, index, element);
            updateChildCount(element, -1);
        }
    });
    viewer.setUseHashlookup(true);
    /*
     * Must expand first level of table, otherwise it may not be redrawn.
     */
    viewer.setAutoExpandLevel(2);

    tree = viewer.getTree();

    headerMenu = new Menu(composite);
    // Part for the controlling Monitor - context menu
    final MenuManager contextMenu = new MenuManager();
    contextMenu.setRemoveAllWhenShown(true);
    final Menu menu = contextMenu.createContextMenu(composite);
    getSite().registerContextMenu(contextMenu, viewer);

    tree.setLinesVisible(true);
    tree.setHeaderVisible(true);
    tree.addListener(SWT.MenuDetect, new Listener() {
        public void handleEvent(Event event) {
            final Point pt = tree.getDisplay().map(null, tree, new Point(event.x, event.y));
            final Rectangle clientArea = tree.getClientArea();
            final boolean header = clientArea.y <= pt.y && pt.y < (clientArea.y + tree.getHeaderHeight());
            tree.setMenu(header ? headerMenu : menu);
        }
    });

    /*
     * Get the selected LguiItem (if there is one) so that the table will be populated when the it is first created
     */
    fLguiItem = lmlManager.getSelectedLguiItem();

    createTable();
    tree.addDisposeListener(new DisposeListener() {
        public void widgetDisposed(DisposeEvent e) {
            if (fLguiItem != null) {
                saveColumnLayout();
            }
        }
    });
}

From source file:org.eclipse.recommenders.internal.models.rcp.ModelRepositoriesView.java

License:Open Source License

@Override
public void createPartControl(Composite parent) {
    bus.register(this);
    Composite container = new Composite(parent, SWT.NONE);
    container.setLayout(new GridLayout());

    txtSearch = new Text(container, SWT.BORDER | SWT.ICON_SEARCH | SWT.SEARCH | SWT.CANCEL);
    txtSearch.setMessage(Messages.SEARCH_PLACEHOLDER_FILTER_TEXT);
    txtSearch.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    txtSearch.addKeyListener(new KeyAdapter() {
        @Override/*  ww w. ja  v  a2 s . c o m*/
        public void keyPressed(KeyEvent e) {
            if (e.keyCode == SWT.ARROW_DOWN && tree.getItemCount() != 0) {
                tree.setFocus();
                tree.setSelection(tree.getTopItem());
            }
        }
    });

    Composite composite = new Composite(container, SWT.NONE);

    TreeColumnLayout treeLayout = new TreeColumnLayout();
    composite.setLayout(treeLayout);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    treeViewer = new TreeViewer(composite, SWT.BORDER | SWT.FULL_SELECTION | SWT.VIRTUAL);
    ColumnViewerToolTipSupport.enableFor(treeViewer);
    tree = treeViewer.getTree();
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);

    TreeViewerColumn repositoryViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE);
    TreeColumn repositoryColumn = repositoryViewerColumn.getColumn();
    treeLayout.setColumnData(repositoryColumn, new ColumnWeightData(1, ColumnWeightData.MINIMUM_WIDTH, true));
    repositoryColumn.setText(Messages.COLUMN_LABEL_REPOSITORY);
    repositoryViewerColumn.setLabelProvider(new StyledCellLabelProvider() {

        @Override
        public void update(ViewerCell cell) {
            Object element = cell.getElement();
            StyledString text = new StyledString();
            if (element instanceof String) {
                String url = (String) element;
                text.append(url);
                text.append(" "); //$NON-NLS-1$
                text.append(format(Messages.TABLE_CELL_SUFFIX_KNOWN_COORDINATES, fetchNumberOfModels(url)),
                        StyledString.COUNTER_STYLER);
                cell.setImage(images.getImage(OBJ_REPOSITORY));
            }
            if (element instanceof KnownCoordinate) {
                KnownCoordinate v = (KnownCoordinate) element;
                text.append(v.pc.toString());
            }
            cell.setText(text.toString());
            cell.setStyleRanges(text.getStyleRanges());
            super.update(cell);
        }
    });

    int minWidth = calculateMinColumnWidthForClassifier();
    for (String classifier : modelClassifiers) {
        newColumn(treeLayout, classifier, minWidth);
    }
    treeViewer.setUseHashlookup(true);
    treeViewer.setContentProvider(new ILazyTreeContentProvider() {

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            filteredCoordinatesGroupedByRepo = ArrayListMultimap.create(coordinatesGroupedByRepo);
        }

        @Override
        public void dispose() {
        }

        @Override
        public void updateElement(Object parent, int index) {
            if (parent instanceof IViewSite) {
                String element = prefs.remotes[index];
                treeViewer.replace(parent, index, element);
                treeViewer.setChildCount(element, getChildren(element).length);
            } else if (parent instanceof String) {
                treeViewer.replace(parent, index, getChildren(parent)[index]);
            }
        }

        private Object[] getChildren(Object element) {
            if (element instanceof String) {
                return filteredCoordinatesGroupedByRepo.get((String) element).toArray();
            }
            return new Object[0];
        }

        @Override
        public void updateChildCount(Object element, int currentChildCount) {
            int count = 0;

            if (element instanceof IViewSite) {
                count = prefs.remotes.length;
            }

            if (contains(prefs.remotes, element)) {
                count = getChildren(element).length;
            }

            if (count != currentChildCount) {
                treeViewer.setChildCount(element, count);
            }
        }

        @Override
        public Object getParent(Object element) {
            if (element instanceof KnownCoordinate) {
                KnownCoordinate v = (KnownCoordinate) element;
                return v.url;
            }
            return null;
        }
    });

    treeViewer.setInput(getViewSite());
    refreshData();

    addRemoteRepositoryAction = new Action() {
        @Override
        public void run() {
            addRemoteRepository();
        }
    };

    IToolBarManager toolBarManager = getViewSite().getActionBars().getToolBarManager();
    addAction(Messages.TOOLBAR_TOOLTIP_ADD_REPOSITORY, ELCL_ADD_REPOSITORY, toolBarManager,
            addRemoteRepositoryAction);

    addAction(Messages.TOOLBAR_TOOLTIP_REFRESH, ELCL_REFRESH, toolBarManager, new Action() {
        @Override
        public void run() {
            refreshData();
        }
    });

    addAction(Messages.TOOLBAR_TOOLTIP_EXPAND_ALL, ELCL_EXPAND_ALL, toolBarManager, new Action() {
        @Override
        public void run() {
            for (int i = 0; i < treeViewer.getTree().getItemCount(); i++) {
                treeViewer.getTree().getItem(i).setExpanded(true);
            }
        }
    });

    addAction(Messages.TOOLBAR_TOOLTIP_COLLAPSE_ALL, ELCL_COLLAPSE_ALL, toolBarManager, new Action() {
        @Override
        public void run() {
            for (int i = 0; i < treeViewer.getTree().getItemCount(); i++) {
                treeViewer.getTree().getItem(i).setExpanded(false);
            }
        }
    });

    IMenuManager menuManager = getViewSite().getActionBars().getMenuManager();
    addAction(Messages.MENUITEM_DELETE_MODELS, ELCL_DELETE, menuManager, new Action() {
        @Override
        public void run() {
            deleteCacheAndRefresh();
        }
    });

    addContextMenu();
    bindingContext = initDataBindings();
}

From source file:org.eclipse.recommenders.internal.snipmatch.rcp.SnippetsView.java

License:Open Source License

@Override
public void createPartControl(final Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    GridLayoutFactory.swtDefaults().applyTo(composite);

    txtSearch = new Text(composite, SWT.BORDER | SWT.ICON_SEARCH | SWT.SEARCH | SWT.CANCEL);
    txtSearch.setMessage(Messages.SEARCH_PLACEHOLDER_SEARCH_TEXT);
    GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).span(1, 1).applyTo(txtSearch);
    txtSearch.addModifyListener(new ModifyListener() {

        @Override//from  www  .j a v  a2s  .  co m
        public void modifyText(ModifyEvent e) {
            refreshUI();
        }
    });
    txtSearch.setData(SWT_ID, SEARCH_FIELD);
    txtSearch.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.keyCode == SWT.ARROW_DOWN && tree.getItemCount() != 0) {
                tree.setFocus();
                tree.setSelection(tree.getTopItem());
            }
        }
    });

    Composite treeComposite = new Composite(composite, SWT.NONE);

    TreeColumnLayout treeLayout = new TreeColumnLayout();
    treeComposite.setLayout(treeLayout);
    treeComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    treeViewer = new TreeViewer(treeComposite, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI | SWT.VIRTUAL);
    ColumnViewerToolTipSupport.enableFor(treeViewer);
    tree = treeViewer.getTree();
    tree.setData(SWT_ID, TREE);
    tree.setHeaderVisible(true);
    tree.setLinesVisible(true);

    TreeViewerColumn snippetViewerColumn = new TreeViewerColumn(treeViewer, SWT.NONE);
    TreeColumn snippetColumn = snippetViewerColumn.getColumn();
    treeLayout.setColumnData(snippetColumn, new ColumnWeightData(1, ColumnWeightData.MINIMUM_WIDTH, true));
    snippetColumn.setText(Messages.TABLE_COLUMN_TITLE_SNIPPETS);
    snippetViewerColumn.setLabelProvider(new StyledCellLabelProvider() {

        @Override
        public void update(ViewerCell cell) {
            Object element = cell.getElement();
            StyledString text = new StyledString();
            if (element instanceof SnippetRepositoryConfiguration) {
                SnippetRepositoryConfiguration config = (SnippetRepositoryConfiguration) element;

                text.append(config.getName());
                text.append(" "); //$NON-NLS-1$

                if (prefs.isRepositoryEnabled(config)) {
                    text.append(format(Messages.TABLE_CELL_SUFFIX_SNIPPETS, fetchNumberOfSnippets(config)),
                            StyledString.COUNTER_STYLER);
                } else {
                    text.append(Messages.TABLE_REPOSITORY_DISABLED, StyledString.COUNTER_STYLER);
                }

                cell.setImage(images.getImage(Images.OBJ_REPOSITORY));
            } else if (element instanceof KnownSnippet) {
                KnownSnippet knownSnippet = (KnownSnippet) element;
                text.append(toStringRepresentation.apply(knownSnippet));
            }
            cell.setText(text.toString());
            cell.setStyleRanges(text.getStyleRanges());
            super.update(cell);
        }
    });

    treeViewer.addOpenListener(new IOpenListener() {

        @Override
        public void open(OpenEvent event) {
            if (selectionConsistsOnlyElementsOf(KnownSnippet.class)) {
                editSnippets();
            }
        }
    });
    treeViewer.setUseHashlookup(true);
    treeViewer.setContentProvider(new ILazyTreeContentProvider() {

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }

        @Override
        public void dispose() {
        }

        @Override
        public void updateElement(Object parent, int index) {
            if (parent instanceof IViewSite) {
                SnippetRepositoryConfiguration config = availableRepositories.get(index);
                treeViewer.replace(parent, index, config);
                treeViewer.setChildCount(config, getChildren(config).length);
            } else if (parent instanceof SnippetRepositoryConfiguration) {
                treeViewer.replace(parent, index, getChildren(parent)[index]);
            }
        }

        private Object[] getChildren(Object element) {
            if (element instanceof SnippetRepositoryConfiguration) {
                return filteredSnippetsGroupedByRepoName.get((SnippetRepositoryConfiguration) element)
                        .toArray();
            }
            return new Object[0];
        }

        @Override
        public void updateChildCount(Object element, int currentChildCount) {
            int count = 0;

            if (element instanceof IViewSite) {
                count = availableRepositories.size();
            }

            if (availableRepositories.contains(element)) {
                count = getChildren(element).length;
            }

            if (count != currentChildCount) {
                treeViewer.setChildCount(element, count);
            }
        }

        @Override
        public Object getParent(Object element) {
            if (element instanceof KnownSnippet) {
                KnownSnippet knownSnippet = (KnownSnippet) element;
                return knownSnippet.config;
            }
            return null;
        }
    });

    selection = ViewersObservables.observeMultiSelection(treeViewer);

    createActions(parent);
    addToolBar(parent);
    addContextMenu();

    refreshUI();
}