List of usage examples for org.eclipse.jface.viewers ILazyTreeContentProvider ILazyTreeContentProvider
ILazyTreeContentProvider
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(); }