package se.cambio.cds.gdl.editor.controller.panelplugins;
import org.apache.log4j.Logger;
import se.cambio.cds.gdl.editor.util.GDLEditorConfigurationParametersManager;
import se.cambio.cds.view.swing.panel.AbstractPluginPanel;
import se.cambio.openehr.util.ExceptionHandler;
import se.cambio.openehr.util.exceptions.MissingConfigurationParameterException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
/**
* User: Iago.Corbal
* Date: 2014-07-02
* Time: 11:22
*/
public class GDLEditorPluginPanelManager {
private static GDLEditorPluginPanelManager _instance;
private Map<String, AbstractPluginPanel> pluginPanelMap = null;
private GDLEditorPluginPanelManager(){
String gdlEditorPlugins = null;
pluginPanelMap = new HashMap<String, AbstractPluginPanel>();
try {
gdlEditorPlugins = GDLEditorConfigurationParametersManager.getParameter(GDLEditorConfigurationParametersManager.GDL_PLUGINS_KEY);
} catch (MissingConfigurationParameterException e) {
Logger.getLogger(GDLEditorPluginPanelManager.class).info("No gdl editor plugins found.");
}
if (gdlEditorPlugins!=null && !gdlEditorPlugins.trim().isEmpty()){
try{
String[] gdlEditorPluginsClasses = gdlEditorPlugins.split(",");
for(String gdlEditorPluginClass: gdlEditorPluginsClasses){
gdlEditorPluginClass = gdlEditorPluginClass.trim();
Class pluginClass = Class.forName(gdlEditorPluginClass);
AbstractPluginPanel abstractPluginPanel = (AbstractPluginPanel)pluginClass.newInstance();
pluginPanelMap.put(gdlEditorPluginClass, abstractPluginPanel);
}
}catch(Exception e){
ExceptionHandler.handle(e);
}
}
}
public static Collection<AbstractPluginPanel> getPluginPanels(){
return getDelegate().pluginPanelMap.values();
}
public static GDLEditorPluginPanelManager getDelegate(){
if (_instance == null) {
_instance = new GDLEditorPluginPanelManager();
}
return _instance;
}
}