LaunchExtrasPlugin.java
package com.codeaffine.extras.launch.internal;
import java.io.File;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
import com.codeaffine.extras.launch.internal.cleanup.LaunchConfigCleaner;
import com.codeaffine.extras.launch.internal.cleanup.LaunchConfigCleanerState;
public class LaunchExtrasPlugin extends AbstractUIPlugin {
public static final String PLUGIN_ID = "com.codeaffine.extras.launch";
public static LaunchExtrasPlugin getInstance() {
return instance;
}
private static LaunchExtrasPlugin instance;
private final LaunchConfigCleaner launchConfigCleaner;
public LaunchExtrasPlugin() {
launchConfigCleaner = new LaunchConfigCleaner();
}
@Override
public void start( BundleContext context ) throws Exception {
super.start( context );
instance = this;
installLaunchConfigCleaner();
}
@Override
public void stop( BundleContext context ) throws Exception {
uninstallLaunchConfigCleaner();
super.stop( context );
instance = null;
}
@Override
protected void initializeImageRegistry( ImageRegistry registry ) {
Images.registerImages( registry );
}
private void installLaunchConfigCleaner() {
launchConfigCleaner.install();
if( hasStateLocation() ) {
launchConfigCleaner.restoreState( getLaunchConfigCleanerStateFile() );
}
}
private void uninstallLaunchConfigCleaner() {
if( hasStateLocation() ) {
launchConfigCleaner.saveState( getLaunchConfigCleanerStateFile() );
}
launchConfigCleaner.uninstall();
}
private File getLaunchConfigCleanerStateFile() {
return getStateLocation().append( LaunchConfigCleanerState.DEFAULT_FILE_NAME ).toFile();
}
private boolean hasStateLocation() {
try {
return getLaunchConfigCleanerStateFile() != null;
} catch( IllegalStateException noStateLocation ) {
return false;
}
}
}