package org.herac.tuxguitar.gui.system.plugins.base;
import org.herac.tuxguitar.gui.system.plugins.TGPluginException;
import org.herac.tuxguitar.gui.tools.browser.TGBrowserManager;
import org.herac.tuxguitar.gui.tools.browser.base.TGBrowserFactory;
public abstract class TGBrowserPlugin extends TGPluginAdapter {
private TGBrowserFactory factory;
private boolean loaded;
protected void addPlugin() throws TGPluginException {
if (!this.loaded) {
TGBrowserManager.instance().addFactory(this.factory);
this.loaded = true;
}
}
public void close() throws TGPluginException {
this.loaded = false;
}
protected abstract TGBrowserFactory getFactory() throws TGPluginException;
public void init() throws TGPluginException {
this.factory = getFactory();
this.loaded = false;
}
protected void removePlugin() throws TGPluginException {
if (this.loaded) {
TGBrowserManager.instance().removeFactory(this.factory);
this.loaded = false;
}
}
public void setEnabled(boolean enabled) throws TGPluginException {
if (enabled) {
addPlugin();
} else {
removePlugin();
}
}
}