X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=7b310b18095a89f6f320f40a50ef1b554fd16468;hb=692669611f7244598bd34df92e8a3e5cbaf9bd2e;hp=61ee23161086cc9d674ffc585f02640ea9a144b2;hpb=dc24bc768061f6e08be77d7e18709da98c6f9428;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 61ee231..7b310b1 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -57,7 +57,9 @@ import java.util.Deque; import java.util.Enumeration; import java.util.Hashtable; import java.util.List; +import java.util.Locale; import java.util.Vector; +import java.util.concurrent.Callable; import javax.swing.ButtonGroup; import javax.swing.JCheckBoxMenuItem; @@ -91,6 +93,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; @@ -347,6 +350,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ void init() { + setFrameIcon(null); + // setBackground(Color.white); // BH 2019 if (!Jalview.isHeadlessMode()) @@ -366,8 +371,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // modifyPID.setEnabled(false); } - String sortby = jalview.bin.Cache.getDefault("SORT_ALIGNMENT", - "No sort"); + String sortby = Cache.getDefault("SORT_ALIGNMENT", "No sort"); if (sortby.equals("Id")) { @@ -409,7 +413,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, wrapMenuItem_actionPerformed(null); } - if (jalview.bin.Cache.getDefault("SHOW_OVERVIEW", false)) + if (Cache.getDefault("SHOW_OVERVIEW", false)) { this.overviewMenuItem_actionPerformed(null); } @@ -484,10 +488,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } }); - if (Cache.getDefault("VERSION", "DEVELOPMENT").toLowerCase() + if (Cache.getDefault("VERSION", "DEVELOPMENT").toLowerCase(Locale.ROOT) .indexOf("devel") > -1 - || Cache.getDefault("VERSION", "DEVELOPMENT").toLowerCase() - .indexOf("test") > -1) + || Cache.getDefault("VERSION", "DEVELOPMENT") + .toLowerCase(Locale.ROOT).indexOf("test") > -1) { formatMenu.add(vsel); } @@ -565,7 +569,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } if (viewport.cursorMode) { - alignPanel.getSeqPanel().moveCursor(0, 1); + alignPanel.getSeqPanel().moveCursor(0, 1, evt.isShiftDown()); } break; @@ -576,7 +580,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } if (viewport.cursorMode) { - alignPanel.getSeqPanel().moveCursor(0, -1); + alignPanel.getSeqPanel().moveCursor(0, -1, evt.isShiftDown()); } break; @@ -589,7 +593,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } else { - alignPanel.getSeqPanel().moveCursor(-1, 0); + alignPanel.getSeqPanel().moveCursor(-1, 0, evt.isShiftDown()); } break; @@ -601,7 +605,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } else { - alignPanel.getSeqPanel().moveCursor(1, 0); + alignPanel.getSeqPanel().moveCursor(1, 0, evt.isShiftDown()); } break; @@ -976,7 +980,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void setProgressBar(String message, long id) { - progressBar.setProgressBar(message, id); + if (!Platform.isHeadless()) + progressBar.setProgressBar(message, id); } @Override @@ -1012,7 +1017,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ public String getVersion() { - return jalview.bin.Cache.getProperty("VERSION"); + return Cache.getProperty("VERSION"); } public FeatureRenderer getFeatureRenderer() @@ -1214,7 +1219,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } else { - Cache.log.error(MessageManager + Console.error(MessageManager .formatMessage("label.couldnt_save_file", new Object[] { lastFilenameSaved })); } @@ -1257,6 +1262,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, lastSaveSuccessful = new Jalview2XML().saveAlignment(this, file, shortName); + Console.debug("lastSaveSuccessful=" + lastSaveSuccessful); + if (lastSaveSuccessful) + { + this.getViewport().setSavedUpToDate(true); + } + statusBar.setText(MessageManager.formatMessage( "label.successfully_saved_to_file_in_format", new Object[] { file, format })); @@ -1265,97 +1276,89 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } AlignExportSettingsI options = new AlignExportSettingsAdapter(false); - Runnable cancelAction = new Runnable() - { - @Override - public void run() + Callable cancelAction = () -> { + lastSaveSuccessful = false; + return null; + }; + Callable outputAction = () -> { + // todo defer this to inside formatSequences (or later) + AlignmentExportData exportData = viewport.getAlignExportData(options); + String output = new FormatAdapter(alignPanel, options) + .formatSequences(format, exportData.getAlignment(), + exportData.getOmitHidden(), + exportData.getStartEndPostions(), + viewport.getAlignment().getHiddenColumns()); + if (output == null) { lastSaveSuccessful = false; } - }; - Runnable outputAction = new Runnable() - { - @Override - public void run() + else { - // todo defer this to inside formatSequences (or later) - AlignmentExportData exportData = viewport - .getAlignExportData(options); - String output = new FormatAdapter(alignPanel, options) - .formatSequences(format, exportData.getAlignment(), - exportData.getOmitHidden(), - exportData.getStartEndPostions(), - viewport.getAlignment().getHiddenColumns()); - if (output == null) + // create backupfiles object and get new temp filename destination + boolean doBackup = BackupFiles.getEnabled(); + BackupFiles backupfiles = null; + if (doBackup) { - lastSaveSuccessful = false; + Console.trace("ALIGNFRAME making backupfiles object for " + file); + backupfiles = new BackupFiles(file); } - else + try { - // create backupfiles object and get new temp filename destination - boolean doBackup = BackupFiles.getEnabled(); - BackupFiles backupfiles = null; - if (doBackup) + String tempFilePath = doBackup ? backupfiles.getTempFilePath() + : file; + Console.trace("ALIGNFRAME setting PrintWriter"); + PrintWriter out = new PrintWriter(new FileWriter(tempFilePath)); + + if (backupfiles != null) { - Cache.log.trace( - "ALIGNFRAME making backupfiles object for " + file); - backupfiles = new BackupFiles(file); + Console.trace("ALIGNFRAME about to write to temp file " + + backupfiles.getTempFilePath()); } - try - { - String tempFilePath = doBackup ? backupfiles.getTempFilePath() - : file; - Cache.log.trace("ALIGNFRAME setting PrintWriter"); - PrintWriter out = new PrintWriter(new FileWriter(tempFilePath)); - if (backupfiles != null) - { - Cache.log.trace("ALIGNFRAME about to write to temp file " - + backupfiles.getTempFilePath()); - } + out.print(output); + Console.trace("ALIGNFRAME about to close file"); + out.close(); + Console.trace("ALIGNFRAME closed file"); + AlignFrame.this.setTitle(file); + statusBar.setText(MessageManager.formatMessage( + "label.successfully_saved_to_file_in_format", new Object[] + { fileName, format.getName() })); + lastSaveSuccessful = true; + } catch (IOException e) + { + lastSaveSuccessful = false; + Console.error( + "ALIGNFRAME Something happened writing the temp file"); + Console.error(e.getMessage()); + Console.debug(Cache.getStackTraceString(e)); + } catch (Exception ex) + { + lastSaveSuccessful = false; + Console.error( + "ALIGNFRAME Something unexpected happened writing the temp file"); + Console.error(ex.getMessage()); + Console.debug(Cache.getStackTraceString(ex)); + } - out.print(output); - Cache.log.trace("ALIGNFRAME about to close file"); - out.close(); - Cache.log.trace("ALIGNFRAME closed file"); - AlignFrame.this.setTitle(file); - statusBar.setText(MessageManager.formatMessage( - "label.successfully_saved_to_file_in_format", - new Object[] - { fileName, format.getName() })); - lastSaveSuccessful = true; - } catch (IOException e) - { - lastSaveSuccessful = false; - Cache.log.error( - "ALIGNFRAME Something happened writing the temp file"); - Cache.log.error(e.getMessage()); - Cache.log.debug(Cache.getStackTraceString(e)); - } catch (Exception ex) - { - lastSaveSuccessful = false; - Cache.log.error( - "ALIGNFRAME Something unexpected happened writing the temp file"); - Cache.log.error(ex.getMessage()); - Cache.log.debug(Cache.getStackTraceString(ex)); - } + if (doBackup) + { + backupfiles.setWriteSuccess(lastSaveSuccessful); + Console.debug("ALIGNFRAME writing temp file was " + + (lastSaveSuccessful ? "" : "NOT ") + "successful"); + // do the backup file roll and rename the temp file to actual file + Console.trace("ALIGNFRAME about to rollBackupsAndRenameTempFile"); + lastSaveSuccessful = backupfiles.rollBackupsAndRenameTempFile(); + Console.debug("ALIGNFRAME performed rollBackupsAndRenameTempFile " + + (lastSaveSuccessful ? "" : "un") + "successfully"); + } - if (doBackup) - { - backupfiles.setWriteSuccess(lastSaveSuccessful); - Cache.log.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( - "ALIGNFRAME about to rollBackupsAndRenameTempFile"); - lastSaveSuccessful = backupfiles.rollBackupsAndRenameTempFile(); - Cache.log.debug( - "ALIGNFRAME performed rollBackupsAndRenameTempFile " - + (lastSaveSuccessful ? "" : "un") - + "successfully"); - } + Console.debug("lastSaveSuccessful=" + lastSaveSuccessful); + if (lastSaveSuccessful) + { + AlignFrame.this.getViewport().setSavedUpToDate(true); } } + return null; }; /* @@ -1371,7 +1374,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } else { - outputAction.run(); + try + { + outputAction.call(); + } catch (Exception e) + { + // TODO Auto-generated catch block + e.printStackTrace(); + } } } @@ -1388,34 +1398,29 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, FileFormatI fileFormat = FileFormats.getInstance() .forName(fileFormatName); AlignExportSettingsI options = new AlignExportSettingsAdapter(false); - Runnable outputAction = new Runnable() - { - @Override - public void run() + Callable outputAction = () -> { + // todo defer this to inside formatSequences (or later) + AlignmentExportData exportData = viewport.getAlignExportData(options); + CutAndPasteTransfer cap = new CutAndPasteTransfer(); + cap.setForInput(null); + try { - // todo defer this to inside formatSequences (or later) - AlignmentExportData exportData = viewport - .getAlignExportData(options); - CutAndPasteTransfer cap = new CutAndPasteTransfer(); - cap.setForInput(null); - try - { - FileFormatI format = fileFormat; - cap.setText(new FormatAdapter(alignPanel, options) - .formatSequences(format, exportData.getAlignment(), - exportData.getOmitHidden(), - exportData.getStartEndPostions(), - viewport.getAlignment().getHiddenColumns())); - Desktop.addInternalFrame(cap, MessageManager.formatMessage( - "label.alignment_output_command", new Object[] - { fileFormat.getName() }), 600, 500); - } catch (OutOfMemoryError oom) - { - new OOMWarning("Outputting alignment as " + fileFormat.getName(), - oom); - cap.dispose(); - } + FileFormatI format = fileFormat; + cap.setText(new FormatAdapter(alignPanel, options).formatSequences( + format, exportData.getAlignment(), + exportData.getOmitHidden(), + exportData.getStartEndPostions(), + viewport.getAlignment().getHiddenColumns())); + Desktop.addInternalFrame(cap, MessageManager.formatMessage( + "label.alignment_output_command", new Object[] + { fileFormat.getName() }), 600, 500); + } catch (OutOfMemoryError oom) + { + new OOMWarning("Outputting alignment as " + fileFormat.getName(), + oom); + cap.dispose(); } + return null; }; /* @@ -1430,7 +1435,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } else { - outputAction.run(); + try + { + outputAction.call(); + } catch (Exception e) + { + e.printStackTrace(); + } } } @@ -1532,21 +1543,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public void associatedData_actionPerformed(ActionEvent e) { 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"); chooser.setDialogTitle(tooltip); chooser.setToolTipText(tooltip); - chooser.setResponseHandler(0, new Runnable() - { - @Override - public void run() - { - String choice = chooser.getSelectedFile().getPath(); - jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice); - loadJalviewDataFile(chooser.getSelectedFile(), null, null, null); - } + chooser.setResponseHandler(0, () -> { + String choice = chooser.getSelectedFile().getPath(); + Cache.setProperty("LAST_DIRECTORY", choice); + loadJalviewDataFile(chooser.getSelectedFile(), null, null, null); + return null; }); chooser.showOpenDialog(this); @@ -1731,7 +1738,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (originalSource != viewport) { - Cache.log.warn( + Console.warn( "Implementation worry: mismatch of viewport origin for undo"); } originalSource.updateHiddenColumns(); @@ -1771,7 +1778,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (originalSource != viewport) { - Cache.log.warn( + Console.warn( "Implementation worry: mismatch of viewport origin for redo"); } originalSource.updateHiddenColumns(); @@ -2468,36 +2475,31 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return; } - Runnable okAction = new Runnable() - { - @Override - public void run() - { - SequenceI[] cut = sg.getSequences() - .toArray(new SequenceI[sg.getSize()]); + Callable okAction = () -> { + SequenceI[] cut = sg.getSequences() + .toArray(new SequenceI[sg.getSize()]); - addHistoryItem(new EditCommand( - MessageManager.getString("label.cut_sequences"), Action.CUT, - cut, sg.getStartRes(), - sg.getEndRes() - sg.getStartRes() + 1, - viewport.getAlignment())); + addHistoryItem(new EditCommand( + MessageManager.getString("label.cut_sequences"), Action.CUT, + cut, sg.getStartRes(), sg.getEndRes() - sg.getStartRes() + 1, + viewport.getAlignment())); - viewport.setSelectionGroup(null); - viewport.sendSelection(); - viewport.getAlignment().deleteGroup(sg); + viewport.setSelectionGroup(null); + viewport.sendSelection(); + viewport.getAlignment().deleteGroup(sg); - viewport.firePropertyChange("alignment", null, - viewport.getAlignment().getSequences()); - if (viewport.getAlignment().getHeight() < 1) + viewport.firePropertyChange("alignment", null, + viewport.getAlignment().getSequences()); + if (viewport.getAlignment().getHeight() < 1) + { + try + { + AlignFrame.this.setClosed(true); + } catch (Exception ex) { - try - { - AlignFrame.this.setClosed(true); - } catch (Exception ex) - { - } } } + return null; }; /* @@ -2521,7 +2523,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } else { - okAction.run(); + try + { + okAction.call(); + } catch (Exception e) + { + e.printStackTrace(); + } } } @@ -2907,6 +2915,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.setGatherViewsHere(true); } tabbedPane.setSelectedIndex(tabbedPane.getTabCount() - 1); + return newap; } @@ -3422,28 +3431,33 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } /** - * DOCUMENT ME! + * Opens an Overview panel for the alignment, unless one is open already * * @param e - * DOCUMENT ME! */ @Override public void overviewMenuItem_actionPerformed(ActionEvent e) { + boolean showHiddenRegions = Cache.getDefault(Preferences.SHOW_OV_HIDDEN_AT_START, + false); + openOverviewPanel(showHiddenRegions); + } + + public OverviewPanel openOverviewPanel(boolean showHidden) + { if (alignPanel.overviewPanel != null) { - return; + return alignPanel.overviewPanel; } - JInternalFrame frame = new JInternalFrame(); - final OverviewPanel overview = new OverviewPanel(alignPanel); + final OverviewPanel overview = new OverviewPanel(alignPanel, frame, showHidden); frame.setContentPane(overview); - Desktop.addInternalFrame(frame, MessageManager - .formatMessage("label.overview_params", new Object[] - { this.getTitle() }), true, frame.getWidth(), frame.getHeight(), + Desktop.addInternalFrame(frame, "", true, frame.getWidth(), frame.getHeight(), true, true); + frame.setFrameIcon(null); frame.pack(); frame.setLayer(JLayeredPane.PALETTE_LAYER); + final AlignmentPanel thePanel = this.alignPanel; frame.addInternalFrameListener( new javax.swing.event.InternalFrameAdapter() { @@ -3452,7 +3466,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, javax.swing.event.InternalFrameEvent evt) { overview.dispose(); - alignPanel.setOverviewPanel(null); + thePanel.setOverviewPanel(null); } }); if (getKeyListeners().length > 0) @@ -3461,6 +3475,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } alignPanel.setOverviewPanel(overview); + alignPanel.setOverviewTitle(this); + + return overview; } @Override @@ -4067,43 +4084,38 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { // 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")); chooser.setToolTipText( MessageManager.getString("label.load_tree_file")); - chooser.setResponseHandler(0, new Runnable() - { - @Override - public void run() + chooser.setResponseHandler(0, () -> { + String filePath = chooser.getSelectedFile().getPath(); + Cache.setProperty("LAST_DIRECTORY", filePath); + NewickFile fin = null; + try { - String filePath = chooser.getSelectedFile().getPath(); - Cache.setProperty("LAST_DIRECTORY", filePath); - NewickFile fin = null; - try - { - fin = new NewickFile(new FileParse(chooser.getSelectedFile(), - DataSourceType.FILE)); - viewport.setCurrentTree(showNewickTree(fin, filePath).getTree()); - } catch (Exception ex) - { - JvOptionPane.showMessageDialog(Desktop.desktop, ex.getMessage(), - MessageManager - .getString("label.problem_reading_tree_file"), - JvOptionPane.WARNING_MESSAGE); - ex.printStackTrace(); - } - if (fin != null && fin.hasWarningMessage()) - { - JvOptionPane.showMessageDialog(Desktop.desktop, - fin.getWarningMessage(), - MessageManager.getString( - "label.possible_problem_with_tree_file"), - JvOptionPane.WARNING_MESSAGE); - } + fin = new NewickFile(new FileParse(chooser.getSelectedFile(), + DataSourceType.FILE)); + viewport.setCurrentTree(showNewickTree(fin, filePath).getTree()); + } catch (Exception ex) + { + JvOptionPane.showMessageDialog(Desktop.desktop, ex.getMessage(), + MessageManager.getString("label.problem_reading_tree_file"), + JvOptionPane.WARNING_MESSAGE); + ex.printStackTrace(); + } + if (fin != null && fin.hasWarningMessage()) + { + JvOptionPane.showMessageDialog(Desktop.desktop, + fin.getWarningMessage(), + MessageManager + .getString("label.possible_problem_with_tree_file"), + JvOptionPane.WARNING_MESSAGE); } + return null; }); chooser.showOpenDialog(this); } @@ -4286,9 +4298,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, webService.add(me.webServiceNoServices); } // TODO: move into separate menu builder class. - boolean new_sspred = false; - if (Cache.getDefault("SHOW_JWS2_SERVICES", true)) { + // logic for 2.11.1.4 is + // always look to see if there is a discover. if there isn't + // we can't show any Jws2 services + // if there are services available, show them - regardless of + // the 'show JWS2 preference' + // if the discoverer is running then say so + // otherwise offer to trigger discovery if 'show JWS2' is not + // enabled Jws2Discoverer jws2servs = Jws2Discoverer.getDiscoverer(); if (jws2servs != null) { @@ -4297,7 +4315,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, jws2servs.attachWSMenuEntry(webService, me); for (Jws2Instance sv : jws2servs.getServices()) { - if (sv.description.toLowerCase().contains("jpred")) + if (sv.description.toLowerCase(Locale.ROOT) + .contains("jpred")) { for (JMenuItem jmi : legacyItems) { @@ -4305,8 +4324,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } } - } + if (jws2servs.isRunning()) { JMenuItem tm = new JMenuItem( @@ -4314,6 +4333,26 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, tm.setEnabled(false); webService.add(tm); } + else if (!Cache.getDefault("SHOW_JWS2_SERVICES", true)) + { + JMenuItem enableJws2 = new JMenuItem( + "Discover Web Services"); + enableJws2.setToolTipText( + "Select to start JABA Web Service discovery (or enable option in Web Service preferences)"); + enableJws2.setEnabled(true); + enableJws2.addActionListener(new ActionListener() + { + + @Override + public void actionPerformed(ActionEvent e) + { + // start service discoverer, but ignore preference + Desktop.instance.startServiceDiscovery(false, + true); + } + }); + webService.add(enableJws2); + } } } build_urlServiceMenu(me.webService); @@ -4331,7 +4370,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } catch (Exception e) { - Cache.log.debug( + Console.debug( "Exception during web service menu building process.", e); } @@ -4428,7 +4467,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, showProducts.setEnabled(showp); } catch (Exception e) { - Cache.log.warn( + Console.warn( "canShowProducts threw an exception - please report to help@jalview.org", e); return false; @@ -4469,8 +4508,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, 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 @@ -4832,7 +4871,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } catch (Exception x) { - Cache.log.debug( + Console.debug( "Exception when processing data source as T-COFFEE score file", x); tcf = null; @@ -4930,7 +4969,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (index > -1) { + /* + * update current Overview window title (if there is one) + * to add view name "Original" if necessary + */ + alignPanel.setOverviewTitle(this); + + /* + * switch panels and set Overview title (if there is one + * because it was opened automatically) + */ alignPanel = alignPanels.get(index); + alignPanel.setOverviewTitle(this); + viewport = alignPanel.av; avc.setViewportAndAlignmentPanel(viewport, alignPanel); setMenusFromViewport(viewport); @@ -5800,6 +5851,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, | ActionEvent.CTRL_MASK)) != 0); } + @Override + protected void copyHighlightedColumns_actionPerformed( + ActionEvent actionEvent) + { + avc.copyHighlightedRegionsToClipboard(); + } + /** * Rebuilds the Colour menu, including any user-defined colours which have * been loaded either on startup or during the session @@ -5848,16 +5906,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, chooser.setDialogTitle(MessageManager.getString("label.load_vcf_file")); chooser.setToolTipText(MessageManager.getString("label.load_vcf_file")); final AlignFrame us = this; - chooser.setResponseHandler(0, new Runnable() - { - @Override - public void run() - { - String choice = chooser.getSelectedFile().getPath(); - Cache.setProperty("LAST_DIRECTORY", choice); - SequenceI[] seqs = viewport.getAlignment().getSequencesArray(); - new VCFLoader(choice).loadVCF(seqs, us); - } + chooser.setResponseHandler(0, () -> { + String choice = chooser.getSelectedFile().getPath(); + Cache.setProperty("LAST_DIRECTORY", choice); + SequenceI[] seqs = viewport.getAlignment().getSequencesArray(); + new VCFLoader(choice).loadVCF(seqs, us); + return null; }); chooser.showOpenDialog(null);