1 11 package org.eclipse.jdt.internal.ui.typehierarchy; 12 13 import org.eclipse.core.runtime.Assert; 14 15 import org.eclipse.swt.SWT; 16 import org.eclipse.swt.widgets.Composite; 17 import org.eclipse.swt.widgets.Menu; 18 import org.eclipse.swt.widgets.Tree; 19 20 import org.eclipse.jface.action.IMenuListener; 21 import org.eclipse.jface.action.IMenuManager; 22 import org.eclipse.jface.action.MenuManager; 23 import org.eclipse.jface.viewers.IContentProvider; 24 import org.eclipse.jface.viewers.IOpenListener; 25 import org.eclipse.jface.viewers.OpenEvent; 26 import org.eclipse.jface.viewers.ViewerFilter; 27 28 import org.eclipse.ui.IWorkbenchPart; 29 import org.eclipse.ui.IWorkbenchPartSite; 30 31 import org.eclipse.jdt.core.IMember; 32 import org.eclipse.jdt.core.IType; 33 34 import org.eclipse.jdt.ui.JavaElementLabels; 35 import org.eclipse.jdt.ui.actions.OpenAction; 36 37 import org.eclipse.jdt.internal.ui.IJavaHelpContextIds; 38 import org.eclipse.jdt.internal.ui.util.JavaUIHelp; 39 import org.eclipse.jdt.internal.ui.viewsupport.ColoredViewersManager; 40 import org.eclipse.jdt.internal.ui.viewsupport.DecoratingJavaLabelProvider; 41 import org.eclipse.jdt.internal.ui.viewsupport.ProblemTreeViewer; 42 43 public abstract class TypeHierarchyViewer extends ProblemTreeViewer { 44 45 private OpenAction fOpen; 46 private HierarchyLabelProvider fLabelProvider; 47 48 public TypeHierarchyViewer(Composite parent, IContentProvider contentProvider, TypeHierarchyLifeCycle lifeCycle, IWorkbenchPart part) { 49 super(new Tree(parent, SWT.SINGLE)); 50 51 fLabelProvider= new HierarchyLabelProvider(lifeCycle); 52 53 setLabelProvider(new DecoratingJavaLabelProvider(fLabelProvider, true)); 54 setUseHashlookup(true); 55 56 setContentProvider(contentProvider); 57 setComparator(new HierarchyViewerSorter(lifeCycle)); 58 59 fOpen= new OpenAction(part.getSite()); 60 addOpenListener(new IOpenListener() { 61 public void open(OpenEvent event) { 62 fOpen.run(); 63 } 64 }); 65 66 ColoredViewersManager.install(this); 67 68 JavaUIHelp.setHelp(this, IJavaHelpContextIds.TYPE_HIERARCHY_VIEW); 69 } 70 71 public void setQualifiedTypeName(boolean on) { 72 if (on) { 73 fLabelProvider.setTextFlags(fLabelProvider.getTextFlags() | JavaElementLabels.T_POST_QUALIFIED); 74 } else { 75 fLabelProvider.setTextFlags(fLabelProvider.getTextFlags() & ~JavaElementLabels.T_POST_QUALIFIED); 76 } 77 refresh(); 78 } 79 80 86 public void initContextMenu(IMenuListener menuListener, String popupId, IWorkbenchPartSite viewSite) { 87 MenuManager menuMgr= new MenuManager(); 88 menuMgr.setRemoveAllWhenShown(true); 89 menuMgr.addMenuListener(menuListener); 90 Menu menu= menuMgr.createContextMenu(getTree()); 91 getTree().setMenu(menu); 92 viewSite.registerContextMenu(popupId, menuMgr, this); 93 } 94 95 100 public void contributeToContextMenu(IMenuManager menu) { 101 } 102 103 107 public void setMemberFilter(IMember[] memberFilter) { 108 TypeHierarchyContentProvider contentProvider= getHierarchyContentProvider(); 109 if (contentProvider != null) { 110 contentProvider.setMemberFilter(memberFilter); 111 } 112 } 113 114 118 public boolean isMethodFiltering() { 119 TypeHierarchyContentProvider contentProvider= getHierarchyContentProvider(); 120 if (contentProvider != null) { 121 return contentProvider.getMemberFilter() != null; 122 } 123 return false; 124 } 125 126 public void setWorkingSetFilter(ViewerFilter filter) { 127 fLabelProvider.setFilter(filter); 128 TypeHierarchyContentProvider contentProvider= getHierarchyContentProvider(); 129 if (contentProvider != null) { 130 contentProvider.setWorkingSetFilter(filter); 131 } 132 } 133 134 139 public Object containsElements() { 140 TypeHierarchyContentProvider contentProvider= getHierarchyContentProvider(); 141 if (contentProvider != null) { 142 Object [] elements= contentProvider.getElements(null); 143 if (elements.length > 0) { 144 return elements[0]; 145 } 146 } 147 return null; 148 } 149 150 155 public IType getTreeRootType() { 156 TypeHierarchyContentProvider contentProvider= getHierarchyContentProvider(); 157 if (contentProvider != null) { 158 Object [] elements= contentProvider.getElements(null); 159 if (elements.length > 0 && elements[0] instanceof IType) { 160 return (IType) elements[0]; 161 } 162 } 163 return null; 164 } 165 166 171 public boolean isElementShown(Object element) { 172 return findItem(element) != null; 173 } 174 175 179 public abstract void updateContent(boolean doExpand); 180 181 185 public abstract String getTitle(); 186 187 191 public void setContentProvider(IContentProvider cp) { 192 Assert.isTrue(cp instanceof TypeHierarchyContentProvider); 193 super.setContentProvider(cp); 194 } 195 196 protected TypeHierarchyContentProvider getHierarchyContentProvider() { 197 return (TypeHierarchyContentProvider)getContentProvider(); 198 } 199 200 } 201 | Popular Tags |