// Copyright (c) 2009-2010 by the projectusus.org contributors
// This software is released under the terms and conditions
// of the Eclipse Public License (EPL) 1.0.
// See http://www.eclipse.org/legal/epl-v10.html for details.
package org.projectusus.ui.colors;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.osgi.framework.Bundle;
import org.projectusus.core.util.Defect;
import org.projectusus.ui.internal.UsusUIPlugin;
public class UsusUIImages implements ISharedUsusImages {
private static URL baseUrl;
private static final ISharedUsusImages _instance = new UsusUIImages();
private ImageRegistry imageRegistry;
static {
String pathPrefix = "icons/full/"; //$NON-NLS-1$
try {
Bundle bundle = UsusUIPlugin.getDefault().getBundle();
baseUrl = new URL( bundle.getEntry( "/" ), pathPrefix ); //$NON-NLS-1$
} catch( MalformedURLException malfux ) {
throw new Defect( malfux );
}
}
private final static String OBJECT = "obj16/"; // basic colors - size 16x16 //$NON-NLS-1$
private final static String VIEW = "eview16/"; // basic colors - size 16x16 //$NON-NLS-1$
private UsusUIImages() {
// no instantiation
}
public static ISharedUsusImages getSharedImages() {
return _instance;
}
public Image getImage( String key ) {
return getImageRegistry().get( key );
}
public ImageDescriptor getDescriptor( String key ) {
return getImageRegistry().getDescriptor( key );
}
private void declareImages() {
declare( OBJ_CODE_PROPORTIONS, OBJECT + "codeproportions.gif" ); //$NON-NLS-1$
declare( OBJ_INFO, OBJECT + "info.gif" ); //$NON-NLS-1$
declare( OBJ_WARNINGS, OBJECT + "warnings.gif" ); //$NON-NLS-1$
declare( VIEW_WARNING, VIEW + "warning.gif" ); //$NON-NLS-1$
declare( OBJ_LEVELUP, OBJECT + "levelup.gif" ); //$NON-NLS-1$
declare( OBJ_LEVELDOWN, OBJECT + "leveldown.gif" ); //$NON-NLS-1$
declare( OBJ_NEW, OBJECT + "new.gif" ); //$NON-NLS-1$
declare( OBJ_DELETED, OBJECT + "deleted.gif" ); //$NON-NLS-1$
}
private void declare( final String key, final String path ) {
ImageDescriptor desc = ImageDescriptor.getMissingImageDescriptor();
try {
desc = ImageDescriptor.createFromURL( makeIconFileURL( path ) );
} catch( MalformedURLException malfux ) {
UsusUIPlugin.getDefault().log( malfux );
}
imageRegistry.put( key, desc );
}
private ImageRegistry getImageRegistry() {
if( imageRegistry == null ) {
initializeImageRegistry();
}
return imageRegistry;
}
private ImageRegistry initializeImageRegistry() {
imageRegistry = new ImageRegistry( Display.getDefault() );
declareImages();
return imageRegistry;
}
private URL makeIconFileURL( final String iconPath ) throws MalformedURLException {
if( baseUrl == null ) {
throw new MalformedURLException();
}
return new URL( baseUrl, iconPath );
}
public Image getTrendImage( int trend ) {
if( trend == 0 ) {
return null;
}
return getImage( trend > 0 ? OBJ_LEVELDOWN : OBJ_LEVELUP );
}
public Image getTrendImage( int oldMetricsValue, int currentMetricsValue ) {
if( oldMetricsValue == 0 ) {
return getImage( OBJ_NEW );
}
if( currentMetricsValue == 0 ) {
return getImage( OBJ_DELETED );
}
if( oldMetricsValue == currentMetricsValue ) {
return null;
}
return getImage( currentMetricsValue > oldMetricsValue ? OBJ_LEVELDOWN : OBJ_LEVELUP );
}
}