X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=b9ba4e0c7ea8d49aaeab504c309fff0aa3fd3cf2;hb=cb4b4b590add93fb0fb5c5ecd1d0532f1456ecc2;hp=f79afcad614c08e79052ce9048539d0909eca740;hpb=a9514dd266ef856c485fd8f9108a3797b87add3f;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index f79afca..b9ba4e0 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -71,6 +71,7 @@ import jalview.schemes.TaylorColourScheme; import jalview.schemes.TurnColourScheme; import jalview.schemes.UserColourScheme; import jalview.schemes.ZappoColourScheme; +import jalview.ws.WSMenuEntryProviderI; import jalview.ws.jws1.Discoverer; import jalview.ws.jws2.Jws2Discoverer; @@ -754,7 +755,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, progressBars.put(lId, progressPanel); } // update GUI - setMenusForViewport(); + // setMenusForViewport(); validate(); } @@ -3723,18 +3724,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sortByTreeMenu.add(item); } } + public boolean sortBy(AlignmentOrder alorder, String undoname) { - SequenceI[] oldOrder = viewport.getAlignment() - .getSequencesArray(); + SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); AlignmentSorter.sortBy(viewport.getAlignment(), alorder); - if (undoname!=null) + if (undoname != null) { - addHistoryItem(new OrderCommand(undoname, oldOrder, viewport.alignment)); + addHistoryItem(new OrderCommand(undoname, oldOrder, + viewport.alignment)); } alignPanel.paintAlignment(true); return true; } + /** * Work out whether the whole set of sequences or just the selected set will * be submitted for multiple alignment. @@ -3958,6 +3961,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // object broker mechanism. final Vector wsmenu = new Vector(); final IProgressIndicator af = me; + final JMenu msawsmenu = new JMenu("Alignment"); + final JMenu secstrmenu = new JMenu( + "Secondary Structure Prediction"); + final JMenu seqsrchmenu = new JMenu( + "Sequence Database Search"); + final JMenu analymenu = new JMenu( + "Analysis"); + if (Cache.getDefault("SHOW_JWS1_SERVICES", true) && Discoverer.services != null && (Discoverer.services.size() > 0)) @@ -3976,7 +3987,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (msaws != null) { // Add any Multiple Sequence Alignment Services - final JMenu msawsmenu = new JMenu("Alignment"); for (int i = 0, j = msaws.size(); i < j; i++) { final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) msaws @@ -3986,13 +3996,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, impl.attachWSMenuEntry(msawsmenu, me); } - wsmenu.add(msawsmenu); } if (secstrpr != null) { // Add any secondary structure prediction services - final JMenu secstrmenu = new JMenu( - "Secondary Structure Prediction"); for (int i = 0, j = secstrpr.size(); i < j; i++) { final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) secstrpr @@ -4001,13 +4008,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .getServiceClient(sh); impl.attachWSMenuEntry(secstrmenu, me); } - wsmenu.add(secstrmenu); } if (seqsrch != null) { // Add any sequence search services - final JMenu seqsrchmenu = new JMenu( - "Sequence Database Search"); for (int i = 0, j = seqsrch.size(); i < j; i++) { final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) seqsrch @@ -4016,7 +4020,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .getServiceClient(sh); impl.attachWSMenuEntry(seqsrchmenu, me); } - wsmenu.add(seqsrchmenu); } } @@ -4028,15 +4031,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (jws2servs.hasServices()) { - JMenu jws2men = new JMenu("Jaba Web Services"); - jws2servs.attachWSMenuEntry(jws2men, me); - for (int i = 0, iSize = jws2men.getMenuComponentCount(); i < iSize; i++) - { - wsmenu.add(jws2men.getMenuComponent(i)); - } + jws2servs.attachWSMenuEntry(msawsmenu, me); } } } + // Add all submenus in the order they should appear on the web services menu + wsmenu.add(msawsmenu); + wsmenu.add(secstrmenu); + wsmenu.add(analymenu); + // No search services yet + // wsmenu.add(seqsrchmenu); javax.swing.SwingUtilities.invokeLater(new Runnable() { @@ -4044,9 +4048,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { try { - - resetWebServiceMenu(); - // finally, add the whole shebang onto the webservices menu + webService.removeAll(); + // first, add discovered services onto the webservices menu if (wsmenu.size() > 0) { for (int i = 0, j = wsmenu.size(); i < j; i++) @@ -4056,8 +4059,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } else { - me.webService.add(me.webServiceNoServices); + webService.add(me.webServiceNoServices); } + build_urlServiceMenu(me.webService); + build_fetchdbmenu(webService); } catch (Exception e) { } @@ -4075,17 +4080,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } - /** - * empty the web service menu and add any ad-hoc functions not dynamically - * discovered. - * - */ - private void resetWebServiceMenu() - { - webService.removeAll(); - build_fetchdbmenu(webService); - build_urlServiceMenu(webService); - } /** * construct any groupURL type service menu entries. @@ -4094,11 +4088,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ private void build_urlServiceMenu(JMenu webService) { - if (Cache.getDefault("SHOW_ENFIN_SERVICES", true)) - { - jalview.ws.EnfinEnvision2OneWay.getInstance().attachWSMenuEntry( - webService, this); - } // TODO: remove this code when 2.7 is released // DEBUG - alignmentView /* @@ -4114,9 +4103,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // TODO: refactor to RestClient discoverer and merge menu entries for // rest-style services with other types of analysis/calculation service // SHmmr test client - still being implemented. - jalview.ws.rest.RestClient.makeShmmrRestClient().attachWSMenuEntry( - webService, this); // DEBUG - alignmentView + + for (jalview.ws.rest.RestClient client: jalview.ws.rest.RestClient.getRestClients()) { + client.attachWSMenuEntry(JvSwingUtils.findOrCreateMenu(webService, client.getAction()), this); + } + + if (Cache.getDefault("SHOW_ENFIN_SERVICES", true)) + { + jalview.ws.EnfinEnvision2OneWay.getInstance().attachWSMenuEntry( + webService, this); + } } /* @@ -4388,7 +4385,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, featuresFile = new FeaturesFile(file, type) .parse(viewport.alignment.getDataset(), alignPanel.seqPanel.seqCanvas.getFeatureRenderer().featureColours, - false,jalview.bin.Cache.getDefault("RELAXEDSEQIDMATCHING", false)); + false, jalview.bin.Cache.getDefault( + "RELAXEDSEQIDMATCHING", false)); } catch (Exception ex) { ex.printStackTrace(); @@ -4510,19 +4508,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (pdbfn.length() > 0) { // attempt to find a match in the alignment - SequenceI mtch = idm.findIdMatch(pdbfn); + SequenceI[] mtch = idm.findAllIdMatches(pdbfn); int l = 0, c = pdbfn.indexOf("."); while (mtch == null && c != -1) { - while ((c = pdbfn.indexOf(".", l)) > l) + do { l = c; - } + } while ((c = pdbfn.indexOf(".", l)) > l); if (l > -1) { pdbfn = pdbfn.substring(0, l); } - mtch = idm.findIdMatch(pdbfn); + mtch = idm.findAllIdMatches(pdbfn); } if (mtch != null) { @@ -4567,17 +4565,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // try and associate // TODO: may want to set a standard ID naming formalism for // associating PDB files which have no IDs. + for (SequenceI toassoc: (SequenceI[])fm[2]) { PDBEntry pe = new AssociatePdbFileWithSeq() .associatePdbWithSeq((String) fm[0], (String) fm[1], - (SequenceI) fm[2], false); + toassoc, false); if (pe != null) { System.err .println("Associated file : " + ((String) fm[0]) + " with " - + ((SequenceI) fm[2]).getDisplayId(true)); + + toassoc.getDisplayId(true)); assocfiles++; } + } alignPanel.paintAlignment(true); } } @@ -5041,6 +5041,26 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, alignPanel.paintAlignment(true); } } + + /** + * make the given alignmentPanel the currently selected tab + * + * @param alignmentPanel + */ + public void setDisplayedView(AlignmentPanel alignmentPanel) + { + if (!viewport.getSequenceSetId().equals( + alignmentPanel.av.getSequenceSetId())) + { + throw new Error( + "Implementation error: cannot show a view from another alignment in an AlignFrame."); + } + if (tabbedPane != null + & alignPanels.indexOf(alignmentPanel) != tabbedPane.getSelectedIndex()) + { + tabbedPane.setSelectedIndex(alignPanels.indexOf(alignmentPanel)); + } + } } class PrintThread extends Thread