X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/viewsupport/DecoratingJavaLabelProvider.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/viewsupport/DecoratingJavaLabelProvider.java new file mode 100644 index 0000000..268cfaf --- /dev/null +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/viewsupport/DecoratingJavaLabelProvider.java @@ -0,0 +1,147 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpdt.internal.ui.viewsupport; + +import net.sourceforge.phpdt.ui.OverrideIndicatorLabelDecorator; +import net.sourceforge.phpdt.ui.ProblemsLabelDecorator; +import net.sourceforge.phpeclipse.PHPeclipsePlugin; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jface.viewers.DecoratingLabelProvider; +import org.eclipse.swt.graphics.Image; +import org.eclipse.ui.IDecoratorManager; +import org.eclipse.ui.PlatformUI; + +/** + * Decorator prepared for the switch to use lightweight label decorators: + * uncomment the lbale decorator entries in plugin.xml and change + * USE_LIGHTWEIGHT to true. Certain views don't want problems or override + * indicators, so they signal this in the constructor. So on each getImage the + * corrsponding decorators are turned off and on again. + */ +public class DecoratingJavaLabelProvider extends DecoratingLabelProvider { + + private static final boolean USE_LIGHTWEIGHT = false; + + private static final String PROBLEM_DECORATOR_ID = "net.sourceforge.phpdt.ui.problem.decorator"; //$NON-NLS-1$ + + private static final String OVERRIDE_DECORATOR_ID = "net.sourceforge.phpdt.ui.override.decorator"; //$NON-NLS-1$ + + private boolean fUseErrorTick; + + private boolean fUseOverride; + + /** + * Decorating label provider for Java. Combines a JavaUILabelProvider with + * problem and override indicuator with the workbench decorator (label + * decorator extension point). + */ + public DecoratingJavaLabelProvider(JavaUILabelProvider labelProvider) { + this(labelProvider, true, true); + } + + /** + * Decorating label provider for Java. Combines a JavaUILabelProvider (if + * enabled with problem and override indicator) with the workbench decorator + * (label decorator extension point). + */ + public DecoratingJavaLabelProvider(JavaUILabelProvider labelProvider, + boolean errorTick, boolean override) { + super(labelProvider, PlatformUI.getWorkbench().getDecoratorManager() + .getLabelDecorator()); + fUseErrorTick = errorTick; + fUseOverride = override; + if (!USE_LIGHTWEIGHT) { + if (errorTick) { + labelProvider + .addLabelDecorator(new ProblemsLabelDecorator(null)); + } + if (override) { + labelProvider + .addLabelDecorator(new OverrideIndicatorLabelDecorator( + null)); + } + } + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object) + */ + public Image getImage(Object element) { + if (USE_LIGHTWEIGHT) { + IDecoratorManager manager = PlatformUI.getWorkbench() + .getDecoratorManager(); + + boolean disableErrorTick = manager.getEnabled(PROBLEM_DECORATOR_ID) + && !fUseErrorTick; + boolean disableOverride = manager.getEnabled(OVERRIDE_DECORATOR_ID) + && !fUseOverride; + try { + if (disableErrorTick) { + manager.setEnabled(PROBLEM_DECORATOR_ID, false); + } + if (disableOverride) { + manager.setEnabled(OVERRIDE_DECORATOR_ID, false); + } + Image image = super.getImage(element); + if (disableErrorTick) { + manager.setEnabled(PROBLEM_DECORATOR_ID, true); + } + if (disableOverride) { + manager.setEnabled(OVERRIDE_DECORATOR_ID, true); + } + return image; + } catch (CoreException e) { + PHPeclipsePlugin.log(e); + } + } + return super.getImage(element); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object) + */ + public String getText(Object element) { + if (USE_LIGHTWEIGHT) { + IDecoratorManager manager = PlatformUI.getWorkbench() + .getDecoratorManager(); + + boolean disableErrorTick = manager.getEnabled(PROBLEM_DECORATOR_ID) + && !fUseErrorTick; + boolean disableOverride = manager.getEnabled(OVERRIDE_DECORATOR_ID) + && !fUseOverride; + try { + if (disableErrorTick) { + manager.setEnabled(PROBLEM_DECORATOR_ID, false); + } + if (disableOverride) { + manager.setEnabled(OVERRIDE_DECORATOR_ID, false); + } + String text = super.getText(element); + if (disableErrorTick) { + manager.setEnabled(PROBLEM_DECORATOR_ID, true); + } + if (disableOverride) { + manager.setEnabled(OVERRIDE_DECORATOR_ID, true); + } + return text; + } catch (CoreException e) { + PHPeclipsePlugin.log(e); + } + } + return super.getText(element); + } + +}