]>
Commit | Line | Data |
---|---|---|
1b2798f6 EK |
1 | /******************************************************************************* |
2 | * Copyright (c) 2000, 2011 IBM Corporation and others. | |
3 | * All rights reserved. This program and the accompanying materials | |
4 | * are made available under the terms of the Eclipse Public License v1.0 | |
5 | * which accompanies this distribution, and is available at | |
6 | * http://www.eclipse.org/legal/epl-v10.html | |
7 | * | |
8 | * Contributors: | |
9 | * IBM Corporation - initial API and implementation | |
10 | *******************************************************************************/ | |
11 | package org.eclipse.jdt.internal.ui.typehierarchy; | |
12 | ||
13 | import org.eclipse.swt.SWT; | |
14 | import org.eclipse.swt.widgets.Composite; | |
15 | import org.eclipse.swt.widgets.Menu; | |
16 | import org.eclipse.swt.widgets.Tree; | |
17 | ||
18 | import org.eclipse.core.runtime.Assert; | |
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.StructuredSelection; | |
25 | import org.eclipse.jface.viewers.ViewerFilter; | |
26 | ||
27 | import org.eclipse.ui.IWorkbenchPartSite; | |
28 | ||
29 | import org.eclipse.jdt.core.IMember; | |
30 | import org.eclipse.jdt.core.IType; | |
31 | ||
32 | import org.eclipse.jdt.internal.ui.viewsupport.ProblemTreeViewer; | |
33 | ||
34 | public abstract class TypeHierarchyViewer extends ProblemTreeViewer { | |
35 | ||
36 | HierarchyLabelProvider fLabelProvider; | |
37 | ||
38 | ||
39 | public TypeHierarchyViewer(Composite parent, IContentProvider contentProvider, TypeHierarchyLifeCycle lifeCycle) { | |
40 | super(new Tree(parent, SWT.SINGLE)); | |
41 | ||
42 | lifeCycle.generated_4986470495137217662(contentProvider, this); | |
43 | } | |
44 | ||
45 | public void setQualifiedTypeName(boolean on) { | |
46 | fLabelProvider.generated_5816717189664349314(this, on); | |
47 | } | |
48 | ||
49 | /** | |
50 | * Attaches a context menu listener to the tree. | |
51 | * | |
52 | * @param menuListener the menu listener | |
53 | * @param popupId the popup id | |
54 | * @param viewSite the view site | |
55 | */ | |
56 | public void initContextMenu(IMenuListener menuListener, String popupId, IWorkbenchPartSite viewSite) { | |
57 | MenuManager menuMgr= new MenuManager(); | |
58 | menuMgr.setRemoveAllWhenShown(true); | |
59 | menuMgr.addMenuListener(menuListener); | |
60 | Menu menu= menuMgr.createContextMenu(getTree()); | |
61 | getTree().setMenu(menu); | |
62 | viewSite.registerContextMenu(popupId, menuMgr, this); | |
63 | } | |
64 | ||
65 | /** | |
66 | * Fills up the context menu with items for the hierarchy viewer | |
67 | * Should be called by the creator of the context menu | |
68 | * @param menu the menu manager | |
69 | */ | |
70 | public void contributeToContextMenu(IMenuManager menu) { | |
71 | } | |
72 | ||
73 | /** | |
74 | * Set the member filter | |
75 | * @param memberFilter the member filters to set | |
76 | */ | |
77 | public void setMemberFilter(IMember[] memberFilter) { | |
78 | TypeHierarchyContentProvider contentProvider= getHierarchyContentProvider(); | |
79 | if (contentProvider != null) { | |
80 | contentProvider.setMemberFilter(memberFilter); | |
81 | } | |
82 | } | |
83 | ||
84 | /** | |
85 | * Returns if method filtering is enabled. | |
86 | * @return <code>true</code>if method filtering is enabled. | |
87 | */ | |
88 | public boolean isMethodFiltering() { | |
89 | TypeHierarchyContentProvider contentProvider= getHierarchyContentProvider(); | |
90 | if (contentProvider != null) { | |
91 | return contentProvider.getMemberFilter() != null; | |
92 | } | |
93 | return false; | |
94 | } | |
95 | ||
96 | public void setWorkingSetFilter(ViewerFilter filter) { | |
97 | fLabelProvider.setFilter(filter); | |
98 | TypeHierarchyContentProvider contentProvider= getHierarchyContentProvider(); | |
99 | if (contentProvider != null) { | |
100 | contentProvider.setWorkingSetFilter(filter); | |
101 | } | |
102 | } | |
103 | ||
104 | /** | |
105 | * Returns true if the hierarchy contains elements. Returns one of them | |
106 | * With member filtering it is possible that no elements are visible | |
107 | * @return one of the elements contained | |
108 | */ | |
109 | public Object containsElements() { | |
110 | TypeHierarchyContentProvider contentProvider= getHierarchyContentProvider(); | |
111 | if (contentProvider != null) { | |
112 | Object[] elements= contentProvider.getElements(null); | |
113 | if (elements.length > 0) { | |
114 | return elements[0]; | |
115 | } | |
116 | } | |
117 | return null; | |
118 | } | |
119 | ||
120 | /** | |
121 | * Returns true if the hierarchy contains elements. Returns one of them | |
122 | * With member filtering it is possible that no elements are visible | |
123 | * @return the tree root | |
124 | */ | |
125 | public IType getTreeRootType() { | |
126 | TypeHierarchyContentProvider contentProvider= getHierarchyContentProvider(); | |
127 | if (contentProvider != null) { | |
128 | Object[] elements= contentProvider.getElements(null); | |
129 | if (elements.length > 0 && elements[0] instanceof IType) { | |
130 | return (IType) elements[0]; | |
131 | } | |
132 | } | |
133 | return null; | |
134 | } | |
135 | ||
136 | /** | |
137 | * Returns true if the hierarchy contains element the element. | |
138 | * @param element the element | |
139 | * @return <code>true</code> if element is shown | |
140 | */ | |
141 | public boolean isElementShown(Object element) { | |
142 | return findItem(element) != null; | |
143 | } | |
144 | ||
145 | /** | |
146 | * Updates the content of this viewer: refresh and expanding the tree in the way wanted. | |
147 | * @param doExpand if set, update should expand | |
148 | */ | |
149 | public abstract void updateContent(boolean doExpand); | |
150 | ||
151 | /* | |
152 | * @see StructuredViewer#setContentProvider | |
153 | * Content provider must be of type TypeHierarchyContentProvider | |
154 | */ | |
155 | @Override | |
156 | public void setContentProvider(IContentProvider cp) { | |
157 | Assert.isTrue(cp instanceof TypeHierarchyContentProvider); | |
158 | super.setContentProvider(cp); | |
159 | } | |
160 | ||
161 | protected TypeHierarchyContentProvider getHierarchyContentProvider() { | |
162 | return (TypeHierarchyContentProvider)getContentProvider(); | |
163 | } | |
164 | ||
165 | public void generated_3182093020655792846(TypeHierarchyViewPart typehierarchyviewpart) { | |
166 | setQualifiedTypeName(typehierarchyviewpart.isQualifiedTypeNamesEnabled()); | |
167 | setWorkingSetFilter(typehierarchyviewpart.fWorkingSetActionGroup.getWorkingSetFilter()); | |
168 | } | |
169 | ||
170 | public void generated_510739697884024873(IMember elem, boolean reveal, TypeHierarchyViewPart typehierarchyviewpart) { | |
171 | removePostSelectionChangedListener(typehierarchyviewpart.fSelectionChangedListener); | |
172 | setSelection(elem != null ? new StructuredSelection(elem) : StructuredSelection.EMPTY, reveal); | |
173 | addPostSelectionChangedListener(typehierarchyviewpart.fSelectionChangedListener); | |
174 | } | |
175 | ||
176 | } |