public static AvailableGUIAssemblies GetAvailableGUIAssembliesInstance()
 {
     if (_instance == null)
     {
         _instance = new AvailableGUIAssemblies();
     }
     return(_instance);
 }
        public static IGroupGUI GetGroupGUI(Type projectType, DataGridView grid, List <ISpectrum> spectra, GroupDefinition groupDefinition, GroupTabPage groupTabPage)
        {
            //find plugin with accurate project type
            AvailableGUIAssemblies assemblies = GetAvailableGUIAssembliesInstance();

            foreach (GUIDescription gd in assemblies._availableGUIs)
            {
                if (gd.projectType == projectType)
                {
                    return((IGroupGUI)PluginServices.getPluginInstance(gd.plugin, new object[] { grid, spectra, groupDefinition, groupTabPage }));
                }
            }

            //if there is no gui for this projectType use default gui
            return(new DefaultGroupGUI(grid, spectra, groupDefinition, groupTabPage));
        }