package org.docear.plugin.pdfutilities.addons;
import java.io.File;
import java.util.HashSet;
import java.util.Set;
import net.xeoh.plugins.base.Plugin;
import net.xeoh.plugins.base.PluginManager;
import net.xeoh.plugins.base.impl.PluginManagerFactory;
import net.xeoh.plugins.base.options.addpluginsfrom.OptionReportAfter;
import org.freeplane.core.resources.ResourceController;
public class DocearAddonController {
private static DocearAddonController controller;
private PluginManager manager;
private Set<Class<? extends Plugin>> plugins;
public DocearAddonController(){
String userDir = ResourceController.getResourceController().getFreeplaneUserDirectory();
File addonsDir = new File(userDir + File.separatorChar + "addons");
manager = PluginManagerFactory.createPluginManager();
manager.addPluginsFrom(addonsDir.toURI(), new OptionReportAfter());
plugins = new HashSet<Class<? extends Plugin>>();
}
public <P extends Plugin> P getAddon(final Class<P> requestedPlugin){
return manager.getPlugin(requestedPlugin);
}
public boolean hasPlugin(final Class<? extends Plugin> requestedPlugin){
if(plugins.contains(requestedPlugin)){
return true;
}
else{
if(manager.getPlugin(requestedPlugin) != null){
plugins.add(requestedPlugin);
return true;
}
else{
return false;
}
}
}
public static DocearAddonController getController(){
if(controller == null){
controller = new DocearAddonController();
}
return controller;
}
}