Merge remote-tracking branch 'origin/kjvdh/features/PhylogenyViewerUserTest' into...
authorkjvdheide <kjvanderheide@dundee.ac.uk>
Tue, 19 Dec 2017 10:52:39 +0000 (10:52 +0000)
committerkjvdheide <kjvanderheide@dundee.ac.uk>
Tue, 19 Dec 2017 10:52:39 +0000 (10:52 +0000)
.classpath
src/jalview/ext/archaeopteryx/AptxFrame.java [moved from src/jalview/ext/archaeopteryx/Aptx.java with 72% similarity]
src/jalview/ext/archaeopteryx/AptxInit.java
src/jalview/ext/archaeopteryx/JalviewBinding.java
src/jalview/ext/archaeopteryx/LoadedTreeSequenceAssociation.java
src/jalview/ext/forester/io/TreeParser.java
src/jalview/ext/treeviewer/ExternalTreeParserI.java [deleted file]
src/jalview/ext/treeviewer/ExternalTreeViewerFrameI.java [moved from src/jalview/ext/treeviewer/ExternalTreeViewerI.java with 66% similarity]

index fc617fa..a1d055e 100644 (file)
@@ -49,7 +49,6 @@
        <classpathentry kind="lib" path="lib/jfreesvg-2.1.jar"/>
        <classpathentry kind="lib" path="lib/quaqua-filechooser-only-8.0.jar"/>
        <classpathentry kind="lib" path="lib/htsjdk-1.133.jar"/>
-       <classpathentry kind="lib" path="lib/forester.jar"/>
        <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/plugin"/>
        <classpathentry kind="lib" path="lib/xml-apis.jar"/>
        <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
similarity index 72%
rename from src/jalview/ext/archaeopteryx/Aptx.java
rename to src/jalview/ext/archaeopteryx/AptxFrame.java
index f0c535b..d5d2b11 100644 (file)
@@ -1,15 +1,15 @@
 package jalview.ext.archaeopteryx;
 
 import jalview.ext.treeviewer.ExternalTreePanelI;
-import jalview.ext.treeviewer.ExternalTreeViewerI;
+import jalview.ext.treeviewer.ExternalTreeViewerFrameI;
 
 import org.forester.archaeopteryx.MainFrame;
 
-public class Aptx implements ExternalTreeViewerI
+public class AptxFrame implements ExternalTreeViewerFrameI
 {
   private final MainFrame aptxApp;
 
-  public Aptx(MainFrame aptx)
+  public AptxFrame(MainFrame aptx)
   {
     aptxApp = aptx;
 
index dfc4387..9d248d0 100644 (file)
@@ -496,7 +496,7 @@ public final class AptxInit
     MainFrame aptxApp = Archaeopteryx.createApplication(aptxTree,
             APTX_CONFIG, treeTitle);
 
-    adaptAptxGui(aptxApp);
+
     LoadedTreeSequenceAssociation bindAptxNodes = new LoadedTreeSequenceAssociation(
             jalviewAlignport.getAlignment().getSequencesArray(), aptxTree);
     bindAptxNodes.associateLeavesToSequences();
@@ -506,6 +506,7 @@ public final class AptxInit
             bindAptxNodes.getNodesWithAlignment());
     bindTreeViewFrameToJalview(aptxApp);
 
+    adaptAptxGui(aptxApp);
     return aptxApp;
   }
 
@@ -592,7 +593,22 @@ public final class AptxInit
       else if (menu.getText().contains("View"))
       {
         menu.addSeparator();
-        menu.add(new JMenuItem("Sort alignment by tree"));
+        JMenuItem sortByTree = new JMenuItem("Sort alignment by tree");
+        JMenuItem refreshJalview = new JMenuItem(
+                "Filter alignment to show only currently visible sequences");
+
+        refreshJalview.setFont(menu.getFont());
+
+        menu.add(sortByTree);
+        menu.add(refreshJalview);
+
+        sortByTree.setFont(menu.getFont());
+        sortByTree.setVisible(false); // don't show unless it's actually
+        // possible
+
+        refreshJalview.addActionListener(activeAptx.get(aptxFrame));
+
+
       }
 
     }
