From: Jim Procter Date: Tue, 3 Jul 2018 16:30:43 +0000 (+0100) Subject: JAL-3048 openLinkedAlignment refactor to use dialogRunner plus a conditional callback... X-Git-Tag: Develop-2_11_2_0-d20201215~24^2~68^2~595^2~2 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=95198fe0465b272b6f9b5ce376a820209ff3643f;p=jalview.git JAL-3048 openLinkedAlignment refactor to use dialogRunner plus a conditional callback (the default response) to process alignment data added to alignment if split frame not shown --- diff --git a/src/jalview/gui/AlignViewport.java b/src/jalview/gui/AlignViewport.java index 7e77bec..35a0cd3 100644 --- a/src/jalview/gui/AlignViewport.java +++ b/src/jalview/gui/AlignViewport.java @@ -48,6 +48,7 @@ import jalview.structure.SelectionSource; import jalview.structure.StructureSelectionManager; import jalview.structure.VamsasSource; import jalview.util.MessageManager; +import jalview.util.dialogrunner.RunResponse; import jalview.viewmodel.AlignmentViewport; import jalview.ws.params.AutoCalcSetting; @@ -707,13 +708,15 @@ public class AlignViewport extends AlignmentViewport { if (AlignmentUtils.isMappable(toAdd, getAlignment())) { - if (openLinkedAlignment(toAdd, title)) - { - return; - } + openLinkedAlignment(toAdd, title); + return; } } + alignmentDataAdded(toAdd); + } + private void alignmentDataAdded(AlignmentI toAdd) + { /* * No mappings, or offer declined - add sequences to this alignment */ @@ -751,30 +754,51 @@ public class AlignViewport extends AlignmentViewport * @param al * @param title */ - protected boolean openLinkedAlignment(AlignmentI al, String title) + protected void openLinkedAlignment(AlignmentI al, String title) { String[] options = new String[] { MessageManager.getString("action.no"), MessageManager.getString("label.split_window"), MessageManager.getString("label.new_window"), }; final String question = JvSwingUtils.wrapTooltip(true, MessageManager.getString("label.open_split_window?")); - int response = JvOptionPane.showOptionDialog(Desktop.desktop, question, + final AlignViewport us = this; + JvOptionPane.newOptionDialog(Desktop.desktop) + .response(new RunResponse(1) + { + @Override + public void run() + { + us.openLinkedAlignmentAs(al, title, true); + } + }).response(new RunResponse(2) + { + @Override + public void run() + { + us.openLinkedAlignmentAs(al, title, false); + } + }).defaultResponse(new Runnable() + { + @Override + public void run() + { + alignmentDataAdded(al); + } + }).showDialog(question, MessageManager.getString("label.open_split_window"), JvOptionPane.DEFAULT_OPTION, JvOptionPane.PLAIN_MESSAGE, null, options, options[0]); + } - if (response != 1 && response != 2) + protected void openLinkedAlignmentAs(AlignmentI al, String title, + boolean newWindowOrSplitPane) { - return false; - } - final boolean openSplitPane = (response == 1); - final boolean openInNewWindow = (response == 2); - /* * Identify protein and dna alignments. Make a copy of this one if opening * in a new split pane. */ - AlignmentI thisAlignment = openSplitPane ? new Alignment(getAlignment()) + AlignmentI thisAlignment = newWindowOrSplitPane + ? new Alignment(getAlignment()) : getAlignment(); AlignmentI protein = al.isNucleotide() ? thisAlignment : al; final AlignmentI cdna = al.isNucleotide() ? al : thisAlignment; @@ -806,7 +830,7 @@ public class AlignViewport extends AlignmentViewport // alignFrame.setFileName(file, format); // } - if (openInNewWindow) + if (!newWindowOrSplitPane) { Desktop.addInternalFrame(newAlignFrame, title, AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT); @@ -820,13 +844,11 @@ public class AlignViewport extends AlignmentViewport { } - if (openSplitPane) + if (newWindowOrSplitPane) { al.alignAs(thisAlignment); protein = openSplitFrame(newAlignFrame, thisAlignment); } - - return true; } /**