X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=8ae4601ba56279fff7430aebfeb52e4d05b7bf80;hb=4df015be529a2e1b12c6b82b061798e186cc154b;hp=c41f57cc924db867de493008b2c5f773434981ae;hpb=49db0dff1da16c3355b43a41498c1fc93ef47e91;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index c41f57c..8ae4601 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -28,7 +28,6 @@ import java.util.Set; import javax.swing.JFileChooser; import javax.swing.JOptionPane; - import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; @@ -104,6 +103,7 @@ import jalview.api.SplitContainerI; import jalview.api.ViewStyleI; import jalview.api.analysis.SimilarityParamsI; import jalview.bin.Cache; +import jalview.bin.Console; import jalview.bin.Jalview; import jalview.commands.CommandI; import jalview.commands.EditCommand; @@ -182,7 +182,11 @@ import jalview.ws.params.ArgumentI; import jalview.ws.params.ParamDatastoreI; import jalview.ws.params.WsParamSetI; import jalview.ws.seqfetcher.DbSourceProxy; -import jalview.ws.slivkaws.SlivkaWSDiscoverer; +import jalview.ws2.client.api.WebServiceDiscovererI; +import jalview.ws2.client.ebi.JobDispatcherWSDiscoverer; +import jalview.ws2.client.slivka.SlivkaWSDiscoverer; +import jalview.ws2.gui.WebServicesMenuManager; + import java.io.IOException; import java.util.HashSet; import java.util.Set; @@ -467,8 +471,8 @@ public class AlignFrame extends GAlignFrame alignPanel = new AlignmentPanel(this, viewport); } addAlignmentPanel(alignPanel, newPanel); - // setBackground(Color.white); // BH 2019 + if (!Jalview.isHeadlessMode()) { progressBar = new ProgressBar(this.statusPanel, this.statusBar); @@ -489,7 +493,7 @@ public class AlignFrame extends GAlignFrame // modifyPID.setEnabled(false); } - String sortby = jalview.bin.Cache.getDefault(Preferences.SORT_ALIGNMENT, + String sortby = Cache.getDefault(Preferences.SORT_ALIGNMENT, "No sort"); if (sortby.equals("Id")) @@ -534,7 +538,7 @@ public class AlignFrame extends GAlignFrame wrapMenuItem_actionPerformed(null); } - if (jalview.bin.Cache.getDefault(Preferences.SHOW_OVERVIEW, false)) + if (Cache.getDefault(Preferences.SHOW_OVERVIEW, false)) { this.overviewMenuItem_actionPerformed(null); } @@ -611,8 +615,8 @@ public class AlignFrame extends GAlignFrame }); if (Cache.getDefault("VERSION", "DEVELOPMENT").toLowerCase(Locale.ROOT) .indexOf("devel") > -1 - || Cache.getDefault("VERSION", "DEVELOPMENT").toLowerCase(Locale.ROOT) - .indexOf("test") > -1) + || Cache.getDefault("VERSION", "DEVELOPMENT") + .toLowerCase(Locale.ROOT).indexOf("test") > -1) { formatMenu.add(vsel); } @@ -719,7 +723,7 @@ public class AlignFrame extends GAlignFrame } if (viewport.cursorMode) { - alignPanel.getSeqPanel().moveCursor(0, -1,evt.isShiftDown()); + alignPanel.getSeqPanel().moveCursor(0, -1, evt.isShiftDown()); } break; @@ -964,13 +968,36 @@ public class AlignFrame extends GAlignFrame { buildWebServicesMenu(); } + + private WebServiceDiscovererI.ServicesChangeListener slivkaServiceChangeListener = + (discoverer, services) -> { + // run when slivka services change + var menu = AlignFrame.this.slivkaMenu; + menu.setServices(discoverer); + menu.setInProgress(discoverer.isRunning()); + menu.setNoServices(services.isEmpty() && discoverer.isDone()); + }; + + private WebServiceDiscovererI.ServicesChangeListener ebiServiceChangeListener = + (discoverer, services) -> { + // run when ebi services change + var menu = AlignFrame.this.ebiMenu; + menu.setServices(discoverer); + menu.setInProgress(discoverer.isRunning()); + menu.setNoServices(services.isEmpty() && discoverer.isDone()); + }; + /* Set up intrinsic listeners for dynamically generated GUI bits. */ private void addServiceListeners() { if (Cache.getDefault("SHOW_SLIVKA_SERVICES", true)) { - WSDiscovererI discoverer = SlivkaWSDiscoverer.getInstance(); - discoverer.addServiceChangeListener(this); + WebServiceDiscovererI discoverer = SlivkaWSDiscoverer.getInstance(); + discoverer.addServicesChangeListener(slivkaServiceChangeListener); + } + if (Cache.getDefault("SHOW_EBI_SERVICES", true)) + { + JobDispatcherWSDiscoverer.getInstance().addServicesChangeListener(ebiServiceChangeListener); } if (Cache.getDefault("SHOW_JWS2_SERVICES", true)) { @@ -987,7 +1014,7 @@ public class AlignFrame extends GAlignFrame @Override public void internalFrameClosed(InternalFrameEvent e) { System.out.println("deregistering discoverer listener"); - SlivkaWSDiscoverer.getInstance().removeServiceChangeListener(AlignFrame.this); + SlivkaWSDiscoverer.getInstance().removeServicesChangeListener(slivkaServiceChangeListener); Jws2Discoverer.getInstance().removeServiceChangeListener(AlignFrame.this); Desktop.getInstance().removeJalviewPropertyChangeListener("services", legacyListener); closeMenuItem_actionPerformed(true); @@ -1111,6 +1138,12 @@ public class AlignFrame extends GAlignFrame } @Override + public void addProgressBar(long id, String message) + { + progressBar.addProgressBar(id, message); + } + + @Override public void removeProgressBar(long id) { progressBar.removeProgressBar(id); @@ -1149,7 +1182,7 @@ public class AlignFrame extends GAlignFrame */ public String getVersion() { - return jalview.bin.Cache.getProperty("VERSION"); + return Cache.getProperty("VERSION"); } public FeatureRenderer getFeatureRenderer() @@ -1606,7 +1639,7 @@ public class AlignFrame extends GAlignFrame } else { - Cache.log.error(MessageManager + Console.error(MessageManager .formatMessage("label.couldnt_save_file", new Object[] { lastFilenameSaved })); } @@ -1648,9 +1681,11 @@ public class AlignFrame extends GAlignFrame } lastSaveSuccessful = new Jalview2XML().saveAlignment(this, file, shortName); + statusBar.setText(MessageManager.formatMessage( "label.successfully_saved_to_file_in_format", new Object[] { fileName, format })); + return; } @@ -1687,7 +1722,7 @@ public class AlignFrame extends GAlignFrame BackupFiles backupfiles = null; if (doBackup) { - Cache.log.trace( + Console.trace( "ALIGNFRAME making backupfiles object for " + file); backupfiles = new BackupFiles(file); } @@ -1695,19 +1730,19 @@ public class AlignFrame extends GAlignFrame { String tempFilePath = doBackup ? backupfiles.getTempFilePath() : file; - Cache.log.trace("ALIGNFRAME setting PrintWriter"); + Console.trace("ALIGNFRAME setting PrintWriter"); PrintWriter out = new PrintWriter(new FileWriter(tempFilePath)); if (backupfiles != null) { - Cache.log.trace("ALIGNFRAME about to write to temp file " + Console.trace("ALIGNFRAME about to write to temp file " + backupfiles.getTempFilePath()); } out.print(output); - Cache.log.trace("ALIGNFRAME about to close file"); + Console.trace("ALIGNFRAME about to close file"); out.close(); - Cache.log.trace("ALIGNFRAME closed file"); + Console.trace("ALIGNFRAME closed file"); AlignFrame.this.setTitle(file); statusBar.setText(MessageManager.formatMessage( "label.successfully_saved_to_file_in_format", @@ -1717,29 +1752,29 @@ public class AlignFrame extends GAlignFrame } catch (IOException e) { lastSaveSuccessful = false; - Cache.log.error( + Console.error( "ALIGNFRAME Something happened writing the temp file"); - Cache.log.error(e.getMessage()); - Cache.log.debug(Cache.getStackTraceString(e)); + Console.error(e.getMessage()); + Console.debug(Cache.getStackTraceString(e)); } catch (Exception ex) { lastSaveSuccessful = false; - Cache.log.error( + Console.error( "ALIGNFRAME Something unexpected happened writing the temp file"); - Cache.log.error(ex.getMessage()); - Cache.log.debug(Cache.getStackTraceString(ex)); + Console.error(ex.getMessage()); + Console.debug(Cache.getStackTraceString(ex)); } if (doBackup) { backupfiles.setWriteSuccess(lastSaveSuccessful); - Cache.log.debug("ALIGNFRAME writing temp file was " + Console.debug("ALIGNFRAME writing temp file was " + (lastSaveSuccessful ? "" : "NOT ") + "successful"); // do the backup file roll and rename the temp file to actual file - Cache.log.trace( + Console.trace( "ALIGNFRAME about to rollBackupsAndRenameTempFile"); lastSaveSuccessful = backupfiles.rollBackupsAndRenameTempFile(); - Cache.log.debug( + Console.debug( "ALIGNFRAME performed rollBackupsAndRenameTempFile " + (lastSaveSuccessful ? "" : "un") + "successfully"); @@ -1924,7 +1959,7 @@ public class AlignFrame extends GAlignFrame throws IOException, InterruptedException { final JalviewFileChooser chooser = new JalviewFileChooser( - jalview.bin.Cache.getProperty("LAST_DIRECTORY")); + Cache.getProperty("LAST_DIRECTORY")); chooser.setFileView(new JalviewFileView()); String tooltip = MessageManager .getString("label.load_jalview_annotations"); @@ -1936,7 +1971,7 @@ public class AlignFrame extends GAlignFrame public void run() { String choice = chooser.getSelectedFile().getPath(); - jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice); + Cache.setProperty("LAST_DIRECTORY", choice); loadJalviewDataFile(chooser.getSelectedFile(), null, null, null); } }); @@ -2123,7 +2158,7 @@ public class AlignFrame extends GAlignFrame { if (originalSource != viewport) { - Cache.log.warn( + Console.warn( "Implementation worry: mismatch of viewport origin for undo"); } originalSource.updateHiddenColumns(); @@ -2162,7 +2197,7 @@ public class AlignFrame extends GAlignFrame if (originalSource != viewport) { - Cache.log.warn( + Console.warn( "Implementation worry: mismatch of viewport origin for redo"); } originalSource.updateHiddenColumns(); @@ -2246,7 +2281,9 @@ public class AlignFrame extends GAlignFrame { return; } + // TODO: JAL-3733 - add an event to the undo buffer for this ! + viewport.getAlignment().moveSelectedSequencesByOne(sg, viewport.getHiddenRepSequences(), up); alignPanel.paintAlignment(true, false); @@ -2867,7 +2904,6 @@ public class AlignFrame extends GAlignFrame Runnable okAction = new Runnable() { - @Override public void run() { @@ -2885,7 +2921,6 @@ public class AlignFrame extends GAlignFrame viewport.getAlignment().deleteGroup(sg); viewport.notifyAlignment(); - if (viewport.getAlignment().getHeight() < 1) { try @@ -3796,6 +3831,7 @@ public class AlignFrame extends GAlignFrame JLabel textLabel = new JLabel(); textLabel.setText(content); textLabel.setBackground(Color.WHITE); + pane = new JPanel(new BorderLayout()); ((JPanel) pane).setOpaque(true); pane.setBackground(Color.WHITE); @@ -4521,7 +4557,7 @@ public class AlignFrame extends GAlignFrame { // Pick the tree file JalviewFileChooser chooser = new JalviewFileChooser( - jalview.bin.Cache.getProperty("LAST_DIRECTORY")); + Cache.getProperty("LAST_DIRECTORY")); chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle( MessageManager.getString("label.select_newick_like_tree_file")); @@ -4634,6 +4670,8 @@ public class AlignFrame extends GAlignFrame return tp; } + private WebServicesMenuManager slivkaMenu = new WebServicesMenuManager("slivka", this); + private WebServicesMenuManager ebiMenu = new WebServicesMenuManager("job dispatcher", this); /** * Schedule the web services menu rebuild to the event dispatch thread. @@ -4641,15 +4679,25 @@ public class AlignFrame extends GAlignFrame public void buildWebServicesMenu() { SwingUtilities.invokeLater(() -> { - Cache.log.info("Rebuiling WS menu"); + Console.info("Rebuiling WS menu"); webService.removeAll(); if (Cache.getDefault("SHOW_SLIVKA_SERVICES", true)) { - Cache.log.info("Building web service menu for slivka"); + Console.info("Building web service menu for slivka"); SlivkaWSDiscoverer discoverer = SlivkaWSDiscoverer.getInstance(); - JMenu submenu = new JMenu("Slivka"); - buildWebServicesMenu(discoverer, submenu); - webService.add(submenu); + slivkaMenu.setServices(discoverer); + slivkaMenu.setInProgress(discoverer.isRunning()); + slivkaMenu.setNoServices(discoverer.isDone() && !discoverer.hasServices()); + webService.add(slivkaMenu.getMenu()); + } + if (Cache.getDefault("SHOW_EBI_SERVICES", true)) + { + Console.info("Building web services menu for jobs dispatcher"); + JobDispatcherWSDiscoverer discoverer = JobDispatcherWSDiscoverer.getInstance(); + ebiMenu.setServices(discoverer); + ebiMenu.setInProgress(discoverer.isRunning()); + ebiMenu.setNoServices(discoverer.isDone() && !discoverer.hasServices()); + webService.add(ebiMenu.getMenu()); } if (Cache.getDefault("SHOW_JWS2_SERVICES", true)) { @@ -4659,6 +4707,7 @@ public class AlignFrame extends GAlignFrame buildWebServicesMenu(jws2servs, submenu); webService.add(submenu); } + build_urlServiceMenu(webService); build_fetchdbmenu(webService); }); } @@ -4794,7 +4843,7 @@ public class AlignFrame extends GAlignFrame showProducts.setEnabled(showp); } catch (Exception e) { - Cache.log.warn( + Console.warn( "canShowProducts threw an exception - please report to help@jalview.org", e); return false; @@ -4835,8 +4884,8 @@ public class AlignFrame extends GAlignFrame al = dna.translateCdna(codeTable); } catch (Exception ex) { - jalview.bin.Cache.log.error( - "Exception during translation. Please report this !", ex); + Console.error("Exception during translation. Please report this !", + ex); final String msg = MessageManager.getString( "label.error_when_translating_sequences_submit_bug_report"); final String errorTitle = MessageManager @@ -5204,7 +5253,7 @@ public class AlignFrame extends GAlignFrame } } catch (Exception x) { - Cache.log.debug( + Console.debug( "Exception when processing data source as T-COFFEE score file", x); tcf = null; @@ -6280,6 +6329,7 @@ public class AlignFrame extends GAlignFrame } private Rectangle lastFeatureSettingsBounds = null; + @Override public void setFeatureSettingsGeometry(Rectangle bounds) {