index 41d18f5..0593217 100644 (file)
@@ -25,6 +25,7 @@ import jalview.util.MessageManager;
 import jalview.viewmodel.AlignmentViewport;
 
 import java.awt.Color;
+import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
 import java.awt.event.InputEvent;
 import java.awt.event.MouseEvent;
@@ -177,7 +178,50 @@ public final class JalviewBinding
   @Override
   public void actionPerformed(ActionEvent e)
   {
-    // aptxFrame.actionPerformed(e);
+    // reset hidden sequences first
+    parentAvport.showAllHiddenSeqs();
+
+    if (treeView.isCurrentTreeIsSubtree())
+    {
+    LoadedTreeSequenceAssociation bindAptxNodes = new LoadedTreeSequenceAssociation(
+            parentAvport.getAlignment().getSequencesArray(),
+            treeView.getPhylogeny());
+    bindAptxNodes.associateLeavesToSequences();
+    sequencesBoundToNodes = bindAptxNodes.getAlignmentWithNodes();
+    nodesBoundToSequences = bindAptxNodes.getNodesWithAlignment();
+    AptxInit.bindNodesToJalviewSequences(aptxFrame, parentAvport,
+            sequencesBoundToNodes, nodesBoundToSequences);
+
+
+    for (SequenceI seq : parentAvport.getAlignment().getSequencesArray())
+    {
+      if (!sequencesBoundToNodes.containsKey(seq))
+      {
+        parentAvport.hideSequence(new SequenceI[] { seq });
+      }
+      }
+    }
+
+    else
+    {
+
+      Rectangle visibleView = treeView.getVisibleRect();
+
+      for (PhylogenyNode node : PhylogenyMethods.getAllDescendants(treeView.getPhylogeny().getRoot())) {
+        if (!(node.getXcoord() > visibleView.getMinX()
+                && node.getXcoord() < visibleView.getMaxX()
+                && node.getYcoord() > visibleView.getMinY()
+                && node.getYcoord() < visibleView.getMaxY()))
+        {
+          parentAvport
+                  .hideSequence(new SequenceI[]
+                  { nodesBoundToSequences.get(node) });
+        }
+      }
+
+    }
+
+
 
   }
 
@@ -192,6 +236,8 @@ public final class JalviewBinding
        */
       public void run()
       {
+
+
         final PhylogenyNode node = treeView.findNode(e.getX(), e.getY());
         if (node != null)
         {
@@ -203,11 +249,12 @@ public final class JalviewBinding
 
           }
           showNodeSelectionOnAlign(node);
+
         }
         else
         {
-
           partitionTree(e.getX());
+
       }
         PaintRefresher.Refresh(treeView, parentAvport.getSequenceSetId());
         treeView.repaint();
@@ -296,14 +343,10 @@ public final class JalviewBinding
       furthestNodeX = furthestNode.getXcoord();
       rootX = tree.getRoot().getXcoord();
 
