Colour is a panel, not button
[jalview.git] / src / jalview / gui / Desktop.java
index eb62972..af96ee8 100755 (executable)
@@ -136,7 +136,7 @@ public class Desktop extends jalview.jbgui.GDesktop
         VamsasMenu.setVisible(true);
         vamsasLoad.setVisible(true);
       }
-      
+
     }
 
     /**
@@ -551,6 +551,73 @@ public class Desktop extends jalview.jbgui.GDesktop
         }
     }
 
+    public void closeAll_actionPerformed(ActionEvent e)
+    {
+      JInternalFrame [] frames = desktop.getAllFrames();
+      for(int i=0; i<frames.length; i++)
+      {
+        try{
+        frames[i].setClosed(true);
+      }catch(java.beans.PropertyVetoException ex){}
+      }
+    }
+
+    public void raiseRelated_actionPerformed(ActionEvent e)
+    {
+      reorderAssociatedWindows(false);
+    }
+
+    public void minimizeAssociated_actionPerformed(ActionEvent e)
+    {
+      reorderAssociatedWindows(true);
+    }
+
+    void reorderAssociatedWindows(boolean minimize)
+    {
+      JInternalFrame[] frames = desktop.getAllFrames();
+      if (frames == null || frames.length<1)
+        return;
+
+      AlignViewport source = null, target = null;
+      if (frames[0] instanceof AlignFrame)
+        source = ( (AlignFrame) frames[0]).getCurrentView();
+      else if (frames[0] instanceof TreePanel)
+        source = ( (TreePanel) frames[0]).getViewPort();
+      else if (frames[0] instanceof PCAPanel)
+        source = ( (PCAPanel) frames[0]).av;
+      else if (frames[0].getContentPane() instanceof PairwiseAlignPanel)
+        source = ((PairwiseAlignPanel)frames[0].getContentPane()).av;
+
+
+      if (source != null)
+        for (int i = 0; i < frames.length; i++)
+        {
+          target = null;
+          if (frames[i] instanceof AlignFrame)
+            target = ( (AlignFrame) frames[i]).getCurrentView();
+          else if (frames[i] instanceof TreePanel)
+            target = ( (TreePanel) frames[i]).getViewPort();
+          else if (frames[i] instanceof PCAPanel)
+            target = ( (PCAPanel) frames[i]).av;
+          else if (frames[i].getContentPane() instanceof PairwiseAlignPanel)
+            target = ( (PairwiseAlignPanel) frames[i].getContentPane()).av;
+
+          if (source == target)
+          {
+            if(!minimize)
+              frames[i].toFront();
+            try
+            {
+              frames[i].setIcon(minimize);
+            }
+            catch (java.beans.PropertyVetoException ex)
+            {}
+          }
+        }
+    }
+
+
+
     /**
      * DOCUMENT ME!
      *
@@ -699,7 +766,6 @@ public class Desktop extends jalview.jbgui.GDesktop
       int size = af.alignPanels.size();
       if(size<2)
         return;
-      af.closeMenuItem_actionPerformed(null);
 
       for(int i=0; i<size; i++)
       {
@@ -710,24 +776,21 @@ public class Desktop extends jalview.jbgui.GDesktop
 
         ap.av.gatherViewsHere = false;
 
-        PaintRefresher.Register(ap.seqPanel.seqCanvas, ap.av.getSequenceSetId());
-        PaintRefresher.Register(ap.idPanel.idCanvas, ap.av.getSequenceSetId());
-        PaintRefresher.Register(ap, ap.av.getSequenceSetId());
-
-
-        newaf.viewport = ap.av;
         addInternalFrame(newaf, af.getTitle(),
                          AlignFrame.DEFAULT_WIDTH,
                          AlignFrame.DEFAULT_HEIGHT);
       }
 
+      af.alignPanels.clear();
+      af.closeMenuItem_actionPerformed(true);
+
     }
 
     public void gatherViews(AlignFrame source)
     {
       source.viewport.gatherViewsHere = true;
       source.viewport.explodedPosition = source.getBounds();
-      JInternalFrame[] frames = Desktop.desktop.getAllFrames();
+      JInternalFrame[] frames = desktop.getAllFrames();
       String viewId = source.viewport.sequenceSetID;
 
       for (int t = 0; t < frames.length; t++)
@@ -744,11 +807,15 @@ public class Desktop extends jalview.jbgui.GDesktop
               gatherThis = true;
               ap.av.gatherViewsHere = false;
               ap.av.explodedPosition = af.getBounds();
-              source.addAlignmentPanel(ap);
+              source.addAlignmentPanel(ap, false);
             }
           }
+
           if (gatherThis)
-            af.closeMenuItem_actionPerformed(null);
+          {
+            af.alignPanels.clear();
+            af.closeMenuItem_actionPerformed(true);
+          }
         }
       }
 
@@ -796,9 +863,9 @@ public class Desktop extends jalview.jbgui.GDesktop
      */
     public void setVamsasUpdate(boolean b) {
       jalview.bin.Cache.log.debug("Setting gui for Vamsas update "+(b ? "in progress" : "finished"));
-      vamsasLoad.setVisible(!b); 
+      vamsasLoad.setVisible(!b);
       vamsasStop.setVisible(!b);
-      
+
     }
 }