]> git.uio.no Git - ifi-stolz-refaktor.git/blame - case-study/jdt-after/ui/org/eclipse/jdt/internal/ui/typehierarchy/TypeHierarchyViewer.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-after / ui / org / eclipse / jdt / internal / ui / typehierarchy / TypeHierarchyViewer.java
CommitLineData
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 *******************************************************************************/
11package org.eclipse.jdt.internal.ui.typehierarchy;
12
13import org.eclipse.swt.SWT;
14import org.eclipse.swt.widgets.Composite;
15import org.eclipse.swt.widgets.Menu;
16import org.eclipse.swt.widgets.Tree;
17
18import org.eclipse.core.runtime.Assert;
19
20import org.eclipse.jface.action.IMenuListener;
21import org.eclipse.jface.action.IMenuManager;
22import org.eclipse.jface.action.MenuManager;
23import org.eclipse.jface.viewers.IContentProvider;
24import org.eclipse.jface.viewers.StructuredSelection;
25import org.eclipse.jface.viewers.ViewerFilter;
26
27import org.eclipse.ui.IWorkbenchPartSite;
28
29import org.eclipse.jdt.core.IMember;
30import org.eclipse.jdt.core.IType;
31
32import org.eclipse.jdt.internal.ui.viewsupport.ProblemTreeViewer;
33
34public 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}