-      if (furthestNodeX != rootX && !(x < rootX || x > furthestNodeX)) // don't
-                                                                       // bother
-                                                                       // if 0
-                                                       // distance tree or
-                                                       // clicked x lies outside
-                                                       // of tree
-      {
 
+      // don't bother if 0 distance tree or clicked x lies outside of tree
+      if (furthestNodeX != rootX && !(x > furthestNodeX))
+      {
         float threshold = (x - rootX) / (furthestNodeX - rootX);
         List<PhylogenyNode> foundNodes = getNodesAboveThreshold(threshold,
                 tree.getRoot());
@@ -587,9 +630,9 @@ public final class JalviewBinding
   }
 
   @Override
-  public void sortByTree_actionPerformed()// modify for Aptx
+  public void sortByTree_actionPerformed()
   {
-
+    //
     // if (treeCanvas.applyToAllViews)
     // {
     // final ArrayList<CommandI> commands = new ArrayList<>();
index 86f27d1..0c83036 100644 (file)
@@ -16,13 +16,13 @@ import org.forester.phylogeny.iterators.PhylogenyNodeIterator;
 public class LoadedTreeSequenceAssociation
         implements ExternalLoadedTreeAssociationI
 {
-  SequenceI[] alignSequences;
+  private SequenceI[] alignSequences;
 
-  Phylogeny tree;
+  private Phylogeny tree;
 
-  Map<SequenceI, PhylogenyNode> alignmentWithNodes;
+  private Map<SequenceI, PhylogenyNode> alignmentWithNodes;
 
-  Map<PhylogenyNode, SequenceI> nodesWithAlignment;
+  private Map<PhylogenyNode, SequenceI> nodesWithAlignment;
 
   public LoadedTreeSequenceAssociation(SequenceI[] alignmentSequences,
           Phylogeny aptxTree)
index e11591d..cbdc3e8 100644 (file)
@@ -5,7 +5,6 @@ import jalview.gui.AlignViewport;
 //import jalview.ext.treeviewer.ExternalTreeParserI;
 import jalview.gui.Desktop;
 import jalview.gui.JvOptionPane;
-import jalview.io.DataSourceType;
 import jalview.io.NewickFile;
 import jalview.util.MessageManager;
 
@@ -40,9 +39,9 @@ public class TreeParser // implements ExternalTreeParserI<MainFrame>
       {
         AptxInit.createInstancesFromFile(filePath, viewport);
 
-        fin = new NewickFile(filePath, DataSourceType.FILE);
-        viewport.setCurrentTree(viewport.getAlignPanel().alignFrame
-                .showNewickTree(fin, filePath).getTree());
+      // fin = new NewickFile(filePath, DataSourceType.FILE);
+      // viewport.setCurrentTree(viewport.getAlignPanel().alignFrame
+      // .showNewickTree(fin, filePath).getTree());
 
       } catch (Exception ex)
       {
@@ -51,14 +50,14 @@ public class TreeParser // implements ExternalTreeParserI<MainFrame>
                 JvOptionPane.WARNING_MESSAGE);
         ex.printStackTrace();
       }
-      if (fin != null && fin.hasWarningMessage())
-      {
-        JvOptionPane.showMessageDialog(Desktop.desktop,
-                fin.getWarningMessage(),
-                MessageManager
-                        .getString("label.possible_problem_with_tree_file"),
-                JvOptionPane.WARNING_MESSAGE);
-      }
+    // if (fin != null && fin.hasWarningMessage())
+    // {
+    // JvOptionPane.showMessageDialog(Desktop.desktop,
+    // fin.getWarningMessage(),
+    // MessageManager
+    // .getString("label.possible_problem_with_tree_file"),
+    // JvOptionPane.WARNING_MESSAGE);
+    // }
     }
   }
 
diff --git a/src/jalview/ext/treeviewer/ExternalTreeParserI.java b/src/jalview/ext/treeviewer/ExternalTreeParserI.java
deleted file mode 100644 (file)
index 47960f9..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// package jalview.ext.treeviewer;
-//
-// import jalview.viewmodel.AlignmentViewport;
-//
-/// **
-// *
-// * Interface for loading in existing trees to an external tree viewer.
-// *
-// * @author kjvanderheide
-// *
-// */
-// public interface ExternalTreeParserI
-// {
-// public ExternalTreeI loadTreeFile(AlignmentViewport viewport);
-//
-// public ExternalTreeI loadTreeUrl(AlignmentViewport viewport);
-//
-// }
@@ -1,6 +1,6 @@
 package jalview.ext.treeviewer;
 
-public interface ExternalTreeViewerI
+public interface ExternalTreeViewerFrameI
 {
   public ExternalTreePanelI getTreePanel();