]> git.uio.no Git - ifi-stolz-refaktor.git/blob - case-study/jdt-after/ui/org/eclipse/jdt/internal/ui/search/PostfixLabelProvider.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-after / ui / org / eclipse / jdt / internal / ui / search / PostfixLabelProvider.java
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.search;
12
13 import org.eclipse.swt.graphics.Image;
14
15 import org.eclipse.jface.viewers.ITreeContentProvider;
16 import org.eclipse.jface.viewers.StyledString;
17 import org.eclipse.jface.viewers.TreeViewer;
18
19 import org.eclipse.jdt.core.IClassFile;
20 import org.eclipse.jdt.core.ICompilationUnit;
21 import org.eclipse.jdt.core.IJavaModel;
22 import org.eclipse.jdt.core.IType;
23
24 import org.eclipse.jdt.ui.JavaElementLabels;
25
26 import org.eclipse.jdt.internal.ui.search.JavaSearchResultPage.DecoratorIgnoringViewerSorter;
27 import org.eclipse.jdt.internal.ui.viewsupport.DecoratingJavaLabelProvider;
28
29
30 public class PostfixLabelProvider extends SearchLabelProvider {
31         private ITreeContentProvider fContentProvider;
32
33         public PostfixLabelProvider(JavaSearchResultPage page) {
34                 super(page);
35                 fContentProvider= new LevelTreeContentProvider.FastJavaElementProvider();
36         }
37
38         @Override
39         public Image getImage(Object element) {
40                 Image image= super.getImage(element);
41                 if (image != null)
42                         return image;
43                 return getParticipantImage(element);
44         }
45
46         @Override
47         public String getText(Object element) {
48                 String labelWithCounts= getLabelWithCounts(element, internalGetText(element));
49                 return labelWithCounts + getQualification(element);
50         }
51
52         private String getQualification(Object element) {
53                 StringBuffer res= new StringBuffer();
54
55                 ITreeContentProvider provider= (ITreeContentProvider) fPage.getViewer().getContentProvider();
56                 Object visibleParent= provider.getParent(element);
57                 Object realParent= fContentProvider.getParent(element);
58                 Object lastElement= element;
59                 while (realParent != null && !(realParent instanceof IJavaModel) && !realParent.equals(visibleParent)) {
60                         if (!isSameInformation(realParent, lastElement))  {
61                                 res.append(JavaElementLabels.CONCAT_STRING).append(internalGetText(realParent));
62                         }
63                         lastElement= realParent;
64                         realParent= fContentProvider.getParent(realParent);
65                 }
66                 return res.toString();
67         }
68
69         @Override
70         protected boolean hasChildren(Object element) {
71                 ITreeContentProvider contentProvider= (ITreeContentProvider) fPage.getViewer().getContentProvider();
72                 return contentProvider.hasChildren(element);
73         }
74
75         private String internalGetText(Object element) {
76                 String text= super.getText(element);
77                 if (text != null && text.length() > 0)
78                         return text;
79                 return getParticipantText(element);
80         }
81
82         private StyledString internalGetStyledText(Object element) {
83                 StyledString text= super.getStyledText(element);
84                 if (text != null && text.length() > 0)
85                         return text;
86                 return getStyledParticipantText(element);
87         }
88
89         private boolean isSameInformation(Object realParent, Object lastElement) {
90                 if (lastElement instanceof IType) {
91                         IType type= (IType) lastElement;
92                         if (realParent instanceof IClassFile) {
93                                 if (type.getClassFile().equals(realParent))
94                                         return true;
95                         } else if (realParent instanceof ICompilationUnit) {
96                                 if (type.getCompilationUnit().equals(realParent))
97                                         return true;
98                         }
99                 }
100                 return false;
101         }
102
103         /* (non-Javadoc)
104          * @see org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider#getStyledText(java.lang.Object)
105          */
106         @Override
107         public StyledString getStyledText(Object element) {
108                 StyledString styledString= getColoredLabelWithCounts(element, internalGetStyledText(element));
109                 styledString.append(getQualification(element), StyledString.QUALIFIER_STYLER);
110                 return styledString;
111         }
112
113         public void generated_7949163679153843673(TreeViewer viewer, JavaSearchResultPage javasearchresultpage) {
114                 viewer.setComparator(new DecoratorIgnoringViewerSorter(this));
115                 viewer.setLabelProvider(new DecoratingJavaLabelProvider(this, false));
116                 javasearchresultpage.fContentProvider= new LevelTreeContentProvider(javasearchresultpage, javasearchresultpage.fCurrentGrouping);
117                 viewer.setContentProvider(javasearchresultpage.fContentProvider);
118         }
119
120 }