/****************************************************************************** * Copyright (c) 2010-2013, Linagora * * 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 * * Contributors: * Linagora - initial API and implementation *******************************************************************************/ package com.ebmwebsourcing.petals.services.eip.designer; import java.util.HashMap; import java.util.Map; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.graphics.Image; import com.ebmwebsourcing.petals.services.eip.PetalsEipPlugin; import com.ebmwebsourcing.petals.services.eip.designer.model.EIPtype; /** * A utility class to store images. * @author Vincent Zurczak - EBM WebSourcing */ public final class EipDesignerImageStore { /** * The instance of this class. */ public static final EipDesignerImageStore INSTANCE = new EipDesignerImageStore(); /** * The EIP images (enabled). */ private final Map<EIPtype,Image> enabledEipToImage = new HashMap<EIPtype,Image> (); /** * The EIP images (disabled). */ private final Map<EIPtype,Image> disabledEipToImage = new HashMap<EIPtype,Image> (); /** * The end-point image. */ private Image enabledEdptImage, disabledEdptImage; /** * The 16x16 image that represents an EIP chain. */ private Image eip_16x16_image; /** * The icon that represents an error. */ private Image errorIcon; private Image warningIcon; /** * Tooling images. */ private Image docImage, exportImage; /** * Constructor. * <p> * It is in charge of creating the images. * </p> */ private EipDesignerImageStore() { // Create the EIP images for( EIPtype type : EIPtype.values()) { String path = "icons/obj64/d_" + type.toString().toLowerCase() + "_64x64.png"; try { ImageDescriptor desc = PetalsEipPlugin.getImageDescriptor( path ); this.disabledEipToImage.put( type, desc.createImage()); path = "icons/obj64/e_" + type.toString().toLowerCase() + "_64x64.png"; desc = PetalsEipPlugin.getImageDescriptor( path ); this.enabledEipToImage.put( type, desc.createImage()); } catch( Exception e ) { PetalsEipPlugin.log( "The image " + path + " could not be found.", IStatus.WARNING ); } } // Create the end-point image String path = "icons/obj32/d_endpoint_32x32.png"; try { ImageDescriptor desc = PetalsEipPlugin.getImageDescriptor( path ); this.disabledEdptImage = desc.createImage(); path = "icons/obj32/e_endpoint_32x32.png"; desc = PetalsEipPlugin.getImageDescriptor( path ); this.enabledEdptImage = desc.createImage(); } catch( Exception e ) { PetalsEipPlugin.log( "The image " + path + " could not be found.", IStatus.WARNING ); } // Create the 16x16 image path = "icons/obj16/eip_1_16x16.png"; try { ImageDescriptor desc = PetalsEipPlugin.getImageDescriptor( path ); this.eip_16x16_image = desc.createImage(); } catch( Exception e ) { PetalsEipPlugin.log( "The image " + path + " could not be found.", IStatus.WARNING ); } // Create the other images path = "icons/obj16/documentation.gif"; try { ImageDescriptor desc = PetalsEipPlugin.getImageDescriptor( path ); this.docImage = desc.createImage(); } catch( Exception e ) { PetalsEipPlugin.log( "The image " + path + " could not be found.", IStatus.WARNING ); } path = "icons/obj16/export.gif"; try { ImageDescriptor desc = PetalsEipPlugin.getImageDescriptor( path ); this.exportImage = desc.createImage(); } catch( Exception e ) { PetalsEipPlugin.log( "The image " + path + " could not be found.", IStatus.WARNING ); } path = "icons/obj16/error.gif"; try { ImageDescriptor desc = PetalsEipPlugin.getImageDescriptor( path ); this.errorIcon = desc.createImage(); } catch( Exception e ) { PetalsEipPlugin.log( "The image " + path + " could not be found.", IStatus.WARNING ); } path = "icons/obj16/warning.gif"; try { ImageDescriptor desc = PetalsEipPlugin.getImageDescriptor( path ); this.warningIcon = desc.createImage(); } catch( Exception e ) { PetalsEipPlugin.log( "The image " + path + " could not be found.", IStatus.WARNING ); } } /** * Initializes the image store. */ public void initialize() { // nothing } /** * @return the errorIcon */ public Image getErrorIcon() { return this.errorIcon; } public Image getWarningIcon() { return this.warningIcon; } /** * @param eipType the EIP type * @param enabled true to get the enabled image * @return the associated image (can be null) */ public Image getEipImage( EIPtype eipType, boolean enabled ) { if( enabled ) return this.enabledEipToImage.get( eipType ); else return this.disabledEipToImage.get( eipType ); } /** * @param eipType the EIP type * @return the associated image (can be null) */ public ImageDescriptor getDefaultEipImageDescriptor( EIPtype eipType ) { ImageDescriptor desc = null; String path = "icons/obj64/d_" + eipType.toString().toLowerCase() + "_64x64.png"; try { desc = PetalsEipPlugin.getImageDescriptor( path ); } catch( Exception e ) { PetalsEipPlugin.log( "The image " + path + " could not be found.", IStatus.WARNING ); } return desc; } /** * @return the eip_16x16_image (can be null) */ public Image getEip_16x16_image() { return this.eip_16x16_image; } /** * @param enabled * @return the edptImage */ public Image getEdptImage( boolean enabled ) { return enabled ? this.enabledEdptImage : this.disabledEdptImage; } /** * @return the docImage */ public Image getDocImage() { return this.docImage; } /** * @return the exportImage */ public Image getExportImage() { return this.exportImage; } /** * Disposes all the images. */ public void dispose() { // The EIP images for( Image img : this.enabledEipToImage.values()) { if( img != null && ! img.isDisposed()) img.dispose(); } for( Image img : this.disabledEipToImage.values()) { if( img != null && ! img.isDisposed()) img.dispose(); } this.enabledEipToImage.clear(); this.disabledEipToImage.clear(); // The end-point images if( this.enabledEdptImage != null && ! this.enabledEdptImage.isDisposed()) this.enabledEdptImage.dispose(); this.enabledEdptImage = null; if( this.disabledEdptImage != null && ! this.disabledEdptImage.isDisposed()) this.disabledEdptImage.dispose(); this.disabledEdptImage = null; // The 16x16 image if( this.eip_16x16_image != null && ! this.eip_16x16_image.isDisposed()) this.eip_16x16_image.dispose(); this.eip_16x16_image = null; // Other images if( this.docImage != null && ! this.docImage.isDisposed()) this.docImage.dispose(); this.docImage = null; if( this.exportImage != null && ! this.exportImage.isDisposed()) this.exportImage.dispose(); this.exportImage = null; if( this.errorIcon != null && ! this.errorIcon.isDisposed()) this.errorIcon.dispose(); this.errorIcon = null; } /* * (non-Javadoc) * @see java.lang.Object * #finalize() */ @Override protected void finalize() throws Throwable { // Dispose resources (in case of Eclipse crash) try { dispose(); } catch( Exception e ) { // nothing } // Call to super super.finalize(); } }