001: /*******************************************************************************
002: * Copyright (c) 2000, 2007 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.jdt.internal.ui.viewsupport;
011:
012: import org.eclipse.jface.viewers.DecoratingLabelProvider;
013: import org.eclipse.jface.viewers.DecorationContext;
014: import org.eclipse.jface.viewers.ILabelDecorator;
015: import org.eclipse.jface.viewers.ILabelProvider;
016: import org.eclipse.jface.viewers.LabelDecorator;
017:
018: import org.eclipse.ui.PlatformUI;
019:
020: import org.eclipse.jdt.ui.ProblemsLabelDecorator;
021:
022: import org.eclipse.jdt.internal.ui.packageview.HierarchicalDecorationContext;
023:
024: public class DecoratingJavaLabelProvider extends
025: DecoratingLabelProvider implements IRichLabelProvider {
026:
027: /**
028: * Decorating label provider for Java. Combines a JavaUILabelProvider
029: * with problem and override indicator with the workbench decorator (label
030: * decorator extension point).
031: * @param labelProvider the label provider to decorate
032: */
033: public DecoratingJavaLabelProvider(JavaUILabelProvider labelProvider) {
034: this (labelProvider, true);
035: }
036:
037: /**
038: * Decorating label provider for Java. Combines a JavaUILabelProvider
039: * (if enabled with problem indicator) with the workbench
040: * decorator (label decorator extension point).
041: * @param labelProvider the label provider to decorate
042: * @param errorTick show error ticks
043: */
044: public DecoratingJavaLabelProvider(
045: JavaUILabelProvider labelProvider, boolean errorTick) {
046: this (labelProvider, errorTick, true);
047: }
048:
049: /**
050: * Decorating label provider for Java. Combines a JavaUILabelProvider
051: * (if enabled with problem indicator) with the workbench
052: * decorator (label decorator extension point).
053: * @param labelProvider the label provider to decorate
054: * @param errorTick show error ticks
055: * @param flatPackageMode configure flat package mode
056: */
057: public DecoratingJavaLabelProvider(
058: JavaUILabelProvider labelProvider, boolean errorTick,
059: boolean flatPackageMode) {
060: super (labelProvider, PlatformUI.getWorkbench()
061: .getDecoratorManager().getLabelDecorator());
062: if (errorTick) {
063: labelProvider.addLabelDecorator(new ProblemsLabelDecorator(
064: null));
065: }
066: setFlatPackageMode(flatPackageMode);
067: }
068:
069: /**
070: * Tells the label decorator if the view presents packages flat or hierarchical.
071: * @param enable If set, packages are presented in flat mode.
072: */
073: public void setFlatPackageMode(boolean enable) {
074: if (enable) {
075: setDecorationContext(DecorationContext.DEFAULT_CONTEXT);
076: } else {
077: setDecorationContext(HierarchicalDecorationContext.CONTEXT);
078: }
079: }
080:
081: /* (non-Javadoc)
082: * @see org.eclipse.jdt.internal.ui.viewsupport.IRichLabelProvider#getRichTextLabel(Object)
083: */
084: public ColoredString getRichTextLabel(Object element) {
085: ILabelProvider labelProvider = getLabelProvider();
086: if (labelProvider instanceof IRichLabelProvider) {
087: // get a rich label from the label decorator
088: IRichLabelProvider richLabelProvider = (IRichLabelProvider) labelProvider;
089: ColoredString richLabel = richLabelProvider
090: .getRichTextLabel(element);
091: if (richLabel != null) {
092: String decorated = null;
093: ILabelDecorator labelDecorator = getLabelDecorator();
094: if (labelDecorator != null) {
095: if (labelDecorator instanceof LabelDecorator) {
096: decorated = ((LabelDecorator) labelDecorator)
097: .decorateText(richLabel.getString(),
098: element, getDecorationContext());
099: } else {
100: decorated = labelDecorator.decorateText(
101: richLabel.getString(), element);
102: }
103: }
104: if (decorated != null) {
105: return ColoredJavaElementLabels
106: .decorateColoredString(
107: richLabel,
108: decorated,
109: ColoredJavaElementLabels.DECORATIONS_STYLE);
110: }
111: return richLabel;
112: }
113: }
114: return null;
115: }
116:
117: }
|