X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=ca4b88073df161ebf2b91432c43de04fd2f90fdc;hb=6486a5333807ca300db4a28a6bf9899f5dddf5a6;hp=87776d30399b229c783508f3c7e28717652449a1;hpb=6b544d4a85673db44b7f75f40c22d9b7425d444e;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 87776d3..ca4b880 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -30,6 +30,7 @@ import javax.swing.*; import javax.swing.event.MenuEvent; import jalview.analysis.*; +import jalview.bin.Cache; import jalview.commands.*; import jalview.datamodel.*; import jalview.io.*; @@ -514,25 +515,22 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /* Set up intrinsic listeners for dynamically generated GUI bits. */ private void addServiceListeners() { - final java.beans.PropertyChangeListener thisListener, thatListener; - // Do this once to get current state - BuildWebServiceMenu(); - Desktop.discoverer - .addPropertyChangeListener(thisListener = new java.beans.PropertyChangeListener() + final java.beans.PropertyChangeListener thisListener; + Desktop.instance.addJalviewPropertyChangeListener("services", + thisListener = new java.beans.PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { - // System.out.println("Discoverer property change."); - if (evt.getPropertyName().equals("services")) + // // System.out.println("Discoverer property change."); + // if (evt.getPropertyName().equals("services")) { SwingUtilities.invokeLater(new Runnable() { - @Override public void run() { System.err - .println("Change support JWS1: build services again."); + .println("Rebuild WS Menu for service change"); BuildWebServiceMenu(); } @@ -540,29 +538,25 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } }); - jalview.ws.jws2.Jws2Discoverer.getDiscoverer() - .addPropertyChangeListener( - thatListener = new java.beans.PropertyChangeListener() - { - public void propertyChange(PropertyChangeEvent evt) - { - System.err - .println("Change support JWS2: build services again."); - BuildWebServiceMenu(); - } - }); addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() { public void internalFrameClosed( javax.swing.event.InternalFrameEvent evt) { - // System.out.println("deregistering discoverer listener"); - Desktop.discoverer.removePropertyChangeListener(thisListener); - jalview.ws.jws2.Jws2Discoverer.getDiscoverer() - .removePropertyChangeListener(thatListener); + System.out.println("deregistering discoverer listener"); + Desktop.instance.removeJalviewPropertyChangeListener("services", + thisListener); closeMenuItem_actionPerformed(true); }; }); + // Finally, build the menu once to get current service state + new Thread(new Runnable() + { + public void run() + { + BuildWebServiceMenu(); + } + }).start(); } public void setGUINucleotide(boolean nucleotide) @@ -705,8 +699,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public void actionPerformed(ActionEvent e) { handler.cancelActivity(id); - us.setProgressBar("Cancelled " - + ((JLabel) progressPanel.getComponent(0)).getText(), id); + us.setProgressBar( + "Cancelled " + + ((JLabel) progressPanel.getComponent(0)) + .getText(), id); } }); progressPanel.add(cancel, BorderLayout.EAST); @@ -844,8 +840,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ public void saveAs_actionPerformed(ActionEvent e) { - JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache - .getProperty("LAST_DIRECTORY"), + JalviewFileChooser chooser = new JalviewFileChooser( + jalview.bin.Cache.getProperty("LAST_DIRECTORY"), jalview.io.AppletFormatAdapter.WRITABLE_EXTENSIONS, jalview.io.AppletFormatAdapter.WRITABLE_FNAMES, currentFileFormat, false); @@ -1015,11 +1011,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, CutAndPasteTransfer cap = new CutAndPasteTransfer(); cap.setForInput(null); - Desktop.addInternalFrame(cap, "Alignment output - " - + e.getActionCommand(), 600, 500); - cap.setText(new FormatAdapter().formatSequences(e.getActionCommand(), - viewport.alignment, omitHidden, viewport.colSel)); + try + { + cap.setText(new FormatAdapter().formatSequences(e.getActionCommand(), + viewport.alignment, omitHidden, viewport.colSel)); + Desktop.addInternalFrame(cap, + "Alignment output - " + e.getActionCommand(), 600, 500); + } catch (OutOfMemoryError oom) + { + new OOMWarning("Outputting alignment as " + e.getActionCommand(), oom); + cap.dispose(); + } + } /** @@ -1030,9 +1034,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ protected void htmlMenuItem_actionPerformed(ActionEvent e) { - new HTMLOutput(alignPanel, alignPanel.seqPanel.seqCanvas - .getSequenceRenderer(), alignPanel.seqPanel.seqCanvas - .getFeatureRenderer()); + new HTMLOutput(alignPanel, + alignPanel.seqPanel.seqCanvas.getSequenceRenderer(), + alignPanel.seqPanel.seqCanvas.getFeatureRenderer()); } public void createImageMap(File file, String image) @@ -1088,7 +1092,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public void exportAnnotations_actionPerformed(ActionEvent e) { - new AnnotationExporter().exportAnnotations(alignPanel, + new AnnotationExporter().exportAnnotations( + alignPanel, viewport.showAnnotation ? viewport.alignment .getAlignmentAnnotation() : null, viewport.alignment .getGroups(), @@ -1098,8 +1103,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public void associatedData_actionPerformed(ActionEvent e) { // Pick the tree file - JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache - .getProperty("LAST_DIRECTORY")); + JalviewFileChooser chooser = new JalviewFileChooser( + jalview.bin.Cache.getProperty("LAST_DIRECTORY")); chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle("Load Jalview Annotations or Features File"); chooser.setToolTipText("Load Jalview Annotations / Features file"); @@ -1539,11 +1544,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, jalview.gui.Desktop.internalCopy = true; // Its really worth setting the clipboard contents // to empty before setting the large StringSelection!! - Toolkit.getDefaultToolkit().getSystemClipboard().setContents( - new StringSelection(""), null); + Toolkit.getDefaultToolkit().getSystemClipboard() + .setContents(new StringSelection(""), null); - Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, - Desktop.instance); + Toolkit.getDefaultToolkit().getSystemClipboard() + .setContents(ss, Desktop.instance); } catch (OutOfMemoryError er) { new OOMWarning("copying region", er); @@ -1806,8 +1811,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } buildSortByAnnotationScoresMenu(); } - viewport.firePropertyChange("alignment", null, alignment - .getSequences()); + viewport.firePropertyChange("alignment", null, + alignment.getSequences()); } else @@ -2704,8 +2709,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } pos = npos + 1; } while (npos != -1); - contents - .append("" + key + "" + val + ""); + contents.append("" + key + "" + val + ""); } contents.append(""); } @@ -2733,19 +2737,18 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, JInternalFrame frame = new JInternalFrame(); OverviewPanel overview = new OverviewPanel(alignPanel); frame.setContentPane(overview); - Desktop.addInternalFrame(frame, "Overview " + this.getTitle(), frame - .getWidth(), frame.getHeight()); + Desktop.addInternalFrame(frame, "Overview " + this.getTitle(), + frame.getWidth(), frame.getHeight()); frame.pack(); frame.setLayer(JLayeredPane.PALETTE_LAYER); - frame - .addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() - { - public void internalFrameClosed( - javax.swing.event.InternalFrameEvent evt) - { - alignPanel.setOverviewPanel(null); - }; - }); + frame.addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() + { + public void internalFrameClosed( + javax.swing.event.InternalFrameEvent evt) + { + alignPanel.setOverviewPanel(null); + }; + }); alignPanel.setOverviewPanel(overview); } @@ -2775,8 +2778,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public void clustalColour_actionPerformed(ActionEvent e) { changeColour(new ClustalxColourScheme( - viewport.alignment.getSequences(), viewport.alignment - .getWidth())); + viewport.alignment.getSequences(), + viewport.alignment.getWidth())); } /** @@ -2914,8 +2917,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, Alignment al = (Alignment) viewport.alignment; Conservation c = new Conservation("All", - ResidueProperties.propHash, 3, al.getSequences(), 0, al - .getWidth() - 1); + ResidueProperties.propHash, 3, al.getSequences(), 0, + al.getWidth() - 1); c.calculate(); c.verdict(false, viewport.ConsPercGaps); @@ -2951,8 +2954,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (cs instanceof ClustalxColourScheme) { - sg.cs = new ClustalxColourScheme(sg - .getSequences(viewport.hiddenRepSequences), sg.getWidth()); + sg.cs = new ClustalxColourScheme( + sg.getSequences(viewport.hiddenRepSequences), + sg.getWidth()); } else if (cs instanceof UserColourScheme) { @@ -2974,9 +2978,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { sg.cs.setThreshold(threshold, viewport.getIgnoreGapsConsensus()); - sg.cs.setConsensus(AAFrequency.calculate(sg - .getSequences(viewport.hiddenRepSequences), sg - .getStartRes(), sg.getEndRes() + 1)); + sg.cs.setConsensus(AAFrequency.calculate( + sg.getSequences(viewport.hiddenRepSequences), + sg.getStartRes(), sg.getEndRes() + 1)); } else { @@ -2986,9 +2990,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (viewport.getConservationSelected()) { Conservation c = new Conservation("Group", - ResidueProperties.propHash, 3, sg - .getSequences(viewport.hiddenRepSequences), sg - .getStartRes(), sg.getEndRes() + 1); + ResidueProperties.propHash, 3, + sg.getSequences(viewport.hiddenRepSequences), + sg.getStartRes(), sg.getEndRes() + 1); c.calculate(); c.verdict(false, viewport.ConsPercGaps); sg.cs.setConservation(c); @@ -3019,8 +3023,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (viewport.getAbovePIDThreshold() && viewport.globalColourScheme != null) { - SliderPanel.setPIDSliderSource(alignPanel, viewport - .getGlobalColourScheme(), "Background"); + SliderPanel.setPIDSliderSource(alignPanel, + viewport.getGlobalColourScheme(), "Background"); SliderPanel.showPIDSlider(); } } @@ -3130,8 +3134,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (evt.isControlDown() || SwingUtilities.isRightMouseButton(evt)) { - radioItem - .removeActionListener(radioItem.getActionListeners()[0]); + radioItem.removeActionListener(radioItem.getActionListeners()[0]); int option = JOptionPane.showInternalConfirmDialog( jalview.gui.Desktop.desktop, @@ -3505,8 +3508,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public void actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); - AlignmentSorter.sortByAnnotationScore(scoreLabel, viewport - .getAlignment());// ,viewport.getSelectionGroup()); + AlignmentSorter.sortByAnnotationScore(scoreLabel, + viewport.getAlignment());// ,viewport.getSelectionGroup()); addHistoryItem(new OrderCommand("Sort by " + scoreLabel, oldOrder, viewport.alignment)); alignPanel.paintAlignment(true); @@ -3554,8 +3557,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, Enumeration labels = scoreSorts.keys(); while (labels.hasMoreElements()) { - addSortByAnnotScoreMenuItem(sortByAnnotScore, (String) labels - .nextElement()); + addSortByAnnotScoreMenuItem(sortByAnnotScore, + (String) labels.nextElement()); } sortByAnnotScore.setVisible(scoreSorts.size() > 0); scoreSorts.clear(); @@ -3710,8 +3713,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, protected void LoadtreeMenuItem_actionPerformed(ActionEvent e) { // Pick the tree file - JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache - .getProperty("LAST_DIRECTORY")); + JalviewFileChooser chooser = new JalviewFileChooser( + jalview.bin.Cache.getProperty("LAST_DIRECTORY")); chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle("Select a newick-like tree file"); chooser.setToolTipText("Load a tree file"); @@ -3735,8 +3738,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } if (fin != null && fin.hasWarningMessage()) { - JOptionPane.showMessageDialog(Desktop.desktop, fin - .getWarningMessage(), "Possible problem with tree file", + JOptionPane.showMessageDialog(Desktop.desktop, + fin.getWarningMessage(), "Possible problem with tree file", JOptionPane.WARNING_MESSAGE); } } @@ -3828,7 +3831,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } ; } + final AlignFrame me = this; buildingMenu = true; + new Thread(new Runnable() { + public void run() { try { System.err @@ -3841,9 +3847,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // TODO: add in rediscovery GUI function to restart discoverer // TODO: group services by location as well as function and/or introduce // object broker mechanism. - Vector wsmenu = new Vector(); - final IProgressIndicator af = this; - if ((Discoverer.services != null) && (Discoverer.services.size() > 0)) + final Vector wsmenu = new Vector(); + final IProgressIndicator af = me; + if (Cache.getDefault("SHOW_JWS1_SERVICES", true) + && Discoverer.services != null + && (Discoverer.services.size() > 0)) { // TODO: refactor to allow list of AbstractName/Handler bindings to be // stored or retrieved from elsewhere @@ -3864,7 +3872,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .get(i); jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer .getServiceClient(sh); - impl.attachWSMenuEntry(msawsmenu, this); + impl.attachWSMenuEntry(msawsmenu, me); } wsmenu.add(msawsmenu); @@ -3880,7 +3888,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .get(i); jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer .getServiceClient(sh); - impl.attachWSMenuEntry(secstrmenu, this); + impl.attachWSMenuEntry(secstrmenu, me); } wsmenu.add(secstrmenu); } @@ -3894,13 +3902,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .elementAt(i); jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer .getServiceClient(sh); - impl.attachWSMenuEntry(seqsrchmenu, this); + impl.attachWSMenuEntry(seqsrchmenu, me); } wsmenu.add(seqsrchmenu); } } // TODO: move into separate menu builder class. + if (Cache.getDefault("SHOW_JWS2_SERVICES", true)) { Jws2Discoverer jws2servs = Jws2Discoverer.getDiscoverer(); if (jws2servs != null) @@ -3908,18 +3917,18 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (jws2servs.hasServices()) { JMenu jws2men = new JMenu("Jalview 2 Services"); - jws2servs.attachWSMenuEntry(jws2men, this); - wsmenu.add(jws2men); - } - else - { - if (!jws2servs.isRunning()) + jws2servs.attachWSMenuEntry(jws2men, me); + for (int i = 0, iSize = jws2men.getMenuComponentCount(); i < iSize; i++) { - new Thread(jws2servs).start(); + wsmenu.add(jws2men.getMenuComponent(i)); } } } } + + javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { + try { + resetWebServiceMenu(); // finally, add the whole shebang onto the webservices menu if (wsmenu.size() > 0) @@ -3931,13 +3940,22 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } else { - this.webService.add(this.webServiceNoServices); + me.webService.add(me.webServiceNoServices); } + } catch (Exception e) + { + } + ; + } + }); } catch (Exception e) { } ; + buildingMenu = false; + }}).start(); + } /** @@ -3959,8 +3977,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ private void build_urlServiceMenu(JMenu webService) { - jalview.ws.EnfinEnvision2OneWay.getInstance().attachWSMenuEntry( - webService, this); + if (Cache.getDefault("SHOW_ENFIN_SERVICES", true)) + { + jalview.ws.EnfinEnvision2OneWay.getInstance().attachWSMenuEntry( + webService, this); + } } /* @@ -4045,8 +4066,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } catch (Exception e) { jalview.bin.Cache.log - .warn( - "canTranslate threw an exception - please report to help@jalview.org", + .warn("canTranslate threw an exception - please report to help@jalview.org", e); return false; } @@ -4136,13 +4156,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // old way try { - return (jalview.analysis.Dna.canTranslate(selection, viewport - .getViewAsVisibleContigs(true))); + return (jalview.analysis.Dna.canTranslate(selection, + viewport.getViewAsVisibleContigs(true))); } catch (Exception e) { jalview.bin.Cache.log - .warn( - "canTranslate threw an exception - please report to help@jalview.org", + .warn("canTranslate threw an exception - please report to help@jalview.org", e); return false; } @@ -4231,9 +4250,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, boolean featuresFile = false; try { - featuresFile = new FeaturesFile(file, type).parse(viewport.alignment - .getDataset(), alignPanel.seqPanel.seqCanvas - .getFeatureRenderer().featureColours, false); + featuresFile = new FeaturesFile(file, type) + .parse(viewport.alignment.getDataset(), + alignPanel.seqPanel.seqCanvas.getFeatureRenderer().featureColours, + false); } catch (Exception ex) { ex.printStackTrace(); @@ -4373,8 +4393,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { jalview.io.JPredFile predictions = new jalview.io.JPredFile(file, protocol); - new JnetAnnotationMaker().add_annotation(predictions, viewport - .getAlignment(), 0, false); + new JnetAnnotationMaker().add_annotation(predictions, + viewport.getAlignment(), 0, false); isAnnotation = true; } else @@ -4515,13 +4535,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // preferences and have checkboxes.. rather than individual sources selected // here JMenu rfetch = new JMenu("Fetch DB References"); - rfetch - .setToolTipText("Retrieve and parse sequence database records for the alignment or the currently selected sequences"); + rfetch.setToolTipText("Retrieve and parse sequence database records for the alignment or the currently selected sequences"); webService.add(rfetch); JMenuItem fetchr = new JMenuItem("Standard Databases"); - fetchr - .setToolTipText("Fetch from EMBL/EMBLCDS or Uniprot/PDB and any selected DAS sources"); + fetchr.setToolTipText("Fetch from EMBL/EMBLCDS or Uniprot/PDB and any selected DAS sources"); fetchr.addActionListener(new ActionListener() { @@ -4704,8 +4722,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (viewport.getSelectionGroup() != null) { SequenceGroup[] gps = jalview.analysis.Grouping.makeGroupsFrom( - viewport.getSequenceSelection(), viewport.getAlignmentView( - true).getSequenceStrings(viewport.getGapCharacter()), + viewport.getSequenceSelection(), + viewport.getAlignmentView(true).getSequenceStrings( + viewport.getGapCharacter()), viewport.alignment.getGroups()); viewport.alignment.deleteAllGroups(); viewport.sequenceColours = null; @@ -4716,8 +4735,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, gps[g].setShowNonconserved(viewport.getShowUnconserved()); gps[g].setshowSequenceLogo(viewport.isShowSequenceLogo()); viewport.alignment.addGroup(gps[g]); - Color col = new Color((int) (Math.random() * 255), (int) (Math - .random() * 255), (int) (Math.random() * 255)); + Color col = new Color((int) (Math.random() * 255), + (int) (Math.random() * 255), (int) (Math.random() * 255)); col = col.brighter(); for (Enumeration sq = gps[g].getSequences(null).elements(); sq .hasMoreElements(); viewport.setSequenceColour(