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;
public final class JalviewBinding
implements ExternalTreeViewerBindingI<PhylogenyNode>
{
+ private final MainFrame aptxFrame;
+
private org.forester.archaeopteryx.TreePanel treeView;
private AlignmentViewport parentAvport;
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;
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);
}
});
@Override
public void actionPerformed(ActionEvent e)
{
+ // aptxFrame.actionPerformed(e);
+
}
@Override
treeView.setFoundNodes0(
new HashSet<Long>(seqsel.getSequences().size()));
+
for (SequenceI selectedSequence : seqsel.getSequences())
{
PhylogenyNode matchingNode = sequencesBoundToNodes.get(selectedSequence);
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));
}
@Override
public void showMatchingChildSequences(final PhylogenyNode parentNode)
{
+ // redundancy here, Forester already iterates through tree to get all
+ // descendants
List<PhylogenyNode> childNodes = PhylogenyMethods
.getAllDescendants(parentNode);
@Override
public void sortByTree_actionPerformed()// modify for Aptx
{
- //
+
// if (treeCanvas.applyToAllViews)
// {
// final ArrayList<CommandI> commands = new ArrayList<>();
// for (AlignmentPanel ap : PaintRefresher
- // .getAssociatedPanels(av.getSequenceSetId()))
+ // .getAssociatedPanels(parentAvport.getSequenceSetId()))
// {
// commands.add(sortAlignmentIn(ap.av.getAlignPanel()));
// }
- // av.getAlignPanel().alignFrame.addHistoryItem(new CommandI()
+ // parentAvport.getAlignPanel().alignFrame.addHistoryItem(new CommandI()
// {
//
// @Override
public CommandI sortAlignmentIn(AlignmentPanel ap)
{
- // // TODO: move to alignment view controller
- // AlignmentViewport viewport = ap.av;
- // SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
- // AlignmentSorter.sortByTree(viewport.getAlignment(), tree);
- // CommandI undo;
- // undo = new OrderCommand("Tree Sort", oldOrder, viewport.getAlignment());
- //
- // ap.paintAlignment(true, false);
- // return undo;
+ // 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;
+
}