/** * This file is protected by Copyright. * Please refer to the COPYRIGHT file distributed with this source distribution. * * This file is part of REDHAWK IDE. * * 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. * */ package gov.redhawk.sca.ui.views; import gov.redhawk.sca.ui.ITooltipProvider; import java.util.Set; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.internal.navigator.NavigatorDecoratingLabelProvider; import org.eclipse.ui.navigator.CommonViewer; import org.eclipse.ui.navigator.ICommonLabelProvider; import org.eclipse.ui.navigator.INavigatorContentExtension; /** * Extends the Common Navigator framework to support extensible tooltips * * @see gov.redhawk.sca.ui.ITooltipProvider * @since 10.0 */ @SuppressWarnings("restriction") public class ScaCommonViewer extends CommonViewer { private class DelegatingTooltipLabelProvider extends NavigatorDecoratingLabelProvider { public DelegatingTooltipLabelProvider(final ILabelProvider commonLabelProvider) { super(commonLabelProvider); } private ITooltipProvider getToolTipProvider(final Object object) { final Set< ? > labelProviders = getNavigatorContentService().findContentExtensionsByTriggerPoint(object); for (final Object obj : labelProviders) { if (obj instanceof INavigatorContentExtension) { final INavigatorContentExtension extension = (INavigatorContentExtension) obj; final ICommonLabelProvider lp = extension.getLabelProvider(); if (lp instanceof ITooltipProvider) { return ((ITooltipProvider) lp); } } } return null; } @Override public boolean useNativeToolTip(final Object object) { final ITooltipProvider lp = getToolTipProvider(object); if (lp != null) { return lp.useNativeToolTip(object); } return super.useNativeToolTip(object); } @Override public Color getToolTipBackgroundColor(final Object object) { final ITooltipProvider lp = getToolTipProvider(object); if (lp != null) { return lp.getToolTipBackgroundColor(object); } return super.getToolTipBackgroundColor(object); } @Override public int getToolTipDisplayDelayTime(final Object object) { final ITooltipProvider lp = getToolTipProvider(object); if (lp != null) { return lp.getToolTipDisplayDelayTime(object); } return super.getToolTipDisplayDelayTime(object); } @Override public Font getToolTipFont(final Object object) { final ITooltipProvider lp = getToolTipProvider(object); if (lp != null) { return lp.getToolTipFont(object); } return super.getToolTipFont(object); } @Override public Color getToolTipForegroundColor(final Object object) { final ITooltipProvider lp = getToolTipProvider(object); if (lp != null) { return lp.getToolTipForegroundColor(object); } return super.getToolTipForegroundColor(object); } @Override public Image getToolTipImage(final Object object) { final ITooltipProvider lp = getToolTipProvider(object); if (lp != null) { return lp.getToolTipImage(object); } return super.getToolTipImage(object); } @Override public Point getToolTipShift(final Object object) { final ITooltipProvider lp = getToolTipProvider(object); if (lp != null) { return lp.getToolTipShift(object); } return super.getToolTipShift(object); } @Override public int getToolTipStyle(final Object object) { final ITooltipProvider lp = getToolTipProvider(object); if (lp != null) { return lp.getToolTipStyle(object); } return super.getToolTipStyle(object); } @Override public int getToolTipTimeDisplayed(final Object object) { final ITooltipProvider lp = getToolTipProvider(object); if (lp != null) { return lp.getToolTipTimeDisplayed(object); } return super.getToolTipTimeDisplayed(object); } @Override public String getToolTipText(final Object object) { final ITooltipProvider lp = getToolTipProvider(object); if (lp != null) { return lp.getToolTipText(object); } return super.getToolTipText(object); } } /** * @since 10.0 */ public ScaCommonViewer(final String aViewerId, final Composite aParent, final int aStyle) { super(aViewerId, aParent, aStyle); } @Override protected void init() { super.init(); setLabelProvider(new DelegatingTooltipLabelProvider(getNavigatorContentService().createCommonLabelProvider())); setAutoExpandLevel(2); } }