X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=184ffeb58ba6d1c9f0fbcde5ef8bdd73542c1bd5;hb=ef887ebe817cd6595b6275f5f51001677c377214;hp=97120fc0f587054c8648b7342086ce84ca84b088;hpb=8afce1e45bd2e14240715c8a6f06be8b55a78a18;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 97120fc..184ffeb 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -53,6 +53,7 @@ import jalview.datamodel.AlignmentI; import jalview.datamodel.AlignmentOrder; import jalview.datamodel.AlignmentView; import jalview.datamodel.ColumnSelection; +import jalview.datamodel.DBRefEntry; import jalview.datamodel.HiddenColumns; import jalview.datamodel.HiddenSequences; import jalview.datamodel.PDBEntry; @@ -63,6 +64,8 @@ import jalview.datamodel.SequenceI; import jalview.ext.archaeopteryx.AptxInit; import jalview.ext.forester.io.SupportedTreeFileFilter; import jalview.ext.forester.io.TreeParser; +import jalview.ext.treeviewer.ExternalTreeFrame; +import jalview.ext.treeviewer.ExternalTreeViewerBindingI; import jalview.gui.ColourMenuHelper.ColourChangeListener; import jalview.gui.ViewSelectionMenu.ViewSetProvider; import jalview.io.AlignmentProperties; @@ -89,6 +92,7 @@ import jalview.schemes.ColourSchemeI; import jalview.schemes.ColourSchemes; import jalview.schemes.ResidueColourScheme; import jalview.schemes.TCoffeeColourScheme; +import jalview.util.DBRefUtils; import jalview.util.MessageManager; import jalview.viewmodel.AlignmentViewport; import jalview.viewmodel.ViewportRanges; @@ -137,6 +141,8 @@ import java.util.Deque; import java.util.Enumeration; import java.util.Hashtable; import java.util.List; +import java.util.Map; +import java.util.Map.Entry; import java.util.StringTokenizer; import java.util.Vector; @@ -152,6 +158,9 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; +import org.forester.archaeopteryx.webservices.PhylogeniesWebserviceClient; +import org.forester.archaeopteryx.webservices.WebservicesManager; + /** * DOCUMENT ME! * @@ -3739,6 +3748,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + /** * Maintain the Order by->Displayed Tree menu. Creates a new menu item for a * TreePanel with an appropriate jalview.analysis.AlignmentSorter @@ -3754,15 +3764,21 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, List comps = PaintRefresher.components .get(viewport.getSequenceSetId()); List treePanels = new ArrayList<>(); + + Map aptxFrames = AptxInit + .getAllAptxFrames(); + for (Component comp : comps) { + // old treepanels if (comp instanceof TreePanel) { treePanels.add((TreePanel) comp); } + } - if (treePanels.size() < 1) + if (treePanels.isEmpty() && aptxFrames.isEmpty()) { sortByTreeMenu.setVisible(false); return; @@ -3770,6 +3786,42 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sortByTreeMenu.setVisible(true); + for (Entry aptxFrameWithBinding : aptxFrames + .entrySet()) + { + ExternalTreeFrame aptxFrame = aptxFrameWithBinding.getKey(); + ExternalTreeViewerBindingI binding = aptxFrameWithBinding.getValue(); + + // future support for multiple tabs + // for (org.forester.archaeopteryx.TreePanel aptxTree : aptxFrame + // .getMainPanel().getTreePanels()) + { + final JMenuItem item = new JMenuItem( + aptxFrame.getTree().getTreeName()); + + item.addActionListener(new ActionListener() + { + + @Override + public void actionPerformed(ActionEvent e) + { + binding.sortByTree_actionPerformed(); + addHistoryItem(binding.sortAlignmentIn(alignPanel)); + } + + }); + sortByTreeMenu.add(item); + } + + + + } + + + + + + // old treepanels for (final TreePanel tp : treePanels) { final JMenuItem item = new JMenuItem(tp.getTitle()); @@ -3778,7 +3830,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void actionPerformed(ActionEvent e) { - // adapt to Aptx tp.sortByTree_actionPerformed(); addHistoryItem(tp.sortAlignmentIn(alignPanel)); @@ -3900,33 +3951,47 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override protected void loadTreeBaseStudy_actionPerformed(ActionEvent e) { - chooseTreeDb(0); + chooseTreeDb(0, null); } @Override protected void loadTreeBase_actionPerformed(ActionEvent e) { - chooseTreeDb(1); + chooseTreeDb(1, null); } @Override protected void loadTreePfam_actionPerformed(ActionEvent e) { - chooseTreeDb(2); + + // only DBRefs of first sequence are checked for matching DB for now, + // iterating through them all seems excessive + SequenceI seq = viewport.getAlignment().getSequenceAt(0); + String dbId = null; + for (DBRefEntry pfamRef : DBRefUtils + .searchRefsForSource(seq.getDBRefs(), "pfam")) + { + if (pfamRef.getAccessionId().startsWith("PF")) + { + dbId = pfamRef.getAccessionId().replaceAll("[A-Za-z]", ""); + } + + } + chooseTreeDb(2, dbId); } @Override protected void loadTreeFam_actionPerformed(ActionEvent e) { - chooseTreeDb(3); + chooseTreeDb(3, null); } @Override protected void loadTreeOfLife_actionPerformed(ActionEvent e) { - chooseTreeDb(4); + chooseTreeDb(4, null); } @@ -4031,9 +4096,26 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } - public void chooseTreeDb(int databaseIndex) - { - AptxInit.createInstancesFromDb(databaseIndex, viewport); + /** + * Disgustingly hardcoded atm. + * + * @param databaseIndex + */ + public void chooseTreeDb(int databaseIndex, String defaultIdentifier) + { + final WebservicesManager webservices_manager = WebservicesManager + .getInstance(); + final PhylogeniesWebserviceClient client = webservices_manager + .getAvailablePhylogeniesWebserviceClient(databaseIndex); + String identifier = JvOptionPane + .showInternalInputDialog(Desktop.desktop, + client.getInstructions() + "\n(Reference: " + + client.getReference() + ")", + client.getDescription(), JvOptionPane.QUESTION_MESSAGE, + null, null, defaultIdentifier) + .toString(); + + AptxInit.createInstancesFromDb(client, identifier, viewport); } public TreePanel showNewickTree(NewickFile nf, String treeTitle)