package org.oddjob.monitor.action;
import javax.swing.KeyStroke;
import org.oddjob.Loadable;
import org.oddjob.monitor.Standards;
import org.oddjob.monitor.context.ExplorerContext;
import org.oddjob.monitor.model.JobAction;
import org.oddjob.util.ThreadManager;
/**
* An action that loads {@link Loadable}s.
*
* @author Rob Gordon
*/
public class UnloadAction extends JobAction {
/** The job */
private Loadable job = null;
/** The ThreadManager that will run the job. */
private ThreadManager threadManager;
/*
* (non-Javadoc)
* @see org.oddjob.monitor.model.JobOption#getName()
*/
public String getName() {
return "Unload";
}
public String getGroup() {
return JOB_GROUP;
}
public Integer getMnemonicKey() {
return Standards.UNLOAD_MNEMONIC_KEY;
}
public KeyStroke getAcceleratorKey() {
return Standards.UNLOAD_ACCELERATOR_KEY;
}
@Override
protected void doPrepare(ExplorerContext explorerContext) {
Object component = explorerContext.getThisComponent();
if (component instanceof Loadable) {
this.job = (Loadable) component;
this.threadManager = explorerContext.getThreadManager();
setEnabled(!this.job.isLoadable());
setVisible(true);
}
else {
setEnabled(false);
setVisible(false);
}
}
@Override
protected void doFree(ExplorerContext explorerContext) {
job = null;
threadManager = null;
}
@Override
protected void doAction() throws Exception {
Runnable runnable = new Runnable() {
public void run() {
job.unload();
}
};
threadManager.run(runnable, "Unloading " + job);
}
}