c2b48abe7c2db3d89001b4791c65721bbc571544
[jalview.git] / src / jalview / ext / archaeopteryx / JalviewAptxBinding.java
1 package jalview.ext.archaeopteryx;
2
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;
10
11 import java.awt.event.ActionEvent;
12 import java.awt.event.InputEvent;
13 import java.awt.event.MouseEvent;
14 import java.util.HashSet;
15 import java.util.Map;
16
17 import org.forester.archaeopteryx.MainFrame;
18 import org.forester.phylogeny.PhylogenyNode;
19
20 public class JalviewAptxBinding implements JalviewTreeViewerBindingI
21 {
22   org.forester.archaeopteryx.TreePanel treeView;
23
24   AlignmentViewport parentAvport;
25
26   StructureSelectionManager ssm;
27
28   Map<SequenceI, PhylogenyNode> sequencesBelongingToNodes;
29
30
31   public JalviewAptxBinding(MainFrame archaeopteryx,
32           AlignmentViewport jalviewAlignmentViewport,
33           Map<SequenceI, PhylogenyNode> alignMappedToNodes)
34   {
35     parentAvport = jalviewAlignmentViewport;
36     sequencesBelongingToNodes = alignMappedToNodes;
37     treeView = archaeopteryx.getMainPanel().getCurrentTreePanel();
38     ssm = parentAvport.getStructureSelectionManager();
39     ssm.addSelectionListener(this);
40     treeView.addMouseListener(this);
41   }
42
43   @Override
44   public void actionPerformed(ActionEvent e)
45   {
46
47   }
48
49   @Override
50   public void mouseClicked(MouseEvent e)
51   {
52
53   }
54
55   @Override
56   public void mousePressed(MouseEvent e)
57   {
58     showNodeSelectionOnAlign(e);
59
60   }
61
62   @Override
63   public void mouseReleased(MouseEvent e)
64   {
65   }
66
67   @Override
68   public void mouseEntered(MouseEvent e)
69   {
70
71   }
72
73   @Override
74   public void mouseExited(MouseEvent e)
75   {
76
77   }
78
79   @Override
80   public void selection(SequenceGroup seqsel, ColumnSelection colsel,
81           HiddenColumns hidden, SelectionSource source)
82   {
83     if (source == parentAvport) // check if source is alignment from where the
84                                 // tree originates
85     {
86       treeView.setFoundNodes0(
87               new HashSet<Long>(seqsel.getSequences().size()));
88
89       for (SequenceI sequence : seqsel.getSequences())
90       {
91         PhylogenyNode matchingNode = sequencesBelongingToNodes.get(sequence);
92         treeView.getFoundNodes0().add(matchingNode.getId());
93
94       }
95       treeView.repaint();
96
97     }
98
99
100   }
101
102   @Override
103   public void showNodeSelectionOnAlign(MouseEvent e)
104   {
105     final PhylogenyNode node = treeView.findNode(e.getX(), e.getY());
106     if (node != null && node.isExternal())
107     {
108
109       if ((e.getModifiers() & InputEvent.SHIFT_MASK) != 0) // shift is pressed
110       // (so multiple nodes
111       // can be selected)
112       {
113
114         System.out.println(treeView.getFoundNodes0().toString());
115       }
116     }
117
118   }
119
120
121
122
123   }
124
125
126