JAL-3453 Some tests require different Desktop constructor
[jalview.git] / src / jalview / gui / Desktop.java
index 85ec3ae..91e1948 100644 (file)
@@ -231,18 +231,13 @@ public class Desktop extends GDesktop
    * just an instance (for testng, probably); no actual frames
    * 
    * This flag, when set true, allows a headless-like operation, with a Desktop
-   * object but no actual frames. The issue has to do with the mess-up of the
-   * Windows JInternalFrame implementation, which surreptitiously and
-   * unforgivingly accesses a native peer class, preventing headless operation.
+   * object but no actual frames. Though not headless, this option disallows
+   * dialogs to run in test environments.
    * 
-   * It is set by invoking the Desktop(true) constructor.
-   * 
-   * It is possible that we can remove this option now, since headless mode is
-   * finally working on Windows through careful attention to not creating any
-   * JInternalFrame objects when in that mode.
+   * It is set by invoking Desktop.getInstanceOnly().
    * 
    */
-  private boolean instanceOnly;
+  boolean instanceOnly;
 
   class MyDesktopManager implements DesktopManager
   {
@@ -384,19 +379,19 @@ public class Desktop extends GDesktop
   }
 
   /**
-   * For testing purposes, this constructor can be utilized to allow the creation 
-   * of a singleton Desktop instance without the formation of frames. The Cache is 
-   * initialized, but that is all. 
-   * 
-   * It is not currently used. 
+   * For TestNG, this constructor can be utilized to allow the creation of a
+   * singleton Desktop instance with the creation of frames, but no addition to
+   * the Desktop object, as in headless mode. Dialogs are not initiated.
+   * Cache.log is also initialized for some tests that require it despite there
+   * being no Desktop.
    * 
-   * @param forInstance
    */
-  public Desktop(boolean forInstance)
+  public static Desktop getInstanceOnly()
   {
-
-    Cache.initLogger();
-    instanceOnly = true;
+    Desktop d = (Desktop) ApplicationSingletonProvider
+            .getInstance(Desktop.class);
+    d.instanceOnly = true;
+    return d;
   }
   
   /**
@@ -932,7 +927,7 @@ public class Desktop extends GDesktop
     }
     // THIS IS A PUBLIC STATIC METHOD, SO IT MAY BE CALLED EVEN IN
     // A HEADLESS STATE WHEN NO DESKTOP EXISTS. MUST RETURN
-    // IF JALVIEW IS RUNNING HEADLESS
+    // IF JALVIEW IS RUNNING HEADLESS OR IN INSTANCE-ONLY (testNG) MODE
     // ///////////////////////////////////////////////
     if (Jalview.isHeadlessMode() || Desktop.getInstance().instanceOnly)
     {
@@ -3317,7 +3312,7 @@ public class Desktop extends GDesktop
           {
           }
         }
-        if (instanceOnly)
+        if (instanceOnly || Jalview.isHeadlessMode())
         {
           return;
         }