| /* |
| * 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.motorolamobility.studio.android.db.core.ui.tree; |
| |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.jface.viewers.CellLabelProvider; |
| import org.eclipse.jface.viewers.ILabelProviderListener; |
| import org.eclipse.jface.viewers.ViewerCell; |
| import org.eclipse.osgi.util.NLS; |
| import org.eclipse.swt.graphics.Image; |
| import org.eclipse.swt.graphics.Point; |
| import org.eclipse.ui.IDecoratorManager; |
| import org.eclipse.ui.PlatformUI; |
| |
| import com.motorolamobility.studio.android.db.core.i18n.DbCoreNLS; |
| import com.motorolamobility.studio.android.db.core.ui.AbstractTreeNode; |
| import com.motorolamobility.studio.android.db.core.ui.ITreeNode; |
| import com.motorolamobility.studio.android.db.core.ui.view.MOTODEVDatabaseExplorerView; |
| |
| /** |
| * Provides label for the tree into {@link MOTODEVDatabaseExplorerView} by encapsulating {@link AbstractTreeNode} |
| */ |
| public class DatabaseExplorerTreeLabelProvider extends CellLabelProvider |
| { |
| final IDecoratorManager decorator; |
| |
| public enum LabelProperty |
| { |
| TEXT, IMAGE; |
| } |
| |
| public DatabaseExplorerTreeLabelProvider() |
| { |
| decorator = PlatformUI.getWorkbench().getDecoratorManager(); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jface.viewers.BaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener) |
| */ |
| @Override |
| public void addListener(ILabelProviderListener listener) |
| { |
| decorator.addListener(listener); |
| super.addListener(listener); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jface.viewers.BaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener) |
| */ |
| @Override |
| public void removeListener(ILabelProviderListener listener) |
| { |
| decorator.removeListener(listener); |
| super.removeListener(listener); |
| } |
| |
| public Image getImage(Object element) |
| { |
| Image result = null; |
| if (element instanceof AbstractTreeNode) |
| { |
| ITreeNode treeNode = (ITreeNode) element; |
| Image defaultImage = treeNode.getIcon().createImage(); |
| result = decorator.decorateImage(defaultImage, element); |
| if (result == null) |
| { |
| result = defaultImage; |
| } |
| } |
| |
| return result; |
| } |
| |
| public String getText(Object element) |
| { |
| if (element instanceof AbstractTreeNode) |
| { |
| ITreeNode treeNode = (ITreeNode) element; |
| return treeNode.getName(); |
| } |
| return null; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jface.viewers.BaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String) |
| */ |
| @Override |
| public boolean isLabelProperty(Object element, String property) |
| { |
| boolean isLabelProperty = false; |
| LabelProperty labelProperty = LabelProperty.valueOf(property); |
| if (labelProperty != null) |
| { |
| isLabelProperty = true; |
| } |
| |
| return isLabelProperty; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jface.viewers.CellLabelProvider#getToolTipText(java.lang.Object) |
| */ |
| @Override |
| public String getToolTipText(Object element) |
| { |
| if (element instanceof ITreeNode) |
| { |
| ITreeNode treeNode = (ITreeNode) element; |
| String tooltipText = treeNode.getTooltip(); |
| IStatus nodeStatus = treeNode.getNodeStatus(); |
| if ((nodeStatus != null) && !nodeStatus.isOK()) |
| { |
| String statusMessage = nodeStatus.getMessage(); |
| if ((statusMessage != null) && !statusMessage.isEmpty()) |
| { |
| tooltipText = |
| NLS.bind( |
| DbCoreNLS.DatabaseExplorerTreeLabelProvider_Error_Tooltip_Prefix, |
| statusMessage); |
| } |
| } |
| return tooltipText; |
| } |
| return super.getToolTipText(element); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jface.viewers.CellLabelProvider#getToolTipTimeDisplayed(java.lang.Object) |
| */ |
| @Override |
| public int getToolTipTimeDisplayed(Object object) |
| { |
| return 4000; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * @see org.eclipse.jface.viewers.CellLabelProvider#getToolTipDisplayDelayTime(java.lang.Object) |
| */ |
| @Override |
| public int getToolTipDisplayDelayTime(Object object) |
| { |
| return 500; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jface.viewers.CellLabelProvider#getToolTipShift(java.lang.Object) |
| */ |
| @Override |
| public Point getToolTipShift(Object object) |
| { |
| return new Point(5, 5); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.jface.viewers.CellLabelProvider#update(org.eclipse.jface.viewers.ViewerCell) |
| */ |
| @Override |
| public void update(ViewerCell cell) |
| { |
| Object cellElement = cell.getElement(); |
| cell.setText(getText(cellElement)); |
| cell.setImage(getImage(cellElement)); |
| } |
| |
| } |