/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.sdkuilib.internal.repository.ui; import org.eclipse.jface.viewers.CellLabelProvider; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.TreeColumnViewerLabelProvider; import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.TreeViewerColumn; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; /** * A custom version of {@link TreeColumnViewerLabelProvider} which * handles {@link TreePath}s and delegates content to the given * {@link ColumnLabelProvider} for a given {@link TreeViewerColumn}. * <p/> * The implementation handles a variety of providers (table label, table * color, table font) but does not implement a tooltip provider, so we * delegate the calls here to the appropriate {@link ColumnLabelProvider}. * <p/> * Only {@link #getToolTipText(Object)} is really useful for us but we * delegate all the tooltip calls for completeness and avoid surprises later * if we ever decide to override more things in the label provider. */ class PkgTreeColumnViewerLabelProvider extends TreeColumnViewerLabelProvider { private CellLabelProvider mTooltipProvider; public PkgTreeColumnViewerLabelProvider(ColumnLabelProvider columnLabelProvider) { super(columnLabelProvider); } @Override public void setProviders(Object provider) { super.setProviders(provider); if (provider instanceof CellLabelProvider) { mTooltipProvider = (CellLabelProvider) provider; } } @Override public Image getToolTipImage(Object object) { if (mTooltipProvider != null) { return mTooltipProvider.getToolTipImage(object); } return super.getToolTipImage(object); } @Override public String getToolTipText(Object element) { if (mTooltipProvider != null) { return mTooltipProvider.getToolTipText(element); } return super.getToolTipText(element); } @Override public Color getToolTipBackgroundColor(Object object) { if (mTooltipProvider != null) { return mTooltipProvider.getToolTipBackgroundColor(object); } return super.getToolTipBackgroundColor(object); } @Override public Color getToolTipForegroundColor(Object object) { if (mTooltipProvider != null) { return mTooltipProvider.getToolTipForegroundColor(object); } return super.getToolTipForegroundColor(object); } @Override public Font getToolTipFont(Object object) { if (mTooltipProvider != null) { return mTooltipProvider.getToolTipFont(object); } return super.getToolTipFont(object); } @Override public Point getToolTipShift(Object object) { if (mTooltipProvider != null) { return mTooltipProvider.getToolTipShift(object); } return super.getToolTipShift(object); } @Override public boolean useNativeToolTip(Object object) { if (mTooltipProvider != null) { return mTooltipProvider.useNativeToolTip(object); } return super.useNativeToolTip(object); } @Override public int getToolTipTimeDisplayed(Object object) { if (mTooltipProvider != null) { return mTooltipProvider.getToolTipTimeDisplayed(object); } return super.getToolTipTimeDisplayed(object); } @Override public int getToolTipDisplayDelayTime(Object object) { if (mTooltipProvider != null) { return mTooltipProvider.getToolTipDisplayDelayTime(object); } return super.getToolTipDisplayDelayTime(object); } @Override public int getToolTipStyle(Object object) { if (mTooltipProvider != null) { return mTooltipProvider.getToolTipStyle(object); } return super.getToolTipStyle(object); } }