/******************************************************************************* * 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.ide.sdr.ui.navigator; import java.io.File; import java.net.URISyntaxException; import org.eclipse.core.filesystem.EFS; import org.eclipse.core.filesystem.IFileStore; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.edit.provider.IItemLabelProvider; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.resource.JFaceResources; 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.ui.IMemento; import org.eclipse.ui.navigator.ICommonContentExtensionSite; import org.eclipse.ui.navigator.ICommonLabelProvider; import org.eclipse.ui.navigator.IDescriptionProvider; import gov.redhawk.ide.sdr.SdrRoot; import gov.redhawk.ide.sdr.ui.SdrLabelProvider; import gov.redhawk.ide.sdr.ui.SdrUiPlugin; import gov.redhawk.sca.efs.WrappedFileStore; import gov.redhawk.sca.ui.ITooltipProvider; /** * @since 4.2 */ public class SdrNavigatorLabelProvider extends SdrLabelProvider implements IDescriptionProvider, ICommonLabelProvider, ITooltipProvider { @Override public String getDescription(final Object anElement) { if (anElement instanceof EObject) { final EObject eObj = (EObject) anElement; final IItemLabelProvider provider = (IItemLabelProvider) getAdapterFactory().adapt(eObj, IItemLabelProvider.class); return provider.getText(anElement); } return null; } @Override public void restoreState(final IMemento aMemento) { } @Override public void saveState(final IMemento aMemento) { } @Override public void init(final ICommonContentExtensionSite aConfig) { } @Override public Image getToolTipImage(final Object object) { if (object instanceof SdrRoot) { final SdrRoot root = (SdrRoot) object; final IStatus status = root.getLoadStatus(); if (status != null && !status.isOK()) { switch (status.getSeverity()) { case IStatus.INFO: return JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_INFO); case IStatus.WARNING: return JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_WARNING); case IStatus.ERROR: return JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_ERROR); default: return null; } } } return null; } @Override public String getToolTipText(final Object element) { if (element instanceof SdrRoot) { final SdrRoot root = (SdrRoot) element; final IStatus status = root.getLoadStatus(); if (status != null && !status.isOK()) { if (status.isMultiStatus()) { final IStatus[] children = status.getChildren(); if (children.length == 1) { return children[0].getMessage(); } } return status.getMessage(); } } else if (element instanceof EObject) { final EObject object = (EObject) element; IFileStore store = null; if (object.eResource() != null) { try { store = EFS.getStore(new java.net.URI(object.eResource().getURI().toString())); } catch (final CoreException e) { SdrUiPlugin.getDefault().logError("Unable to get file store for resource."); } catch (final URISyntaxException e) { SdrUiPlugin.getDefault().logError("Unable to resolve file store for resource."); } } store = WrappedFileStore.unwrap(store); if (store != null) { try { final File localFile = store.toLocalFile(0, new NullProgressMonitor()); if (localFile != null) { final String filePath = localFile.toURI().getPath(); if (filePath != null) { return filePath; } } } catch (final CoreException e) { SdrUiPlugin.getDefault().logError("Unable to get path for file store: " + store, e); } } } return null; } @Override public Color getToolTipBackgroundColor(final Object object) { return null; } @Override public Color getToolTipForegroundColor(final Object object) { return null; } @Override public Font getToolTipFont(final Object object) { return null; } @Override public Point getToolTipShift(final Object object) { return new Point(5, 5); // SUPPRESS CHECKSTYLE MagicNumber } @Override public boolean useNativeToolTip(final Object object) { return false; } @Override public int getToolTipTimeDisplayed(final Object object) { return 5000; // SUPPRESS CHECKSTYLE MagicNumber } @Override public int getToolTipDisplayDelayTime(final Object object) { return 0; } @Override public int getToolTipStyle(final Object object) { return 0; } }