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
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11 package org.eclipse.jdt.internal.ui.search;
13 import org.eclipse.swt.graphics.Image;
15 import org.eclipse.jface.viewers.ITreeContentProvider;
16 import org.eclipse.jface.viewers.StyledString;
17 import org.eclipse.jface.viewers.TreeViewer;
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;
24 import org.eclipse.jdt.ui.JavaElementLabels;
26 import org.eclipse.jdt.internal.ui.search.JavaSearchResultPage.DecoratorIgnoringViewerSorter;
27 import org.eclipse.jdt.internal.ui.viewsupport.DecoratingJavaLabelProvider;
30 public class PostfixLabelProvider extends SearchLabelProvider {
31 private ITreeContentProvider fContentProvider;
33 public PostfixLabelProvider(JavaSearchResultPage page) {
35 fContentProvider= new LevelTreeContentProvider.FastJavaElementProvider();
39 public Image getImage(Object element) {
40 Image image= super.getImage(element);
43 return getParticipantImage(element);
47 public String getText(Object element) {
48 String labelWithCounts= getLabelWithCounts(element, internalGetText(element));
49 return labelWithCounts + getQualification(element);
52 private String getQualification(Object element) {
53 StringBuffer res= new StringBuffer();
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));
63 lastElement= realParent;
64 realParent= fContentProvider.getParent(realParent);
66 return res.toString();
70 protected boolean hasChildren(Object element) {
71 ITreeContentProvider contentProvider= (ITreeContentProvider) fPage.getViewer().getContentProvider();
72 return contentProvider.hasChildren(element);
75 private String internalGetText(Object element) {
76 String text= super.getText(element);
77 if (text != null && text.length() > 0)
79 return getParticipantText(element);
82 private StyledString internalGetStyledText(Object element) {
83 StyledString text= super.getStyledText(element);
84 if (text != null && text.length() > 0)
86 return getStyledParticipantText(element);
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))
95 } else if (realParent instanceof ICompilationUnit) {
96 if (type.getCompilationUnit().equals(realParent))
104 * @see org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider#getStyledText(java.lang.Object)
107 public StyledString getStyledText(Object element) {
108 StyledString styledString= getColoredLabelWithCounts(element, internalGetStyledText(element));
109 styledString.append(getQualification(element), StyledString.QUALIFIER_STYLER);
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);