JAL-2944 open selected structures in existing or a new view, and by default offer...
[jalview.git] / src / jalview / gui / Desktop.java
index ad80ca5..4fd478b 100644 (file)
@@ -360,7 +360,8 @@ public class Desktop extends jalview.jbgui.GDesktop
             new MyDesktopManager(
                     (Platform.isWindows() ? new DefaultDesktopManager()
                             : Platform.isAMac()
-                                    ? new AquaInternalFrameManager()
+                                    ? new AquaInternalFrameManager(
+                                            desktop.getDesktopManager())
                                     : desktop.getDesktopManager())));
 
     Rectangle dims = getLastKnownDimensions("");
@@ -848,6 +849,7 @@ public class Desktop extends jalview.jbgui.GDesktop
     frame.setResizable(resizable);
     frame.setMaximizable(resizable);
     frame.setIconifiable(resizable);
+    frame.setOpaque(false);
 
     if (frame.getX() < 1 && frame.getY() < 1)
     {
@@ -868,6 +870,10 @@ public class Desktop extends jalview.jbgui.GDesktop
         JInternalFrame itf = desktop.getSelectedFrame();
         if (itf != null)
         {
+          if (itf instanceof AlignFrame)
+          {
+            Jalview.setCurrentAlignFrame((AlignFrame) itf);
+          }
           itf.requestFocus();
         }
       }
@@ -894,15 +900,7 @@ public class Desktop extends jalview.jbgui.GDesktop
           menuItem.removeActionListener(menuItem.getActionListeners()[0]);
         }
         windowMenu.remove(menuItem);
-        JInternalFrame itf = desktop.getSelectedFrame();
-        if (itf != null)
-        {
-          itf.requestFocus();
-          if (itf instanceof AlignFrame)
-          {
-            Jalview.setCurrentAlignFrame((AlignFrame) itf);
-          }
-        }
+
         System.gc();
       };
     });
@@ -2341,7 +2339,7 @@ public class Desktop extends jalview.jbgui.GDesktop
           {
             String link = li.next();
             if (link.contains(SEQUENCE_ID)
-                    && !link.equals(UrlConstants.DEFAULT_STRING))
+                    && !UrlConstants.isDefaultString(link))
             {
               check = true;
               int barPos = link.indexOf("|");
@@ -3401,4 +3399,29 @@ public class Desktop extends jalview.jbgui.GDesktop
   {
     Cache.setProperty(EXPERIMENTAL_FEATURES, Boolean.toString(selected));
   }
+
+  public List<StructureViewerBase> getStructureViewers(
+          AlignmentPanel apanel,
+          Class<? extends StructureViewerBase> structureViewerClass)
+  {
+    List<StructureViewerBase> result = new ArrayList<>();
+    JInternalFrame[] frames = Desktop.instance.getAllFrames();
+
+    for (JInternalFrame frame : frames)
+    {
+      if (frame instanceof StructureViewerBase)
+      {
+        if (structureViewerClass == null
+                || structureViewerClass.isInstance(frame))
+        {
+        if (apanel == null
+                || ((StructureViewerBase) frame).isLinkedWith(apanel))
+        {
+          result.add((StructureViewerBase) frame);
+        }
+        }
+      }
+    }
+    return result;
+  }
 }