1 package jalview.ext.archaeopteryx;
3 import jalview.datamodel.ColumnSelection;
4 import jalview.datamodel.HiddenColumns;
5 import jalview.datamodel.SequenceGroup;
6 import jalview.datamodel.SequenceI;
7 import jalview.structure.SelectionSource;
8 import jalview.structure.StructureSelectionManager;
9 import jalview.viewmodel.AlignmentViewport;
11 import java.awt.event.ActionEvent;
12 import java.awt.event.InputEvent;
13 import java.awt.event.MouseEvent;
14 import java.util.HashSet;
17 import org.forester.archaeopteryx.MainFrame;
18 import org.forester.phylogeny.PhylogenyNode;
20 public class JalviewAptxBinding implements JalviewTreeViewerBindingI
22 org.forester.archaeopteryx.TreePanel treeView;
24 AlignmentViewport parentAvport;
26 StructureSelectionManager ssm;
28 Map<SequenceI, PhylogenyNode> sequencesBelongingToNodes;
31 public JalviewAptxBinding(MainFrame archaeopteryx,
32 AlignmentViewport jalviewAlignmentViewport,
33 Map<SequenceI, PhylogenyNode> alignMappedToNodes)
35 parentAvport = jalviewAlignmentViewport;
36 sequencesBelongingToNodes = alignMappedToNodes;
37 treeView = archaeopteryx.getMainPanel().getCurrentTreePanel();
38 ssm = parentAvport.getStructureSelectionManager();
39 ssm.addSelectionListener(this);
40 treeView.addMouseListener(this);
44 public void actionPerformed(ActionEvent e)
50 public void mouseClicked(MouseEvent e)
56 public void mousePressed(MouseEvent e)
58 showNodeSelectionOnAlign(e);
63 public void mouseReleased(MouseEvent e)
68 public void mouseEntered(MouseEvent e)
74 public void mouseExited(MouseEvent e)
80 public void selection(SequenceGroup seqsel, ColumnSelection colsel,
81 HiddenColumns hidden, SelectionSource source)
83 if (source == parentAvport) // check if source is alignment from where the
86 treeView.setFoundNodes0(
87 new HashSet<Long>(seqsel.getSequences().size()));
89 for (SequenceI sequence : seqsel.getSequences())
91 PhylogenyNode matchingNode = sequencesBelongingToNodes.get(sequence);
92 treeView.getFoundNodes0().add(matchingNode.getId());
103 public void showNodeSelectionOnAlign(MouseEvent e)
105 final PhylogenyNode node = treeView.findNode(e.getX(), e.getY());
106 if (node != null && node.isExternal())
109 if ((e.getModifiers() & InputEvent.SHIFT_MASK) != 0) // shift is pressed
110 // (so multiple nodes
114 System.out.println(treeView.getFoundNodes0().toString());