Images.java
package com.codeaffine.extras.launch.internal;
import static com.codeaffine.extras.launch.internal.LaunchExtrasPlugin.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 RUNNING = "icons/ovr/running.gif";
public static final String TERMINATE_ALL = "icons/etool16/terminate-all.png";
public static final String START_LAUNCH_CONFIGURATION = "icons/etool16/start-launch-configuration.gif";
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;
LaunchExtrasPlugin pluginInstance = LaunchExtrasPlugin.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() { }
}