X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=83fb7c00207f05a4377eb83e39ef20ba5b5cc3a3;hb=43d326c3a7616aedecfce6f7980b3831ec25243a;hp=e3efa59aa3d729505a47d4432d213252f8754319;hpb=1b2a573d7c93db57c3299d768f021c9096dffc67;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index e3efa59..83fb7c0 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -28,7 +28,6 @@ import jalview.analysis.CrossRef; import jalview.analysis.Dna; import jalview.analysis.ParseProperties; import jalview.analysis.SequenceIdMatcher; -import jalview.api.AlignExportSettingI; import jalview.api.AlignViewControllerGuiI; import jalview.api.AlignViewControllerI; import jalview.api.AlignViewportI; @@ -38,6 +37,7 @@ import jalview.api.SplitContainerI; import jalview.api.ViewStyleI; import jalview.api.analysis.ScoreModelI; import jalview.bin.Cache; +import jalview.bin.Jalview; import jalview.commands.CommandI; import jalview.commands.EditCommand; import jalview.commands.EditCommand.Action; @@ -49,6 +49,7 @@ import jalview.commands.TrimRegionCommand; import jalview.datamodel.AlignedCodonFrame; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.AlignmentExportData; import jalview.datamodel.AlignmentI; import jalview.datamodel.AlignmentOrder; import jalview.datamodel.AlignmentView; @@ -335,7 +336,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ void init() { - progressBar = new ProgressBar(this.statusPanel, this.statusBar); + if (!Jalview.isHeadlessMode()) + { + progressBar = new ProgressBar(this.statusPanel, this.statusBar); + } avc = new jalview.controller.AlignViewController(this, viewport, alignPanel); @@ -1135,13 +1139,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { warningMessage("Cannot save file " + fileName + " using format " + format, "Alignment output format not supported"); - saveAs_actionPerformed(null); - // JBPNote need to have a raise_gui flag here + if (!Jalview.isHeadlessMode()) + { + saveAs_actionPerformed(null); + } return false; } - ExportData exportData = getAlignmentForExport(format); - FormatAdapter f = new FormatAdapter(viewport); + AlignmentExportData exportData = getAlignmentForExport(format, viewport); + if (exportData.getSettings().isCancelled()) + { + return false; + } + FormatAdapter f = new FormatAdapter(alignPanel, + exportData.getSettings()); String output = f.formatSequences(format, exportData.getAlignment(), // class cast exceptions will // occur in the distant future @@ -1213,7 +1224,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, protected void outputText_actionPerformed(ActionEvent e) { - ExportData exportData = getAlignmentForExport(e.getActionCommand()); + AlignmentExportData exportData = getAlignmentForExport( + e.getActionCommand(), viewport); if (exportData.getSettings().isCancelled()) { return; @@ -1222,7 +1234,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, cap.setForInput(null); try { - cap.setText(new FormatAdapter(viewport).formatSequences( + cap.setText(new FormatAdapter(alignPanel, exportData.getSettings()) + .formatSequences( e.getActionCommand(), exportData.getAlignment(), exportData.getOmitHidden(), exportData.getStartEndPostions(), @@ -1238,7 +1251,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } - public ExportData getAlignmentForExport(String exportFomat) + public static AlignmentExportData getAlignmentForExport(String exportFomat, + AlignViewportI viewport) { AlignmentI alignmentToExport = null; String[] omitHidden = null; @@ -1253,7 +1267,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { 0, alignmentToExport.getWidth() - 1 }; boolean hasHiddenSeqs = hiddenSeqs.getSize() > 0; - AlignExportSettingI settings = new AlignExportSettings(hasHiddenSeqs, + AlignExportSettings settings = new AlignExportSettings(hasHiddenSeqs, viewport.hasHiddenColumns(), exportFomat); settings.isExportAnnotations(); @@ -1272,11 +1286,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, alignmentStartEnd = getStartEnd(alignmentStartEnd, viewport .getColumnSelection().getHiddenColumns()); } - return new ExportData(alignmentToExport, omitHidden, alignmentStartEnd, + AlignmentExportData ed = new AlignmentExportData(alignmentToExport, omitHidden, alignmentStartEnd, settings); + return ed; } - private static int[] getStartEnd(int[] aligmentStartEnd, + public static int[] getStartEnd(int[] aligmentStartEnd, List hiddenCols) { int startPos = aligmentStartEnd[0]; @@ -1288,7 +1303,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, for (int[] hiddenCol : hiddenCols) { // System.out.println("comparing : " + hiddenCol[0] + "-" + hiddenCol[1]); - lowestRange = (hiddenCol[0] <= startPos) ? hiddenCol : lowestRange; higestRange = (hiddenCol[1] >= endPos) ? hiddenCol : higestRange; } @@ -1483,6 +1497,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (closeAllTabs) { + /* + * this will raise an INTERNAL_FRAME_CLOSED event and this method will + * be called recursively, with the frame now in 'closed' state + */ this.setClosed(true); } } catch (Exception ex) @@ -1813,9 +1831,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.getSelectionGroup().getEndRes() + groupAdjustment); } + /* + * just extend the last slide command if compatible; but not if in + * SplitFrame mode (to ensure all edits are broadcast - JAL-1802) + */ boolean appendHistoryItem = false; Deque historyList = viewport.getHistoryList(); - if (historyList != null + boolean inSplitFrame = getSplitViewContainer() != null; + if (!inSplitFrame && historyList != null && historyList.size() > 0 && historyList.peek() instanceof SlideSequencesCommand) { @@ -2730,12 +2753,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } /* - * Views share the same edits, undo and redo stacks, mappings. + * Views share the same edits undo and redo stacks */ newap.av.setHistoryList(viewport.getHistoryList()); newap.av.setRedoList(viewport.getRedoList()); - newap.av.getAlignment().setCodonFrames( - viewport.getAlignment().getCodonFrames()); + + /* + * Views share the same mappings; need to deregister any new mappings + * created by copyAlignPanel, and register the new reference to the shared + * mappings + */ + newap.av.replaceMappings(viewport.getAlignment()); newap.av.viewName = getNewViewName(viewTitle); @@ -4841,7 +4869,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // temporary flag until SplitFrame is released boolean asSplitFrame = Cache.getDefault( - Preferences.ENABLE_SPLIT_FRAME, false); + Preferences.ENABLE_SPLIT_FRAME, true); if (asSplitFrame) { /* @@ -4949,10 +4977,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, "Exception during translation. Please report this !", ex); final String msg = MessageManager .getString("label.error_when_translating_sequences_submit_bug_report"); - final String title = MessageManager + final String errorTitle = MessageManager .getString("label.implementation_error") + MessageManager.getString("translation_failed"); - JOptionPane.showMessageDialog(Desktop.desktop, msg, title, + JOptionPane.showMessageDialog(Desktop.desktop, msg, errorTitle, JOptionPane.ERROR_MESSAGE); return; } @@ -4960,9 +4988,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { final String msg = MessageManager .getString("label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation"); - final String title = MessageManager + final String errorTitle = MessageManager .getString("label.translation_failed"); - JOptionPane.showMessageDialog(Desktop.desktop, msg, title, + JOptionPane.showMessageDialog(Desktop.desktop, msg, errorTitle, JOptionPane.WARNING_MESSAGE); } else @@ -4973,11 +5001,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, "label.translation_of_params", new Object[] { this.getTitle() }); af.setTitle(newTitle); - if (Cache.getDefault(Preferences.ENABLE_SPLIT_FRAME, false)) + if (Cache.getDefault(Preferences.ENABLE_SPLIT_FRAME, true)) { final SequenceI[] seqs = viewport.getSelectionAsNewSequence(); - viewport.openSplitFrame(af, new Alignment(seqs), - al.getCodonFrames()); + viewport.openSplitFrame(af, new Alignment(seqs)); } else { @@ -5982,7 +6009,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, aa.visible = visible; } } - alignPanel.validateAnnotationDimensions(false); + alignPanel.validateAnnotationDimensions(true); alignPanel.alignmentChanged(); } @@ -6069,67 +6096,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sf.setComplementVisible(this, show); } } - - public class ExportData - { - private AlignmentI alignment; - - private String[] omitHidden; - - private int[] startEnd; - - private AlignExportSettingI settings; - - public ExportData(AlignmentI align, String[] ommit, int[] startEnd, - AlignExportSettingI settings) - { - this.alignment = align; - this.omitHidden = ommit; - this.startEnd = startEnd; - this.settings = settings; - } - - public AlignmentI getAlignment() - { - return alignment; - } - - public void setAlignment(AlignmentI alignment) - { - this.alignment = alignment; - } - - public String[] getOmitHidden() - { - return omitHidden; - } - - public void setOmitHidden(String[] omitHidden) - { - this.omitHidden = omitHidden; - } - - public int[] getStartEndPostions() - { - return startEnd; - } - - public void setStartEndPostions(int[] startEnd) - { - this.startEnd = startEnd; - } - - public AlignExportSettingI getSettings() - { - return settings; - } - - public void setSettings(AlignExportSettingI settings) - { - this.settings = settings; - } - } - } class PrintThread extends Thread