JAL-2794 disabled branch colors on selection for now
[jalview.git] / src / jalview / ext / archaeopteryx / JalviewBinding.java
index 61171b3..41d18f5 100644 (file)
@@ -1,7 +1,10 @@
 package jalview.ext.archaeopteryx;
 
+import jalview.analysis.AlignmentSorter;
 import jalview.analysis.Conservation;
 import jalview.api.AlignViewportI;
+import jalview.commands.CommandI;
+import jalview.commands.OrderCommand;
 import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.HiddenColumns;
 import jalview.datamodel.SequenceGroup;
@@ -55,6 +58,8 @@ import org.forester.phylogeny.data.BranchColor;
 public final class JalviewBinding
         implements ExternalTreeViewerBindingI<PhylogenyNode>
 {
+  private final MainFrame aptxFrame;
+
   private org.forester.archaeopteryx.TreePanel treeView;
 
   private AlignmentViewport parentAvport;
@@ -104,10 +109,11 @@ public final class JalviewBinding
               MessageManager.getString("label.tabs_detected_archaeopteryx"),
               MessageManager.getString("label.problem_reading_tree_file"),
               JvOptionPane.WARNING_MESSAGE);
-      ;
+
     }
 
     // deal with/prohibit null values here as that will cause problems
+    aptxFrame = archaeopteryx;
     parentAvport = jalviewAlignmentViewport;
     sequencesBoundToNodes = alignMappedToNodes;
     nodesBoundToSequences = nodesMappedToAlign;
@@ -118,17 +124,19 @@ public final class JalviewBinding
     
     ssm.addSelectionListener(this);
     treeView.addMouseListener(this);
+
     PaintRefresher.Register(treeView, parentAvport.getSequenceSetId());
     associatedPanels = PaintRefresher
             .getAssociatedPanels(parentAvport.getSequenceSetId());
 
-    archaeopteryx.addInternalFrameListener(new InternalFrameAdapter()
+    aptxFrame.addInternalFrameListener(new InternalFrameAdapter()
     {
 
       @Override
       public void internalFrameClosed(InternalFrameEvent e)
       {
-        AptxInit.getAllAptxFrames().remove(archaeopteryx);
+        AptxInit.getAllAptxFrames().remove(aptxFrame);
+        ssm.removeSelectionListener(JalviewBinding.this);
       }
 
     });
@@ -169,6 +177,8 @@ public final class JalviewBinding
   @Override
   public void actionPerformed(ActionEvent e)
   {
+    // aptxFrame.actionPerformed(e);
+
   }
 
   @Override
@@ -242,6 +252,7 @@ public final class JalviewBinding
       treeView.setFoundNodes0(
               new HashSet<Long>(seqsel.getSequences().size()));
 
+
       for (SequenceI selectedSequence : seqsel.getSequences())
       {
         PhylogenyNode matchingNode = sequencesBoundToNodes.get(selectedSequence);
@@ -252,10 +263,10 @@ public final class JalviewBinding
 
           if (!matchingNode.getBranchData().isHasBranchColor())
           {
-            Color foundNodesColour = treeView.getTreeColorSet()
-                    .getFoundColor0();
-          matchingNode.getBranchData()
-                    .setBranchColor(new BranchColor(foundNodesColour));
+            // Color foundNodesColour = treeView.getTreeColorSet()
+            // .getFoundColor0();
+            // matchingNode.getBranchData()
+            // .setBranchColor(new BranchColor(foundNodesColour));
 
           }
 
@@ -524,6 +535,8 @@ public final class JalviewBinding
   @Override
   public void showMatchingChildSequences(final PhylogenyNode parentNode)
   {
+    // redundancy here, Forester already iterates through tree to get all
+    // descendants
     List<PhylogenyNode> childNodes = PhylogenyMethods
             .getAllDescendants(parentNode);
 
@@ -572,7 +585,91 @@ public final class JalviewBinding
     }
 
   }
-  public void sortByTree_actionPerformed() {
+
+  @Override
+  public void sortByTree_actionPerformed()// modify for Aptx
+  {
+
+    // if (treeCanvas.applyToAllViews)
+    // {
+    // final ArrayList<CommandI> commands = new ArrayList<>();
+    // for (AlignmentPanel ap : PaintRefresher
+    // .getAssociatedPanels(parentAvport.getSequenceSetId()))
+    // {
+    // commands.add(sortAlignmentIn(ap.av.getAlignPanel()));
+    // }
+    // parentAvport.getAlignPanel().alignFrame.addHistoryItem(new CommandI()
+    // {
+    //
+    // @Override
+    // public void undoCommand(AlignmentI[] views)
+    // {
+    // for (CommandI tsort : commands)
+    // {
+    // tsort.undoCommand(views);
+    // }
+    // }
+    //
+    // @Override
+    // public int getSize()
+    // {
+    // return commands.size();
+    // }
+    //
+    // @Override
+    // public String getDescription()
+    // {
+    // return "Tree Sort (many views)";
+    // }
+    //
+    // @Override
+    // public void doCommand(AlignmentI[] views)
+    // {
+    //
+    // for (CommandI tsort : commands)
+    // {
+    // tsort.doCommand(views);
+    // }
+    // }
+    // });
+    // for (AlignmentPanel ap : PaintRefresher
+    // .getAssociatedPanels(av.getSequenceSetId()))
+    // {
+    // // ensure all the alignFrames refresh their GI after adding an undo item
+    // ap.alignFrame.updateEditMenuBar();
+    // }
+    // }
+    // else
+    // {
+    // treeCanvas.ap.alignFrame
+    // .addHistoryItem(sortAlignmentIn(treeCanvas.ap));
+    // }
+
+  }
+
+  public CommandI sortAlignmentIn(AlignmentPanel ap)
+  {
+    // TODO: move to alignment view controller
+
+    AlignmentViewport viewport = ap.av;
+    SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
+    try
+    {
+    AlignmentSorter.sortByTree(viewport.getAlignment(),
+            nodesBoundToSequences,
+              treeView.getPhylogeny());
+      CommandI undo;
+      undo = new OrderCommand("Tree Sort", oldOrder,
+              viewport.getAlignment());
+
+      ap.paintAlignment(true, false);
+      return undo;
+
+    } catch (Exception e)
+    {
+      System.err.println(e.getMessage());
+    }
+    return null;
 
   }