<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"/>
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;
MainFrame aptxApp = Archaeopteryx.createApplication(aptxTree,
APTX_CONFIG, treeTitle);
- adaptAptxGui(aptxApp);
+
LoadedTreeSequenceAssociation bindAptxNodes = new LoadedTreeSequenceAssociation(
jalviewAlignport.getAlignment().getSequencesArray(), aptxTree);
bindAptxNodes.associateLeavesToSequences();
bindAptxNodes.getNodesWithAlignment());
bindTreeViewFrameToJalview(aptxApp);
+ adaptAptxGui(aptxApp);
return aptxApp;
}
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));
+
+
}
}
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;
@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) });
+ }
+ }
+
+ }
+
+
}
*/
public void run()
{
+
+
final PhylogenyNode node = treeView.findNode(e.getX(), e.getY());
if (node != null)
{
}
showNodeSelectionOnAlign(node);
+
}
else
{
-
partitionTree(e.getX());
+
}
PaintRefresher.Refresh(treeView, parentAvport.getSequenceSetId());
treeView.repaint();
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());
}
@Override
- public void sortByTree_actionPerformed()// modify for Aptx
+ public void sortByTree_actionPerformed()
{
-
+ //
// if (treeCanvas.applyToAllViews)
// {
// final ArrayList<CommandI> commands = new ArrayList<>();
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)
//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;
{
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)
{
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);
+ // }
}
}
+++ /dev/null
-// 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);
-//
-// }
package jalview.ext.treeviewer;
-public interface ExternalTreeViewerI
+public interface ExternalTreeViewerFrameI
{
public ExternalTreePanelI getTreePanel();