X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=case-study%2Fjdt-before%2Fui%2Forg%2Feclipse%2Fjdt%2Finternal%2Fui%2Fsearch%2FPostfixLabelProvider.java;fp=case-study%2Fjdt-before%2Fui%2Forg%2Feclipse%2Fjdt%2Finternal%2Fui%2Fsearch%2FPostfixLabelProvider.java;h=17824aa662343307bfee042bc6c96f4c566f0e36;hb=1b2798f607d741df30e5197f427381cbff326adc;hp=0000000000000000000000000000000000000000;hpb=246231e4bd9b24345490f369747c0549ca308c4d;p=ifi-stolz-refaktor.git diff --git a/case-study/jdt-before/ui/org/eclipse/jdt/internal/ui/search/PostfixLabelProvider.java b/case-study/jdt-before/ui/org/eclipse/jdt/internal/ui/search/PostfixLabelProvider.java new file mode 100644 index 00000000..17824aa6 --- /dev/null +++ b/case-study/jdt-before/ui/org/eclipse/jdt/internal/ui/search/PostfixLabelProvider.java @@ -0,0 +1,109 @@ +/******************************************************************************* + * Copyright (c) 2000, 2011 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.jdt.internal.ui.search; + +import org.eclipse.swt.graphics.Image; + +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.jface.viewers.StyledString; + +import org.eclipse.jdt.core.IClassFile; +import org.eclipse.jdt.core.ICompilationUnit; +import org.eclipse.jdt.core.IJavaModel; +import org.eclipse.jdt.core.IType; + +import org.eclipse.jdt.ui.JavaElementLabels; + + +public class PostfixLabelProvider extends SearchLabelProvider { + private ITreeContentProvider fContentProvider; + + public PostfixLabelProvider(JavaSearchResultPage page) { + super(page); + fContentProvider= new LevelTreeContentProvider.FastJavaElementProvider(); + } + + @Override + public Image getImage(Object element) { + Image image= super.getImage(element); + if (image != null) + return image; + return getParticipantImage(element); + } + + @Override + public String getText(Object element) { + String labelWithCounts= getLabelWithCounts(element, internalGetText(element)); + return labelWithCounts + getQualification(element); + } + + private String getQualification(Object element) { + StringBuffer res= new StringBuffer(); + + ITreeContentProvider provider= (ITreeContentProvider) fPage.getViewer().getContentProvider(); + Object visibleParent= provider.getParent(element); + Object realParent= fContentProvider.getParent(element); + Object lastElement= element; + while (realParent != null && !(realParent instanceof IJavaModel) && !realParent.equals(visibleParent)) { + if (!isSameInformation(realParent, lastElement)) { + res.append(JavaElementLabels.CONCAT_STRING).append(internalGetText(realParent)); + } + lastElement= realParent; + realParent= fContentProvider.getParent(realParent); + } + return res.toString(); + } + + @Override + protected boolean hasChildren(Object element) { + ITreeContentProvider contentProvider= (ITreeContentProvider) fPage.getViewer().getContentProvider(); + return contentProvider.hasChildren(element); + } + + private String internalGetText(Object element) { + String text= super.getText(element); + if (text != null && text.length() > 0) + return text; + return getParticipantText(element); + } + + private StyledString internalGetStyledText(Object element) { + StyledString text= super.getStyledText(element); + if (text != null && text.length() > 0) + return text; + return getStyledParticipantText(element); + } + + private boolean isSameInformation(Object realParent, Object lastElement) { + if (lastElement instanceof IType) { + IType type= (IType) lastElement; + if (realParent instanceof IClassFile) { + if (type.getClassFile().equals(realParent)) + return true; + } else if (realParent instanceof ICompilationUnit) { + if (type.getCompilationUnit().equals(realParent)) + return true; + } + } + return false; + } + + /* (non-Javadoc) + * @see org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider#getStyledText(java.lang.Object) + */ + @Override + public StyledString getStyledText(Object element) { + StyledString styledString= getColoredLabelWithCounts(element, internalGetStyledText(element)); + styledString.append(getQualification(element), StyledString.QUALIFIER_STYLER); + return styledString; + } + +}