/******************************************************************************* * Copyright (c) 2007 Spring IDE Developers * 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: * Spring IDE Developers - initial API and implementation *******************************************************************************/ package org.springframework.ide.eclipse.aop.ui.matcher.internal; import org.eclipse.jdt.ui.ProblemsLabelDecorator; import org.eclipse.jface.viewers.DecoratingLabelProvider; import org.eclipse.jface.viewers.ILabelDecorator; import org.eclipse.search.ui.text.AbstractTextSearchViewPage; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.model.WorkbenchLabelProvider; import org.springframework.ide.eclipse.aop.core.model.IAopReference; import org.springframework.ide.eclipse.aop.ui.matcher.PointcutMatcherResultPage; import org.springframework.ide.eclipse.beans.core.BeansCorePlugin; import org.springframework.ide.eclipse.beans.core.model.IBean; /** * Label provider that provides label and images for pointcut matches. * <p> * Handles decoration of images by installing {@link ILabelDecorator} and * delegating to the {@link WorkbenchLabelProvider}. * @author Christian Dupuis * @since 2.0.2 */ public class PointcutMatcherLabelProvider extends DecoratingLabelProvider { private PointcutMatcherResultPage pointcutMatcherResultPage; public PointcutMatcherLabelProvider( PointcutMatcherResultPage pointcutMatcherResultPage) { this(new WrappingBeansAndJavaModelLabelProvider(), PlatformUI .getWorkbench().getDecoratorManager().getLabelDecorator()); this.pointcutMatcherResultPage = pointcutMatcherResultPage; } public PointcutMatcherLabelProvider( WrappingBeansAndJavaModelLabelProvider provider, ILabelDecorator decorator) { super(provider, decorator); provider.addLabelDecorator(new ProblemsLabelDecorator(null)); provider.addLabelDecorator(new PointcutMatchLabelDecorator()); } @Override public String getText(Object element) { if (element instanceof IAopReference && this.pointcutMatcherResultPage.getLayout() == AbstractTextSearchViewPage.FLAG_LAYOUT_FLAT) { IAopReference reference = (IAopReference) element; IBean bean = (IBean) BeansCorePlugin.getModel().getElement( reference.getTargetBeanId()); String text = super.getText(reference.getTarget()) + " - " + super.getText(bean); return text; } return super.getText(element); } }