Images.java
package com.codeaffine.extras.workingset.internal;
import static com.codeaffine.extras.workingset.internal.WorkingSetExtrasPlugin.PLUGIN_ID;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.Bundle;
public class Images {
public static final String NEW_WORKING_SET = "icons/etool16/new-working-set.gif";
public static final String WORKING_SET = "icons/obj16/working-set.png";
public static final String WORKING_SET_WIZBAN = "icons/wizban/working-set.png";
public static ImageDescriptor getImageDescriptor( String name ) {
ImageDescriptor result = null;
ImageRegistry imageRegistry = getImageRegistry();
if( imageRegistry != null ) {
result = imageRegistry.getDescriptor( name );
}
return result;
}
static void registerImages( ImageRegistry registry ) {
Field[] declaredFields = Images.class.getDeclaredFields();
for( Field field : declaredFields ) {
if( isStringConstant( field ) ) {
registerImage( registry, getStringValue( field ) );
}
}
}
private static void registerImage( ImageRegistry registry, String imageName ) {
ImageDescriptor imageDescriptor = AbstractUIPlugin.imageDescriptorFromPlugin( PLUGIN_ID, imageName );
registry.put( imageName, imageDescriptor );
}
private static ImageRegistry getImageRegistry() {
ImageRegistry result = null;
WorkingSetExtrasPlugin pluginInstance = WorkingSetExtrasPlugin.getInstance();
if( pluginInstance != null && pluginInstance.getBundle().getState() == Bundle.ACTIVE ) {
result = pluginInstance.getImageRegistry();
}
return result;
}
private static String getStringValue( Field field ) {
try {
return ( String )field.get( null );
} catch( IllegalAccessException iae ) {
throw new RuntimeException( iae );
}
}
private static boolean isStringConstant( Field field ) {
int modifiers = field.getModifiers();
Class<?> type = field.getType();
return Modifier.isFinal( modifiers ) && Modifier.isStatic( modifiers ) && type == String.class;
}
private Images() { }
}