X-Git-Url: http://source.jalview.org/gitweb/?p=jalview.git;a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=f8bce9ddd90d766305d55cfebe0920ce83b726c4;hp=89f403671eff526b8e14b6e2c0b1136faa041108;hb=4a3def9f59cefe629c9a33d87483283aee085928;hpb=eca4795050a0f7eca3d5dece68eaa54987cebd15 diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 89f4036..f8bce9d 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -60,6 +60,8 @@ import java.util.Enumeration; import java.util.Hashtable; import java.util.List; import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; import java.util.StringTokenizer; import java.util.Vector; @@ -77,6 +79,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; + import ext.vamsas.ServiceHandle; import jalview.analysis.AlignmentSorter; import jalview.analysis.AlignmentUtils; @@ -115,6 +120,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.PDBEntry; import jalview.datamodel.SeqCigar; @@ -123,7 +129,9 @@ import jalview.datamodel.SequenceGroup; 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.TreeFrameI; +import jalview.ext.treeviewer.TreeViewerBindingI; +import jalview.ext.treeviewer.TreeViewerUtils; import jalview.gui.ColourMenuHelper.ColourChangeListener; import jalview.gui.ViewSelectionMenu.ViewSetProvider; import jalview.io.AlignmentProperties; @@ -153,6 +161,7 @@ import jalview.schemes.ColourSchemeI; import jalview.schemes.ColourSchemes; import jalview.schemes.ResidueColourScheme; import jalview.schemes.TCoffeeColourScheme; +import jalview.util.DBRefUtils; import jalview.util.HttpUtils; import jalview.util.ImageMaker.TYPE; import jalview.util.MessageManager; @@ -1643,7 +1652,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * DOCUMENT ME! */ - void updateEditMenuBar() + public void updateEditMenuBar() { if (viewport.getHistoryList().size() > 0) @@ -3925,6 +3934,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 @@ -3940,15 +3950,21 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, List comps = PaintRefresher.components .get(viewport.getSequenceSetId()); List treePanels = new ArrayList<>(); + + Map aptxFrames = TreeViewerUtils + .getActiveTreeViews(); + 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; @@ -3956,6 +3972,42 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sortByTreeMenu.setVisible(true); + for (Entry aptxFrameWithBinding : aptxFrames + .entrySet()) + { + TreeFrameI aptxFrame = aptxFrameWithBinding.getKey(); + TreeViewerBindingI 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(); // redundant here?? + addHistoryItem(binding.sortAlignmentIn(alignPanel)); + } + + }); + sortByTreeMenu.add(item); + } + + + + } + + + + + + // old treepanels for (final TreePanel tp : treePanels) { final JMenuItem item = new JMenuItem(tp.getTitle()); @@ -3964,7 +4016,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void actionPerformed(ActionEvent e) { - // adapt to Aptx tp.sortByTree_actionPerformed(); addHistoryItem(tp.sortAlignmentIn(alignPanel)); @@ -4086,39 +4137,54 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override protected void loadTreeBaseStudy_actionPerformed(ActionEvent e) { - chooseTreeDb(); + chooseTreeDb(0, null); } @Override - protected void loadTreeOfLife_actionPerformed(ActionEvent e) + protected void loadTreeBase_actionPerformed(ActionEvent e) { - chooseTreeDb(); + chooseTreeDb(1, null); } - @Override - protected void loadTreeFam_actionPerformed(ActionEvent e) + protected void loadTreePfam_actionPerformed(ActionEvent e) { - chooseTreeDb(); - } + // 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 loadTreePfam_actionPerformed(ActionEvent e) + protected void loadTreeFam_actionPerformed(ActionEvent e) { - chooseTreeDb(); + chooseTreeDb(3, null); } @Override - protected void loadTreeBase_actionPerformed(ActionEvent e) + protected void loadTreeOfLife_actionPerformed(ActionEvent e) { - chooseTreeDb(); + chooseTreeDb(4, null); } + + + public void chooseTreeFile() { // Pick the tree file @@ -4134,35 +4200,32 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { chooser.setFileFilter(treeFormat.getTreeFilter()); } - + final AlignFrame us=this; chooser.setResponseHandler(0, new Runnable() { @Override public void run() { - String filePath = chooser.getSelectedFile().getPath(); - Cache.setProperty("LAST_DIRECTORY", filePath); - TreeParser treeParser = null; - try { - treeParser = new TreeParser(filePath); - treeParser.loadTree(viewport); - } catch (Exception ex) - { - JvOptionPane.showMessageDialog(Desktop.desktop, ex.getMessage(), - MessageManager - .getString("label.problem_reading_tree_file"), - JvOptionPane.WARNING_MESSAGE); - ex.printStackTrace(); - } -// TODO: handle any other warnings from treeParser ? - // if (treeParser != null && treeParser.fin.hasWarningMessage()) -// { -// JvOptionPane.showMessageDialog(Desktop.desktop, -// fin.getWarningMessage(), -// MessageManager.getString( -// "label.possible_problem_with_tree_file"), -// JvOptionPane.WARNING_MESSAGE); -// } + String filePath = chooser.getSelectedFile().getPath(); + Cache.setProperty("LAST_DIRECTORY", filePath); + + + NewickFile fin = null; // old tree + try + { + AptxInit.createInstancesFromFile(filePath, viewport); + + // fin = new NewickFile(filePath, DataSourceType.FILE); + // viewport.setCurrentTree(viewport.getAlignPanel().alignFrame + // .showNewickTree(fin, filePath).getTree()); + + } catch (Exception ex) + { + JvOptionPane.showMessageDialog(us, ex.getMessage(), + MessageManager.getString("label.problem_reading_tree_file"), + JvOptionPane.WARNING_MESSAGE); + ex.printStackTrace(); + } } }); chooser.showOpenDialog(this); @@ -4217,7 +4280,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, format = new IdentifyFile().identify(urlString, DataSourceType.URL); // add actual use for the format identification (jalview .jar files) treeUrl = new URL(urlString); - AptxInit.createInstanceFromUrl(treeUrl, viewport); + AptxInit.createInstancesFromUrl(treeUrl, viewport); } catch (IOException | RuntimeException e) { @@ -4235,8 +4298,26 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } - public void chooseTreeDb() + /** + * 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) @@ -4302,6 +4383,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, private boolean buildingMenu = false; + public void BuildTreeDbMenu() + { + + } /** * Generates menu items and listener event actions for web service clients * @@ -4503,7 +4588,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } buildingMenu = false; } - }, "BuildWebServiceThread").start(); + }, "BuildWebService").start(); } @@ -4612,7 +4697,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, final String source) { new Thread(CrossRefAction.getHandlerFor(sel, _odna, source, this), - "CrossReferencesThread") + "CrossReferences") .start(); } @@ -4921,7 +5006,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, ex.printStackTrace(); } } - }, "DropFileThread").start(); + }, "DropFile").start(); } } @@ -5320,7 +5405,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, }); dbRefFetcher.fetchDBRefs(false); } - }, "BuildFetchDBMenuThread").start(); + }, "BuildFetchDBMenu").start(); }