private void showCategorySelectionDialog(IJavaElement[] input) { final HashSet/*<String>*/ categories= new HashSet(); for (int i= 0; i < input.length; i++) { collectCategories(input[i], new IResultCollector() { public boolean accept(String[] cats) { for (int j= 0; j < cats.length; j++) { categories.add(cats[j]); } return false; } }); } CategoryFilterSelectionDialog dialog= new CategoryFilterSelectionDialog(fViewer.getControl().getShell(), new ArrayList(categories), new ArrayList(fFilteredCategories)); if (dialog.open() == Window.OK) { Object[] selected= dialog.getResult(); for (Iterator iter= categories.iterator(); iter.hasNext();) { String category= (String)iter.next(); if (contains(selected, category)) { if (fFilteredCategories.remove(category)) fLRUList.put(category, category); } else { if (fFilteredCategories.add(category)) fLRUList.put(category, category); } } storeSettings(); fireSelectionChange(); } }
@Override public void dispose() { super.dispose(); if (fCategoryFilterActionGroup != null) { fCategoryFilterActionGroup.dispose(); fCategoryFilterActionGroup= null; } fTypeHierarchies.clear(); } }
private void loadSettings() { fFilteredCategories.clear(); IPreferenceStore store= JavaPlugin.getDefault().getPreferenceStore(); String string= store.getString(getPreferenceKey()); if (string != null && string.length() > 0) { String[] categories= string.split(";"); //$NON-NLS-1$ for (int i= 0; i < categories.length; i++) { fFilteredCategories.add(categories[i]); } } string= store.getString(getPreferenceKey()+".LRU"); //$NON-NLS-1$ if (string != null && string.length() > 0) { String[] categories= string.split(";"); //$NON-NLS-1$ for (int i= categories.length - 1; i >= 0; i--) { fLRUList.put(categories[i], categories[i]); } } fFilterUncategorizedMembers= store.getBoolean(getPreferenceKey()+".FilterUncategorized"); //$NON-NLS-1$ }
@Override protected void fillActionBars(IActionBars actionBars) { super.fillActionBars(actionBars); fCategoryFilterActionGroup= new CategoryFilterActionGroup(getViewer(), getViewSite().getId(), getCategoryFilterActionGroupInput()); fCategoryFilterActionGroup.contributeToViewMenu(actionBars.getMenuManager()); }
protected void fillViewMenu(IMenuManager viewMenu) { super.fillViewMenu(viewMenu); viewMenu.add(fShowOnlyMainTypeAction); viewMenu.add(new Separator("Sorters")); //$NON-NLS-1$ viewMenu.add(fLexicalSortingAction); viewMenu.add(fSortByDefiningTypeAction); fCategoryFilterActionGroup.setInput(getInputForCategories()); fCategoryFilterActionGroup.contributeToViewMenu(viewMenu); }
private boolean processChildren(IJavaElement[] children, IResultCollector collector) { for (int i= 0; i < children.length; i++) { if (collectCategories(children[i], collector)) return true; } return false; }
public CategoryFilterActionGroup(final StructuredViewer viewer, final String viewerId, IJavaElement[] input) { Assert.isLegal(viewer != null); Assert.isLegal(viewerId != null); Assert.isLegal(input != null); fLRUList= new LinkedHashMap<String, String>(MAX_NUMBER_OF_CATEGORIES_IN_MENU * 2, 0.75f, true) { private static final long serialVersionUID= 1L; @Override protected boolean removeEldestEntry(Map.Entry<String, String> eldest) { return size() > MAX_NUMBER_OF_CATEGORIES_IN_MENU; } }; fViewer= viewer; fViewerId= viewerId; fInputElement= input; fFilter= new CategoryFilter(); fFilteredCategories= new HashSet<>(); loadSettings(); fMenuAction= new CategoryFilterMenuAction(); fViewer.addFilter(fFilter); }
private boolean collectCategories(IJavaElement element, IResultCollector collector) {//HashSet result, int max, LinkedHashMap lruList) { try { if (element instanceof IMember) { IMember member= (IMember)element; collector.accept(member.getCategories()); return processChildren(member.getChildren(), collector); } else if (element instanceof ICompilationUnit) { return processChildren(((ICompilationUnit)element).getChildren(), collector); } else if (element instanceof IClassFile) { return processChildren(((IClassFile)element).getChildren(), collector); } else if (element instanceof IJavaModel) { return processChildren(((IJavaModel)element).getChildren(), collector); } else if (element instanceof IJavaProject) { return processChildren(((IJavaProject)element).getChildren(), collector); } else if (element instanceof IPackageFragment) { return processChildren(((IPackageFragment)element).getChildren(), collector); } else if (element instanceof IPackageFragmentRoot) { return processChildren(((IPackageFragmentRoot)element).getChildren(), collector); } return false; } catch (JavaModelException e) { JavaPlugin.log(e); return true; } }
private void updateMenu(IMenuManager manager) { IContributionItem[] items= manager.getItems(); if (items != null) { for (int i= 0; i < items.length; i++) { IContributionItem item= items[i]; if (item != null && item.getId() != null && item.getId().equals(FILTER_CATEGORY_ACTION_ID)) { IContributionItem removed= manager.remove(item); if (removed != null) { item.dispose(); } } } } List menuEntries= new ArrayList(); boolean hasUncategorizedMembers= getMenuCategories(menuEntries); Collections.sort(menuEntries, Collator.getInstance()); if (menuEntries.size() > 0 && hasUncategorizedMembers) manager.appendToGroup(CATEGORY_MENU_GROUP_NAME, new FilterUncategorizedMembersAction()); int count= 0; for (Iterator iter= menuEntries.iterator(); iter.hasNext();) { String category= (String)iter.next(); manager.appendToGroup(CATEGORY_MENU_GROUP_NAME, new CategoryFilterAction(category, count + 1)); count++; } }
@Override protected TreeViewer createTreeViewer(Composite parent, int style) { Tree tree= new Tree(parent, SWT.SINGLE | (style & ~SWT.MULTI)); GridData gd= new GridData(GridData.FILL_BOTH); gd.heightHint= tree.getItemHeight() * 12; tree.setLayoutData(gd); final TreeViewer treeViewer= new OutlineTreeViewer(tree); // Hard-coded filters treeViewer.addFilter(new NamePatternFilter()); treeViewer.addFilter(new MemberFilter()); fInnerLabelProvider= new OutlineLabelProvider(); fInnerLabelProvider.addLabelDecorator(new ProblemsLabelDecorator(null)); IDecoratorManager decoratorMgr= PlatformUI.getWorkbench().getDecoratorManager(); if (decoratorMgr.getEnabled("org.eclipse.jdt.ui.override.decorator")) //$NON-NLS-1$ fInnerLabelProvider.addLabelDecorator(new OverrideIndicatorLabelDecorator(null)); treeViewer.setLabelProvider(new ColoringLabelProvider(fInnerLabelProvider)); fLexicalSortingAction= new LexicalSortingAction(treeViewer); fSortByDefiningTypeAction= new SortByDefiningTypeAction(treeViewer); fShowOnlyMainTypeAction= new ShowOnlyMainTypeAction(treeViewer); fCategoryFilterActionGroup= new CategoryFilterActionGroup(treeViewer, getId(), getInputForCategories()); fOutlineContentProvider= new OutlineContentProvider(false); treeViewer.setContentProvider(fOutlineContentProvider); fOutlineSorter= new OutlineSorter(); treeViewer.setComparator(fOutlineSorter); treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS); treeViewer.getTree().addKeyListener(getKeyAdapter()); return treeViewer; }
@Override protected void fillActionBars(IActionBars actionBars) { super.fillActionBars(actionBars); fCategoryFilterActionGroup= new CategoryFilterActionGroup(getViewer(), getViewSite().getId(), getCategoryFilterActionGroupInput()); fCategoryFilterActionGroup.contributeToViewMenu(actionBars.getMenuManager()); }
@Override protected void fillViewMenu(IMenuManager viewMenu) { super.fillViewMenu(viewMenu); viewMenu.add(fShowOnlyMainTypeAction); viewMenu.add(new Separator("Sorters")); //$NON-NLS-1$ viewMenu.add(fLexicalSortingAction); viewMenu.add(fSortByDefiningTypeAction); fCategoryFilterActionGroup.setInput(getInputForCategories()); fCategoryFilterActionGroup.contributeToViewMenu(viewMenu); }
private boolean processChildren(IJavaElement[] children, IResultCollector collector) { for (int i= 0; i < children.length; i++) { if (collectCategories(children[i], collector)) return true; } return false; }
public CategoryFilterActionGroup(final StructuredViewer viewer, final String viewerId, IJavaElement[] input) { Assert.isLegal(viewer != null); Assert.isLegal(viewerId != null); Assert.isLegal(input != null); fLRUList= new LinkedHashMap<String, String>(MAX_NUMBER_OF_CATEGORIES_IN_MENU * 2, 0.75f, true) { private static final long serialVersionUID= 1L; @Override protected boolean removeEldestEntry(Map.Entry<String, String> eldest) { return size() > MAX_NUMBER_OF_CATEGORIES_IN_MENU; } }; fViewer= viewer; fViewerId= viewerId; fInputElement= input; fFilter= new CategoryFilter(); fFilteredCategories= new HashSet<>(); loadSettings(); fMenuAction= new CategoryFilterMenuAction(); fViewer.addFilter(fFilter); }
private boolean collectCategories(IJavaElement element, IResultCollector collector) {//HashSet result, int max, LinkedHashMap lruList) { try { if (element instanceof IMember) { IMember member= (IMember)element; collector.accept(member.getCategories()); return processChildren(member.getChildren(), collector); } else if (element instanceof ICompilationUnit) { return processChildren(((ICompilationUnit)element).getChildren(), collector); } else if (element instanceof IClassFile) { return processChildren(((IClassFile)element).getChildren(), collector); } else if (element instanceof IJavaModel) { return processChildren(((IJavaModel)element).getChildren(), collector); } else if (element instanceof IJavaProject) { return processChildren(((IJavaProject)element).getChildren(), collector); } else if (element instanceof IPackageFragment) { return processChildren(((IPackageFragment)element).getChildren(), collector); } else if (element instanceof IPackageFragmentRoot) { return processChildren(((IPackageFragmentRoot)element).getChildren(), collector); } return false; } catch (JavaModelException e) { JavaPlugin.log(e); return true; } }
private void updateMenu(IMenuManager manager) { IContributionItem[] items= manager.getItems(); if (items != null) { for (int i= 0; i < items.length; i++) { IContributionItem item= items[i]; if (item != null && item.getId() != null && item.getId().equals(FILTER_CATEGORY_ACTION_ID)) { IContributionItem removed= manager.remove(item); if (removed != null) { item.dispose(); } } } } List<String> menuEntries= new ArrayList<>(); boolean hasUncategorizedMembers= getMenuCategories(menuEntries); Collections.sort(menuEntries, Collator.getInstance()); if (menuEntries.size() > 0 && hasUncategorizedMembers) manager.appendToGroup(CATEGORY_MENU_GROUP_NAME, new FilterUncategorizedMembersAction()); int count= 0; for (Iterator<String> iter= menuEntries.iterator(); iter.hasNext();) { String category= iter.next(); manager.appendToGroup(CATEGORY_MENU_GROUP_NAME, new CategoryFilterAction(category, count + 1)); count++; } }
@Override protected TreeViewer createTreeViewer(Composite parent, int style) { Tree tree= new Tree(parent, SWT.SINGLE | (style & ~SWT.MULTI)); GridData gd= new GridData(GridData.FILL_BOTH); gd.heightHint= tree.getItemHeight() * 12; tree.setLayoutData(gd); final TreeViewer treeViewer= new OutlineTreeViewer(tree); // Hard-coded filters treeViewer.addFilter(new NamePatternFilter()); treeViewer.addFilter(new MemberFilter()); fInnerLabelProvider= new OutlineLabelProvider(); fInnerLabelProvider.addLabelDecorator(new ProblemsLabelDecorator(null)); IDecoratorManager decoratorMgr= PlatformUI.getWorkbench().getDecoratorManager(); if (decoratorMgr.getEnabled("org.eclipse.jdt.ui.override.decorator")) //$NON-NLS-1$ fInnerLabelProvider.addLabelDecorator(new OverrideIndicatorLabelDecorator(null)); treeViewer.setLabelProvider(new ColoringLabelProvider(fInnerLabelProvider)); fLexicalSortingAction= new LexicalSortingAction(treeViewer); fSortByDefiningTypeAction= new SortByDefiningTypeAction(treeViewer); fShowOnlyMainTypeAction= new ShowOnlyMainTypeAction(treeViewer); fCategoryFilterActionGroup= new CategoryFilterActionGroup(treeViewer, getId(), getInputForCategories()); fOutlineContentProvider= new OutlineContentProvider(false); treeViewer.setContentProvider(fOutlineContentProvider); fOutlineSorter= new OutlineSorter(); treeViewer.setComparator(fOutlineSorter); treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS); treeViewer.getTree().addKeyListener(getKeyAdapter()); return treeViewer; }
private void showCategorySelectionDialog(IJavaElement[] input) { final HashSet<String> categories= new HashSet<>(); for (int i= 0; i < input.length; i++) { collectCategories(input[i], new IResultCollector() { @Override public boolean accept(String[] cats) { for (int j= 0; j < cats.length; j++) { categories.add(cats[j]); } return false; } }); } CategoryFilterSelectionDialog dialog= new CategoryFilterSelectionDialog(fViewer.getControl().getShell(), new ArrayList<>(categories), new ArrayList<>(fFilteredCategories)); if (dialog.open() == Window.OK) { Object[] selected= dialog.getResult(); for (Iterator<String> iter= categories.iterator(); iter.hasNext();) { String category= iter.next(); if (contains(selected, category)) { if (fFilteredCategories.remove(category)) fLRUList.put(category, category); } else { if (fFilteredCategories.add(category)) fLRUList.put(category, category); } } storeSettings(); fireSelectionChange(); } }
protected void fillActionBars(IActionBars actionBars) { super.fillActionBars(actionBars); fCategoryFilterActionGroup= new CategoryFilterActionGroup(getViewer(), getViewSite().getId(), getCategoryFilterActionGroupInput()); fCategoryFilterActionGroup.contributeToViewMenu(actionBars.getMenuManager()); }
@Override protected void fillViewMenu(IMenuManager viewMenu) { super.fillViewMenu(viewMenu); viewMenu.add(fShowOnlyMainTypeAction); viewMenu.add(new Separator("Sorters")); //$NON-NLS-1$ viewMenu.add(fLexicalSortingAction); viewMenu.add(fSortByDefiningTypeAction); fCategoryFilterActionGroup.setInput(getInputForCategories()); fCategoryFilterActionGroup.contributeToViewMenu(viewMenu); }