Merge branch 'Release_2_8_0b1_Branch' into try_r20b1_merge
[jalview.git] / src / jalview / structure / StructureSelectionManager.java
index 5a9e382..bbee3b7 100644 (file)
@@ -54,13 +54,25 @@ public class StructureSelectionManager
   }
 
   Hashtable mappingData = new Hashtable();
-
+  private static StructureSelectionManager nullProvider = null;
   public static StructureSelectionManager getStructureSelectionManager(
           StructureSelectionManagerProvider context)
   {
-    if (context==null)
-    {
-      throw new Error("Implementation error. Structure selection manager's context is 'null'", new NullPointerException("SSM context is null"));
+    if (context==null) { 
+      if (nullProvider == null)
+      {
+        if (instances != null)
+        {
+          throw new Error(
+                  "Implementation error. Structure selection manager's context is 'null'",
+                  new NullPointerException("SSM context is null"));
+        }
+        else
+        {
+          nullProvider = new StructureSelectionManager();
+        }
+        return nullProvider;
+      }
     }
     if (instances == null)
     {
@@ -69,7 +81,13 @@ public class StructureSelectionManager
     StructureSelectionManager instance = instances.get(context);
     if (instance == null)
     {
-      instances.put(context, instance = new StructureSelectionManager());
+      if (nullProvider!=null)
+      {
+        instance = nullProvider;
+      } else {
+        instance = new StructureSelectionManager();
+      }
+      instances.put(context, instance);
     }
     return instance;
   }