// Copyright (c) 2003-2005 by Leif Frenzel - see http://leiffrenzel.de package net.sf.eclipsefp.haskell.ui.properties; import net.sf.eclipsefp.haskell.buildwrapper.types.CabalPackage; import net.sf.eclipsefp.haskell.core.cabal.CabalPackageRef; import net.sf.eclipsefp.haskell.core.cabal.CabalPackageVersion; import net.sf.eclipsefp.haskell.ui.util.HaskellUIImages; import net.sf.eclipsefp.haskell.ui.util.IImageNames; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.DecorationOverlayIcon; import org.eclipse.jface.viewers.IDecoration; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; /** <p>the label provider for ImportLibraries on the viewer.</p> * * @author Leif Frenzel */ public class ImportLibrariesLabelProvider extends LabelProvider { private boolean showInstalled=false; //private ImageDescriptor installedOverlay; private final Image installedPackage; private final Image installedHiddenPackage; // interface methods of LabelProvider ///////////////////////////////////// public ImportLibrariesLabelProvider() { super(); ImageDescriptor installedOverlay=HaskellUIImages.getImageDescriptor( IImageNames.SUCCESS_OVERLAY ); installedPackage=new DecorationOverlayIcon( HaskellUIImages.getImage( IImageNames.PACKAGE ), installedOverlay , IDecoration.TOP_LEFT).createImage(); installedHiddenPackage=new DecorationOverlayIcon( HaskellUIImages.getImage( IImageNames.HIDDEN_PACKAGE ), installedOverlay , IDecoration.TOP_LEFT).createImage(); } @Override public Image getImage( final Object element ) { if (element instanceof CabalPackage){ CabalPackage pkg = ( CabalPackage )element; String key=pkg.isExposed()?IImageNames.PACKAGE: IImageNames.HIDDEN_PACKAGE; return HaskellUIImages.getImage( key ); } else if (element instanceof CabalPackageRef){ CabalPackageRef ref=(CabalPackageRef)element; if (showInstalled && ref.isInstalled()){ return installedPackage; } return HaskellUIImages.getImage( IImageNames.PACKAGE ); } else if (element instanceof CabalPackageVersion){ CabalPackageVersion v=(CabalPackageVersion)element; if (showInstalled && v.isInstalled()){ return v.isLast()?installedPackage: installedHiddenPackage; } String key=v.isLast()?IImageNames.PACKAGE: IImageNames.HIDDEN_PACKAGE; return HaskellUIImages.getImage( key ); } return HaskellUIImages.getImage( IImageNames.PACKAGE ); } /* (non-Javadoc) * @see org.eclipse.jface.viewers.BaseLabelProvider#dispose() */ @Override public void dispose() { installedPackage.dispose(); installedHiddenPackage.dispose(); super.dispose(); } // specific methods public boolean isShowInstalled() { return showInstalled; } public void setShowInstalled( final boolean showInstalled ) { this.showInstalled = showInstalled; } }