sortbytree parameter added and undo re-instated for sort by tree and sort by id
authorjprocter <Jim Procter>
Tue, 17 Mar 2009 16:54:30 +0000 (16:54 +0000)
committerjprocter <Jim Procter>
Tue, 17 Mar 2009 16:54:30 +0000 (16:54 +0000)
src/jalview/appletgui/AlignFrame.java
src/jalview/appletgui/AlignViewport.java

index d5aa0b0..648b642 100755 (executable)
@@ -2124,12 +2124,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 
     modifyPID_actionPerformed();
   }
-
   public void sortPairwiseMenuItem_actionPerformed()
   {
     SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
     AlignmentSorter.sortByPID(viewport.getAlignment(), viewport
             .getAlignment().getSequenceAt(0), null);
+
     addHistoryItem(new OrderCommand("Pairwise Sort", oldOrder,
             viewport.alignment));
     alignPanel.paintAlignment(true);
@@ -2137,17 +2137,19 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 
   public void sortIDMenuItem_actionPerformed()
   {
-    // addHistoryItem(new HistoryItem("ID Sort", viewport.alignment,
-    // HistoryItem.SORT));
+    SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
     AlignmentSorter.sortByID(viewport.getAlignment());
+    addHistoryItem(new OrderCommand("ID Sort", oldOrder,
+            viewport.alignment));
     alignPanel.paintAlignment(true);
   }
 
   public void sortGroupMenuItem_actionPerformed()
   {
-    // addHistoryItem(new HistoryItem("Group Sort", viewport.alignment,
-    // HistoryItem.SORT));
+    SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
     AlignmentSorter.sortByGroup(viewport.getAlignment());
+    addHistoryItem(new OrderCommand("Group Sort", oldOrder,
+            viewport.alignment));
     alignPanel.paintAlignment(true);
 
   }
@@ -2276,8 +2278,28 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     jalview.bin.JalviewLite.addFrame(tp, treeFile, 600, 500);
     addTreeMenuItem(tp, treeFile);
   }
-
-  void addTreeMenuItem(final TreePanel treePanel, String title)
+  /**
+   * sort the alignment using the given treePanel
+   * @param treePanel tree used to sort view
+   * @param title string used for undo event name
+   */
+  public void sortByTree(TreePanel treePanel, String title)
+  {
+    SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
+    AlignmentSorter.sortByTree(viewport.getAlignment(), treePanel
+            .getTree());
+    // addHistoryItem(new HistoryItem("Sort", viewport.alignment,
+    // HistoryItem.SORT));
+    addHistoryItem(new OrderCommand("Order by "+title, oldOrder,
+            viewport.alignment));
+    alignPanel.paintAlignment(true);
+  }
+  /**
+   * Do any automatic reordering of the alignment and add the necessary bits to the menu structure for the new tree
+   * @param treePanel
+   * @param title
+   */
+  protected void addTreeMenuItem(final TreePanel treePanel, final String title)
   {
     final MenuItem item = new MenuItem(title);
     sortByTreeMenu.add(item);
@@ -2285,16 +2307,21 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     {
       public void actionPerformed(ActionEvent evt)
       {
-        // addHistoryItem(new HistoryItem("Sort", viewport.alignment,
-        // HistoryItem.SORT));
-        AlignmentSorter.sortByTree(viewport.getAlignment(), treePanel
-                .getTree());
-        alignPanel.paintAlignment(true);
+        sortByTree(treePanel, title); // treePanel.getTitle());
       }
     });
 
     treePanel.addWindowListener(new WindowAdapter()
     {
+      public void windowOpened(WindowEvent e)
+      {
+        if (viewport.sortByTree)
+        {
+          sortByTree(treePanel, title);
+        }
+        super.windowOpened(e);
+      }
+
       public void windowClosing(WindowEvent e)
       {
         sortByTreeMenu.remove(item);
index fd43a5d..9244166 100755 (executable)
@@ -198,6 +198,11 @@ public class AlignViewport
           upperCasebold = true;
         }
       }
+      param = applet.getParameter("sortByTree");
+      if (param != null)
+      {
+        sortByTree=Boolean.valueOf(param).booleanValue();
+      }
 
     }
 
@@ -1514,6 +1519,11 @@ public class AlignViewport
   public boolean showUnconserved=false;
 
   /**
+   * when set, alignment should be reordered according to a newly opened tree
+   */
+  public boolean sortByTree=false;
+
+  /**
    * @return the showUnconserved
    */
   public boolean getShowunconserved()