From: gmungoc Date: Mon, 17 Dec 2018 17:25:49 +0000 (+0000) Subject: Merge branch 'Jalview-BH/JAL-3026-JAL-3063-JAXB' into X-Git-Tag: Develop-2_11_2_0-d20201215~24^2~68^2~343^2~2 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=1d01c9f62d4a2d2070d1296abe79a1e0dc7a3d7d;hp=4b527101d4272edd16a94be664bc3b4761bbd185;p=jalview.git Merge branch 'Jalview-BH/JAL-3026-JAL-3063-JAXB' into JAL-3048dialogRunner2 Conflicts: src/jalview/io/JalviewFileChooser.java --- diff --git a/resources/lang/Messages.properties b/resources/lang/Messages.properties index b29edec..fde0b1c 100644 --- a/resources/lang/Messages.properties +++ b/resources/lang/Messages.properties @@ -1019,7 +1019,7 @@ label.pca_recalculating = Recalculating PCA label.pca_calculating = Calculating PCA label.select_foreground_colour = Choose foreground colour label.select_colour_for_text = Select Colour for Text -label.adjunst_foreground_text_colour_threshold = Adjust Foreground Text Colour Threshold +label.adjust_foreground_text_colour_threshold = Adjust Foreground Text Colour Threshold label.select_subtree_colour = Select Sub-Tree Colour label.create_new_sequence_features = Create New Sequence Feature(s) label.amend_delete_features = Amend/Delete Features for {0} diff --git a/resources/lang/Messages_es.properties b/resources/lang/Messages_es.properties index d1b763d..8b7fd0d 100644 --- a/resources/lang/Messages_es.properties +++ b/resources/lang/Messages_es.properties @@ -944,7 +944,7 @@ label.pca_recalculating = Recalculando ACP label.pca_calculating = Calculando ACP label.select_foreground_colour = Escoger color del primer plano label.select_colour_for_text = Seleccione el color del texto -label.adjunst_foreground_text_colour_threshold = Ajustar el umbral del color del texto en primer plano +label.adjust_foreground_text_colour_threshold = Ajustar el umbral del color del texto en primer plano label.select_subtree_colour = Seleccioanr el color del sub-árbol label.create_new_sequence_features = Crear nueva(s) característica(s) de secuencia label.amend_delete_features = Arrelgar/Borrar características de {0} diff --git a/src/jalview/gui/AlignExportOptions.java b/src/jalview/gui/AlignExportOptions.java index ecf89cc..db78bee 100644 --- a/src/jalview/gui/AlignExportOptions.java +++ b/src/jalview/gui/AlignExportOptions.java @@ -120,9 +120,9 @@ public class AlignExportOptions extends JPanel * * @param action */ - public void setResponseAction(RunResponse action) + public void setResponseAction(Object response, RunResponse action) { - dialog.addResponse(action); + dialog.addResponse(response, action); } /** diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index f2ff1d4..a1d97e7 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -1299,8 +1299,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { AlignExportOptions choices = new AlignExportOptions( alignPanel.getAlignViewport(), format, options); - choices.setResponseAction(outputAction); - choices.setResponseAction(cancelAction); + choices.setResponseAction(0, outputAction); + choices.setResponseAction(1, cancelAction); choices.showDialog(); } else @@ -1359,7 +1359,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { AlignExportOptions choices = new AlignExportOptions( alignPanel.getAlignViewport(), fileFormat, options); - choices.setResponseAction(outputAction); + choices.setResponseAction(0, outputAction); choices.showDialog(); } else @@ -1472,9 +1472,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, MessageManager.getString("label.load_jalview_annotations")); chooser.setToolTipText( MessageManager.getString("label.load_jalview_annotations")); - chooser.addResponse(new RunResponse(JalviewFileChooser.APPROVE_OPTION) + chooser.addResponse(0, new RunResponse(JalviewFileChooser.APPROVE_OPTION) { - @Override public void run() { @@ -1482,7 +1481,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice); loadJalviewDataFile(chooser.getSelectedFile(), null, null, null); } - }); chooser.showOpenDialog(this); @@ -3966,8 +3964,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, chooser.setToolTipText( MessageManager.getString("label.load_tree_file")); - chooser.addResponse(new jalview.util.dialogrunner.RunResponse( - JalviewFileChooser.APPROVE_OPTION) + chooser.addResponse(0,new RunResponse(JalviewFileChooser.APPROVE_OPTION) { @Override public void run() @@ -3997,7 +3994,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, JvOptionPane.WARNING_MESSAGE); } } - }).showOpenDialog(this); + }); + chooser.showOpenDialog(this); } public TreePanel showNewickTree(NewickFile nf, String treeTitle) @@ -5697,21 +5695,18 @@ 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.addResponse(new RunResponse(JalviewFileChooser.APPROVE_OPTION) + chooser.addResponse(0, new RunResponse(JalviewFileChooser.APPROVE_OPTION) { @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); - } - + String choice = chooser.getSelectedFile().getPath(); + Cache.setProperty("LAST_DIRECTORY", choice); + SequenceI[] seqs = viewport.getAlignment().getSequencesArray(); + new VCFLoader(choice).loadVCF(seqs, us); }; - }).showOpenDialog(null); + }); + chooser.showOpenDialog(null); } diff --git a/src/jalview/gui/AlignViewport.java b/src/jalview/gui/AlignViewport.java index ee61308..7b8c6c9 100644 --- a/src/jalview/gui/AlignViewport.java +++ b/src/jalview/gui/AlignViewport.java @@ -771,21 +771,21 @@ public class AlignViewport extends AlignmentViewport * in reverse order) */ JvOptionPane dialog = JvOptionPane.newOptionDialog(Desktop.desktop) - .addResponse(new RunResponse(0) + .addResponse(0, new RunResponse(0) { @Override public void run() { addDataToAlignment(al); } - }).addResponse(new RunResponse(1) + }).addResponse(1, new RunResponse(1) { @Override public void run() { us.openLinkedAlignmentAs(al, title, true); } - }).addResponse(new RunResponse(2) + }).addResponse(2, new RunResponse(2) { @Override public void run() diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index 320ebc2..1e258b8 100644 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -1125,9 +1125,8 @@ public class Desktop extends jalview.jbgui.GDesktop MessageManager.getString("label.open_local_file")); chooser.setToolTipText(MessageManager.getString("action.open")); - chooser.addResponse(new RunResponse(JalviewFileChooser.APPROVE_OPTION) + chooser.addResponse(0, new RunResponse(JalviewFileChooser.APPROVE_OPTION) { - @Override public void run() { @@ -1156,7 +1155,8 @@ public class Desktop extends jalview.jbgui.GDesktop new FileLoader().LoadFile(viewport, selectedFile, DataSourceType.FILE, format); } - }).showOpenDialog(this); + }); + chooser.showOpenDialog(this); } /** @@ -1262,7 +1262,7 @@ public class Desktop extends jalview.jbgui.GDesktop }}; String dialogOption = MessageManager .getString("label.input_alignment_from_url"); - JvOptionPane.newOptionDialog(desktop).addResponse(action) + JvOptionPane.newOptionDialog(desktop).addResponse(0, action) .showInternalDialog(panel, dialogOption, JvOptionPane.YES_NO_CANCEL_OPTION, JvOptionPane.PLAIN_MESSAGE, null, options, @@ -1745,7 +1745,7 @@ public class Desktop extends jalview.jbgui.GDesktop "Jalview Project"); chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle(MessageManager.getString("label.restore_state")); - chooser.addResponse(new RunResponse(JalviewFileChooser.APPROVE_OPTION) + chooser.addResponse(0, new RunResponse(JalviewFileChooser.APPROVE_OPTION) { @Override public void run() diff --git a/src/jalview/gui/EditNameDialog.java b/src/jalview/gui/EditNameDialog.java index bbb7a20..c976545 100644 --- a/src/jalview/gui/EditNameDialog.java +++ b/src/jalview/gui/EditNameDialog.java @@ -107,9 +107,7 @@ public class EditNameDialog } /** - * Shows the dialog, and runs the response action if OK is selected. Note the - * RunResponse should be constructed to act on dialog return value - * JvOptionPane.OK_OPTION. + * Shows the dialog, and runs the response action if OK is selected * * @param action */ @@ -118,7 +116,7 @@ public class EditNameDialog { Object[] options = new Object[] { MessageManager.getString("action.ok"), MessageManager.getString("action.cancel") }; - JvOptionPane.newOptionDialog(parent).addResponse(action) + JvOptionPane.newOptionDialog(parent).addResponse(0, action) .showInternalDialog(panel, title, JvOptionPane.YES_NO_CANCEL_OPTION, JvOptionPane.PLAIN_MESSAGE, null, options, diff --git a/src/jalview/gui/FeatureEditor.java b/src/jalview/gui/FeatureEditor.java index d75404a..b829ec7 100644 --- a/src/jalview/gui/FeatureEditor.java +++ b/src/jalview/gui/FeatureEditor.java @@ -414,10 +414,10 @@ public class FeatureEditor * also for Delete if applicable (when amending features) */ JvOptionPane dialog = JvOptionPane.newOptionDialog(Desktop.desktop) - .addResponse(okAction).addResponse(cancelAction); + .addResponse(0, okAction).addResponse(2, cancelAction); if (!forCreate) { - dialog.addResponse(getDeleteAction()); + dialog.addResponse(1, getDeleteAction()); } String title = null; diff --git a/src/jalview/gui/FeatureSettings.java b/src/jalview/gui/FeatureSettings.java index 36af39a..9165a3d 100644 --- a/src/jalview/gui/FeatureSettings.java +++ b/src/jalview/gui/FeatureSettings.java @@ -898,13 +898,15 @@ public class FeatureSettings extends JPanel chooser.setDialogTitle( MessageManager.getString("label.load_feature_colours")); chooser.setToolTipText(MessageManager.getString("action.load")); - chooser.addResponse(new RunResponse(JalviewFileChooser.APPROVE_OPTION){ - - @Override - public void run() { - File file = chooser.getSelectedFile(); - load(file); - }}); + chooser.addResponse(0, new RunResponse(JalviewFileChooser.APPROVE_OPTION) + { + @Override + public void run() + { + File file = chooser.getSelectedFile(); + load(file); + } + }); chooser.showOpenDialog(this); } diff --git a/src/jalview/gui/ImageExporter.java b/src/jalview/gui/ImageExporter.java index 51d7d82..90b212f 100644 --- a/src/jalview/gui/ImageExporter.java +++ b/src/jalview/gui/ImageExporter.java @@ -149,7 +149,7 @@ public class ImageExporter }; LineartOptions epsOption = new LineartOptions(TYPE.EPS.getName(), textSelected); - epsOption.setResponseAction(new RunResponse(JOptionPane.NO_OPTION) + epsOption.setResponseAction(1, new RunResponse(JOptionPane.NO_OPTION) { @Override public void run() @@ -159,7 +159,7 @@ public class ImageExporter imageType.getName()), messageId); } }); - epsOption.setResponseAction(okAction); + epsOption.setResponseAction(0, okAction); epsOption.showDialog(); /* no code here - JalviewJS cannot execute it */ } diff --git a/src/jalview/gui/JvOptionPane.java b/src/jalview/gui/JvOptionPane.java index a141e14..b3df2f7 100644 --- a/src/jalview/gui/JvOptionPane.java +++ b/src/jalview/gui/JvOptionPane.java @@ -21,6 +21,7 @@ package jalview.gui; +import jalview.bin.Jalview; import jalview.util.dialogrunner.DialogRunner; import jalview.util.dialogrunner.DialogRunnerI; import jalview.util.dialogrunner.RunResponse; @@ -36,11 +37,9 @@ import javax.swing.Icon; import javax.swing.JOptionPane; import javax.swing.JPanel; -public class JvOptionPane extends JOptionPane - implements DialogRunnerI, PropertyChangeListener +public class JvOptionPane extends JOptionPane implements DialogRunnerI, + PropertyChangeListener { - // BH 2018 no changes needed here. - private static final long serialVersionUID = -3019167117756785229L; private static Object mockResponse = JvOptionPane.CANCEL_OPTION; @@ -49,10 +48,17 @@ public class JvOptionPane extends JOptionPane private Component parentComponent; - public JvOptionPane(final Component parentComponent) + private DialogRunnerI runner = new DialogRunner(); + + /* + * JalviewJS reports user choice in the dialog as the selected + * option (text); this list allows conversion to index (int) + */ + List ourOptions; + + public JvOptionPane(final Component parent) { - - this.parentComponent = parentComponent; + this.parentComponent = Jalview.isJS() ? this : parent; } public static int showConfirmDialog(Component parentComponent, @@ -704,18 +710,17 @@ public class JvOptionPane extends JOptionPane return interactiveMode; } - public static void setInteractiveMode(boolean interactiveMode) + public static void setInteractiveMode(boolean interactive) { - JvOptionPane.interactiveMode = interactiveMode; + JvOptionPane.interactiveMode = interactive; } - @SuppressWarnings("unused") private static String getPrefix(int messageType) { - String prefix = ""; // JavaScript only - - if (/** @j2sNative true || */ - false) + String prefix = ""; + + // JavaScript only + if (Jalview.isJS()) { switch (messageType) { @@ -732,9 +737,6 @@ public class JvOptionPane extends JOptionPane return prefix; } - DialogRunner runner = new DialogRunner(this); - - private List ourOptions; /** * create a new option dialog that can be used to register responses - along * lines of showOptionDialog @@ -761,7 +763,7 @@ public class JvOptionPane extends JOptionPane if (!isInteractiveMode()) { - runner.firstRun((int) getMockResponse()); + runner.handleResponse(getMockResponse()); } // two uses: // @@ -777,25 +779,20 @@ public class JvOptionPane extends JOptionPane // // 2) UserDefinedColors warning about saving over a name already defined // - Component parent; - /** - * @j2sNative - * parent = this; - */ - { - parent = parentComponent; - } - ; + ourOptions = Arrays.asList(options); - int response = JOptionPane.showOptionDialog(parent, message, title, + + int response = JOptionPane.showOptionDialog(parentComponent, message, title, optionType, messageType, icon, options, initialValue); - /** - * @j2sNative + + /* + * In Java, the response is returned to this thread and handled here; + * (for Javascript, see propertyChange) */ + if (!Jalview.isJS()) { - runner.firstRun(response); + runner.handleResponse(response); } - } public void showInternalDialog(JPanel mainPanel, String title, @@ -804,66 +801,56 @@ public class JvOptionPane extends JOptionPane { if (!isInteractiveMode()) { - runner.firstRun((int) getMockResponse()); + runner.handleResponse(getMockResponse()); } - Component parent; - /** - * @j2sNative parent = this; - */ - { - parent = parentComponent; - } - ourOptions = Arrays.asList(options); + ourOptions = Arrays.asList(options); int response; - if (parent!=this) { - - response = JOptionPane.showInternalOptionDialog(parent, mainPanel, + if (parentComponent != this) + { + response = JOptionPane.showInternalOptionDialog(parentComponent, mainPanel, title, yesNoCancelOption, questionMessage, icon, options, initresponse); } else { - response = JOptionPane.showOptionDialog(parent, mainPanel, title, + response = JOptionPane.showOptionDialog(parentComponent, mainPanel, title, yesNoCancelOption, questionMessage, icon, options, initresponse); } - /** - * @j2sNative - */ + if (!Jalview.isJS()) { - runner.firstRun(response); + runner.handleResponse(response); } - } + @Override - public JvOptionPane addResponse(RunResponse action) - { - - runner.addResponse(action); - return this; - } - - public JvOptionPane defaultResponse(Runnable runnable) + public JvOptionPane addResponse(Object response, RunResponse action) { - runner.setDefaultResponse(runnable); + runner.addResponse(response, action); return this; } + /** + * JalviewJS signals option selection by a property change event + * for the option e.g. "OK". This methods responds to that by + * running the response action that corresponds to that option. + * + * @param evt + */ @Override public void propertyChange(PropertyChangeEvent evt) { - int ourOption = ourOptions.indexOf(evt.getNewValue()); - if (ourOption == -1) + Object newValue = evt.getNewValue(); + int ourOption = ourOptions.indexOf(newValue); + if (ourOption >= 0) { - // try our luck.. - runner.run(evt.getNewValue()); + runner.handleResponse(ourOption); } else { - runner.run(ourOption); + // try our luck.. + runner.handleResponse(newValue); } } - - } diff --git a/src/jalview/gui/LineartOptions.java b/src/jalview/gui/LineartOptions.java index 765a1ac..ccf7edb 100644 --- a/src/jalview/gui/LineartOptions.java +++ b/src/jalview/gui/LineartOptions.java @@ -96,9 +96,9 @@ public class LineartOptions extends JPanel * * @param action */ - public void setResponseAction(RunResponse action) + public void setResponseAction(Object response, RunResponse action) { - dialog.addResponse(action); + dialog.addResponse(response, action); } /** diff --git a/src/jalview/gui/TextColourChooser.java b/src/jalview/gui/TextColourChooser.java index 1eba84c..ae9fda9 100644 --- a/src/jalview/gui/TextColourChooser.java +++ b/src/jalview/gui/TextColourChooser.java @@ -149,8 +149,8 @@ public class TextColourChooser Object[] options = new Object[] { MessageManager.getString("action.ok"), MessageManager.getString("action.cancel") }; String title = MessageManager - .getString("label.adjunst_foreground_text_colour_threshold"); - RunResponse action = new RunResponse(JvOptionPane.NO_OPTION) // Cancel + .getString("label.adjust_foreground_text_colour_threshold"); + RunResponse action = new RunResponse(JvOptionPane.NO_OPTION) // = 1 Cancel { @Override public void run() @@ -158,7 +158,7 @@ public class TextColourChooser restoreInitialSettings(); } }; - JvOptionPane.newOptionDialog(alignPanel).addResponse(action) + JvOptionPane.newOptionDialog(alignPanel).addResponse(1, action) .showInternalDialog(bigpanel, title, JvOptionPane.YES_NO_CANCEL_OPTION, JvOptionPane.PLAIN_MESSAGE, null, options, diff --git a/src/jalview/gui/UserDefinedColours.java b/src/jalview/gui/UserDefinedColours.java index f1ff128..9e928d8 100755 --- a/src/jalview/gui/UserDefinedColours.java +++ b/src/jalview/gui/UserDefinedColours.java @@ -645,43 +645,46 @@ public class UserDefinedColours extends GUserDefinedColours chooser.setDialogTitle( MessageManager.getString("label.load_colour_scheme")); chooser.setToolTipText(MessageManager.getString("action.load")); - chooser.addResponse(new RunResponse(JalviewFileChooser.APPROVE_OPTION) { - @Override - public void run() { - File choice = chooser.getSelectedFile(); - Cache.setProperty(LAST_DIRECTORY, choice.getParent()); - - UserColourScheme ucs = ColourSchemeLoader - .loadColourScheme(choice.getAbsolutePath()); - Color[] colors = ucs.getColours(); - schemeName.setText(ucs.getSchemeName()); - - if (ucs.getLowerCaseColours() != null) - { - caseSensitive.setSelected(true); - lcaseColour.setEnabled(true); - resetButtonPanel(true); - for (int i = 0; i < lowerCaseButtons.size(); i++) - { - JButton button = lowerCaseButtons.get(i); - button.setBackground(ucs.getLowerCaseColours()[i]); - } - } - else - { - caseSensitive.setSelected(false); - lcaseColour.setEnabled(false); - resetButtonPanel(false); - } - - for (int i = 0; i < upperCaseButtons.size(); i++) - { - JButton button = upperCaseButtons.get(i); - button.setBackground(colors[i]); - } - - addNewColourScheme(choice.getPath()); - }}); + chooser.addResponse(0, new RunResponse(JalviewFileChooser.APPROVE_OPTION) + { + @Override + public void run() + { + File choice = chooser.getSelectedFile(); + Cache.setProperty(LAST_DIRECTORY, choice.getParent()); + + UserColourScheme ucs = ColourSchemeLoader + .loadColourScheme(choice.getAbsolutePath()); + Color[] colors = ucs.getColours(); + schemeName.setText(ucs.getSchemeName()); + + if (ucs.getLowerCaseColours() != null) + { + caseSensitive.setSelected(true); + lcaseColour.setEnabled(true); + resetButtonPanel(true); + for (int i = 0; i < lowerCaseButtons.size(); i++) + { + JButton button = lowerCaseButtons.get(i); + button.setBackground(ucs.getLowerCaseColours()[i]); + } + } + else + { + caseSensitive.setSelected(false); + lcaseColour.setEnabled(false); + resetButtonPanel(false); + } + + for (int i = 0; i < upperCaseButtons.size(); i++) + { + JButton button = upperCaseButtons.get(i); + button.setBackground(colors[i]); + } + + addNewColourScheme(choice.getPath()); + } + }); chooser.showOpenDialog(this); } diff --git a/src/jalview/io/HtmlSvgOutput.java b/src/jalview/io/HtmlSvgOutput.java index d653e4b..c1a9e9f 100644 --- a/src/jalview/io/HtmlSvgOutput.java +++ b/src/jalview/io/HtmlSvgOutput.java @@ -229,7 +229,7 @@ public class HtmlSvgOutput extends HTMLOutput if (renderStyle.equalsIgnoreCase("Prompt each time") && !isHeadless()) { LineartOptions svgOption = new LineartOptions("HTML", textOption); - svgOption.setResponseAction(new RunResponse(JOptionPane.NO_OPTION) + svgOption.setResponseAction(1, new RunResponse(JOptionPane.NO_OPTION) { @Override public void run() @@ -239,7 +239,7 @@ public class HtmlSvgOutput extends HTMLOutput getDescription())); } }); - svgOption.setResponseAction(okAction); + svgOption.setResponseAction(0, okAction); svgOption.showDialog(); /* no code here - JalviewJS cannot execute it */ } diff --git a/src/jalview/io/JalviewFileChooser.java b/src/jalview/io/JalviewFileChooser.java index 2419bef..81cb510 100755 --- a/src/jalview/io/JalviewFileChooser.java +++ b/src/jalview/io/JalviewFileChooser.java @@ -22,12 +22,12 @@ package jalview.io; import jalview.bin.Cache; +import jalview.bin.Jalview; import jalview.gui.JvOptionPane; import jalview.util.MessageManager; import jalview.util.Platform; import jalview.util.dialogrunner.DialogRunner; import jalview.util.dialogrunner.DialogRunnerI; -import jalview.util.dialogrunner.Response; import jalview.util.dialogrunner.RunResponse; import java.awt.Component; @@ -61,11 +61,15 @@ import javax.swing.plaf.basic.BasicFileChooserUI; * @author AMW * */ -public class JalviewFileChooser extends JFileChooser - implements PropertyChangeListener, DialogRunnerI +public class JalviewFileChooser extends JFileChooser implements DialogRunnerI, + PropertyChangeListener { - DialogRunner runner = new DialogRunner<>(this); + private static final long serialVersionUID = 1L; + + private DialogRunnerI runner = new DialogRunner(); + File selectedFile = null; + /** * Factory method to return a file chooser that offers readable alignment file * formats @@ -146,7 +150,7 @@ public class JalviewFileChooser extends JFileChooser } JalviewFileChooser(String dir, String[] extensions, String[] descs, - String selected, boolean allFiles) + String selected, boolean acceptAny) { super(safePath(dir)); if (extensions.length == descs.length) @@ -156,7 +160,7 @@ public class JalviewFileChooser extends JFileChooser { formats.add(new String[] { extensions[i], descs[i] }); } - init(formats, selected, allFiles); + init(formats, selected, acceptAny); } else { @@ -165,18 +169,6 @@ public class JalviewFileChooser extends JFileChooser } } - @Override - public void propertyChange(PropertyChangeEvent evt) - { - // TODO other properties need runners... - switch (evt.getPropertyName()) - { - case "SelectedFile": - runner.run(APPROVE_OPTION); - break; - } - } - private static File safePath(String dir) { if (dir == null) @@ -200,13 +192,11 @@ public class JalviewFileChooser extends JFileChooser @Override public int showOpenDialog(Component parent) { - runner.resetResponses(); + // runner.resetResponses(); int value = super.showOpenDialog(this); - /** - * @j2sNative - */ + if (!Jalview.isJS()) { - runner.firstRun(value); + runner.handleResponse(value); } return value; } @@ -216,17 +206,17 @@ public class JalviewFileChooser extends JFileChooser * @param formats * a list of {extensions, description} for each file format * @param selected - * @param allFiles + * @param acceptAny * if true, 'any format' option is included */ - void init(List formats, String selected, boolean allFiles) + void init(List formats, String selected, boolean acceptAny) { JalviewFileFilter chosen = null; // SelectAllFilter needs to be set first before adding further // file filters to fix bug on Mac OSX - setAcceptAllFileFilterUsed(allFiles); + setAcceptAllFileFilterUsed(acceptAny); for (String[] format : formats) { @@ -317,18 +307,12 @@ public class JalviewFileChooser extends JFileChooser } return null; } - - File ourselectedFile = null; @Override public File getSelectedFile() { - File selfile = super.getSelectedFile(); - if (selfile == null && ourselectedFile != null) - { - return ourselectedFile; - } - return selfile; + File f = super.getSelectedFile(); + return f == null ? selectedFile : f; } @Override @@ -357,9 +341,9 @@ public class JalviewFileChooser extends JFileChooser return; } - ourselectedFile = getSelectedFile(); + selectedFile = getSelectedFile(); - if (ourselectedFile == null) + if (selectedFile == null) { // Workaround for Java 9,10 on OSX - no selected file, but there is a // filename typed in @@ -368,7 +352,7 @@ public class JalviewFileChooser extends JFileChooser String filename = ((BasicFileChooserUI) getUI()).getFileName(); if (filename != null && filename.length() > 0) { - ourselectedFile = new File(getCurrentDirectory(), filename); + selectedFile = new File(getCurrentDirectory(), filename); } } catch (Throwable x) { @@ -380,7 +364,8 @@ public class JalviewFileChooser extends JFileChooser // THE // USER PROMPTED FOR A NEW FILENAME } - if (ourselectedFile == null) + + if (selectedFile == null) { return; } @@ -389,22 +374,21 @@ public class JalviewFileChooser extends JFileChooser { JalviewFileFilter jvf = (JalviewFileFilter) getFileFilter(); - if (!jvf.accept(ourselectedFile)) + if (!jvf.accept(selectedFile)) { String withExtension = getSelectedFile().getName() + "." + jvf.getAcceptableExtension(); - ourselectedFile = (new File(getCurrentDirectory(), withExtension)); - setSelectedFile(ourselectedFile); + selectedFile = (new File(getCurrentDirectory(), withExtension)); + setSelectedFile(selectedFile); } } - if (ourselectedFile.exists()) + if (selectedFile.exists()) { int confirm = JvOptionPane.showConfirmDialog(this, MessageManager.getString("label.overwrite_existing_file"), MessageManager.getString("label.file_already_exists"), JvOptionPane.YES_NO_OPTION); - if (confirm != JvOptionPane.YES_OPTION) { return; @@ -436,13 +420,13 @@ public class JalviewFileChooser extends JFileChooser class RecentlyOpened extends JPanel { + private static final long serialVersionUID = 1L; JList list; - public RecentlyOpened() + RecentlyOpened() { - setPreferredSize(new Dimension(300,100)); - String historyItems = jalview.bin.Cache.getProperty("RECENT_FILE"); + String historyItems = Cache.getProperty("RECENT_FILE"); StringTokenizer st; Vector recent = new Vector<>(); @@ -508,9 +492,27 @@ public class JalviewFileChooser extends JFileChooser } @Override - public JalviewFileChooser addResponse(RunResponse action) + public DialogRunnerI addResponse(Object response, RunResponse action) { - return runner.addResponse(action); + return runner.addResponse(response, action); } + /** + * JalviewJS signals file selection by a property change event + * for property "SelectedFile". This methods responds to that by + * running the response action for 'OK' in the dialog. + * + * @param evt + */ + @Override + public void propertyChange(PropertyChangeEvent evt) + { + // TODO other properties need runners... + switch (evt.getPropertyName()) + { + case "SelectedFile": + runner.handleResponse(APPROVE_OPTION); + break; + } + } } diff --git a/src/jalview/util/dialogrunner/DialogRunner.java b/src/jalview/util/dialogrunner/DialogRunner.java index 05a63c7..b6fd6a2 100644 --- a/src/jalview/util/dialogrunner/DialogRunner.java +++ b/src/jalview/util/dialogrunner/DialogRunner.java @@ -21,250 +21,113 @@ package jalview.util.dialogrunner; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; /** - * daft gymnastics to allow Dialogs to extend from a Swing class and use this - * class to implement chained Response run() definition and execution. - * - * There is probably a better way of doing this. + * A helper class that executes registered Runnable actions corresponding to + * user responses in a dialog. This is to enable dialog execution in JalviewJS, + * where everything must happen in a single thread of execution. That is, the + * dialog has to 'know' all actions that follow a user choice, rather than + * returning a response to allow a separate thread to decide the next action. * * @author jprocter - * - * @param - * the actual dialog that will be shown - which will also initiate the - * response chain. */ -public class DialogRunner implements DialogRunnerI +public class DialogRunner implements DialogRunnerI { - - private Map> callbacks = new java.util.HashMap<>(); - - public T dialog; - - public DialogRunner(T ourDialog) - { - dialog = ourDialog; - } + private Map> callbacks = new HashMap<>(); /** - * clear all 'was ran' flags so responses can be called again, and firstRun will - * trigger response execution + * Constructor */ - public void resetResponses() + public DialogRunner() { - for (List lr : callbacks.values()) - { - for (RunResponse response : lr) - { - response.reset(); - } - } - responses.clear(); - if (defaultResponse != null) - { - defaultResponse.reset(); - } - firstRunWasCalled = false; } @Override - public T addResponse(RunResponse action) + public DialogRunnerI addResponse(Object response, RunResponse action) { - return addResponse(false, action); + List actions = callbacks.get(response); + if (actions == null) + { + actions = new ArrayList<>(); + callbacks.put(response, actions); + } + actions.add(action); + return this; } - + /** - * insert a response at the beginning of the chain for the action. Useful to add - * pre-action validations local to the Dialog class + * Handles a response by running the chain of registered actions (if any). + * Answers the list of responses run (in order). * - * @param action - * @return + * @param response */ - public T firstResponse(RunResponse action) + @Override + public List handleResponse(Object response) { - return addResponse(true, action); - } + List responsesRun = new ArrayList(); - protected T addResponse(boolean prePend, RunResponse action) - { - List laction = callbacks.get(action.ourTrigger); - if (laction == null) + /* + * this test is for NaN in Chrome + */ + if (response != null && !response.equals(response)) { - laction = new ArrayList<>(); - callbacks.put(action.ourTrigger, laction); + return responsesRun; } - if (prePend) + + runResponse(response, responsesRun); + if (responsesRun.isEmpty()) { - laction.add(0,action); - } else { - laction.add(action); + System.err.println("Did nothing for " + response); } - return dialog; + + return responsesRun; } /** + * Runs any response handlers registered for the given response. If any + * response provides a return value, then the handler for that value is + * run next recursively. Handlers are only run once. * - * @param action - * @return true if action is a registered callback + * @param response + * @param alreadyRun */ - public boolean isRegistered(RunResponse action) + private void runResponse(Object response, List alreadyRun) { - List resp = callbacks.get(action.ourTrigger); - if (resp != null) - { - for (RunResponse r : resp) - { - if (r == action) - { - return true; - } - } - } - return false; - } - /** - * handle a response - * - * @param responseCode - */ - public void run(int responseCode) - { - run(new Response(responseCode)); - } - - public void run(String responseString) - { - run(new Response(responseString)); - } - - public void run(Object responseObj) - { - run(new Response(responseObj)); - } - - /** - * start of response handling. - * - * @param responseCode - */ - public void firstRun(int responseCode) - { - doFirstRun(new Response(responseCode)); - } - - public void firstRun(String responseString) - { - doFirstRun(new Response(responseString)); - } - - public void firstRun(Object responseObj) - { - if (responseObj != null && !responseObj.equals(responseObj)) - { - // NaN is an object in Chrome - catch this weirdness - // this so we don't cause issues later - return; - } - doFirstRun(new Response(responseObj)); - } - - - boolean firstRunWasCalled = false; - - private void doFirstRun(Response response) - { - if (firstRunWasCalled) + /* + * this test is for NaN in Chrome + */ + if (response != null && !response.equals(response)) { return; } - firstRunWasCalled = true; - run(response); - } - - private void run(Response response) - { - if (response.objresp != null - && !response.objresp.equals(response.objresp)) - { - // NaN is an object in Chrome - catch this weirdness - // this so we don't cause issues later - return; - } - responses.add(response); - List laction = response.isNull() ? null : callbacks.get(response); + List actions = response == null ? null : callbacks.get(response); - if (laction == null) + if (actions == null) { - if (defaultResponse != null) - { - defaultResponse.ourTrigger = response; - defaultResponse.wasRun = true; - defaultResponse.run(); - } - else - { - System.err.println("Doing nothing for " + response); - } + System.err.println("Doing nothing for " + response); return; } - boolean wasRun = false; - int num = 0; - for (RunResponse action : laction) + for (RunResponse action : actions) { - num++; - // find next action to execute - if (!action.wasRun) + if (!alreadyRun.contains(action)) { - System.err - .println("Executing action (" + num + ") for " + response); - wasRun = true; - action.wasRun = true; + action.setReturnValue(null); action.run(); - if (action.returned != null) + alreadyRun.add(action); + Object returnValue = action.getReturnValue(); + if (returnValue != null) { - run(action.returned); + /* + * RunResponse wants to chain another action + */ + runResponse(returnValue, alreadyRun); } break; } } - if (!wasRun) - { - System.err.println("Did nothing for " + response); - } - } - - List responses = new ArrayList<>(); - - RunResponse defaultResponse = null; - - /** - * Convenience wrapper for setting default response to a runnable - * - * @param runnable - */ - public void setDefaultResponse(Runnable runnable) - { - defaultResponse = new RunResponse(runnable) - { - @Override - public void run() - { - runnable.run(); - } - }; - } - - /** - * Default responses are called once, with ourTrigger set to the unHandled - * response received - * - * @param runnable - */ - public void setDefaultResponse(RunResponse runnable) - { - defaultResponse = runnable; } } diff --git a/src/jalview/util/dialogrunner/DialogRunnerI.java b/src/jalview/util/dialogrunner/DialogRunnerI.java index 758d421..cc4a836 100644 --- a/src/jalview/util/dialogrunner/DialogRunnerI.java +++ b/src/jalview/util/dialogrunner/DialogRunnerI.java @@ -20,24 +20,28 @@ */ package jalview.util.dialogrunner; +import java.util.List; + /** * functional pattern for blocking dialog response handling * * @author jprocter * */ -public interface DialogRunnerI +public interface DialogRunnerI { + DialogRunnerI addResponse(Object response, RunResponse action); + /** - * Adds a new response for this dialog, and returns the dialog (this), to allow chaining, eg. - *
-   * dialog.addResponse(newRunResponse(OK_PRessed) { run()...})
-   *     .addResponse(new RunResponse(CANCEL_PRESSED);
-   * 
+ * Runs any registered handlers for the given response, and answers the list + * of responses run (if any) in order run * - * @param action - * @return the dialog + * @param response + * @return */ - T addResponse(RunResponse action); + default List handleResponse(Object response) + { + return null; + } } diff --git a/src/jalview/util/dialogrunner/Response.java b/src/jalview/util/dialogrunner/Response.java deleted file mode 100644 index f168e20..0000000 --- a/src/jalview/util/dialogrunner/Response.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors - * - * This file is part of Jalview. - * - * Jalview is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 - * of the License, or (at your option) any later version. - * - * Jalview is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Jalview. If not, see . - * The Jalview Authors are detailed in the 'AUTHORS' file. - */ -package jalview.util.dialogrunner; - -public class Response -{ - int type = 0; // int = 0, String = 1, Object = 2; - - int intresp; - - String stringresp; - - Object objresp; - - public Response(int response) - { - type = 0; - intresp = response; - } - - public Response(String response) - { - type = 1; - stringresp = response; - } - - public Response(Object response) - { - if (response instanceof String) - { - type = 1; - stringresp = (String) response; - return; - } - if (response instanceof Integer) - { - type = 0; - intresp = ((Integer) response).intValue(); - return; - } - objresp = response; - type = 2; - } - - @Override - public boolean equals(Object obj) - { - if (obj == null || !(obj instanceof Response)) - { - return false; - } - ; - if (((Response) obj).type == type) - { - switch (type) - { - case 0: - return ((((Response) obj).intresp) == intresp); - case 1: - return (((Response) obj).stringresp.equals(stringresp)); - case 2: - return (((Response) obj).objresp).equals(objresp); - } - } - return false; - } - - @Override - public int hashCode() - { - switch (type) - { - case 0: - return Integer.valueOf(intresp).hashCode(); - case 1: - return stringresp.hashCode(); - case 2: - return objresp.hashCode(); - } - return super.hashCode(); - } - - @Override - public String toString() - { - switch (type) - { - case 0: - return "DialogRunner int: " + intresp; - case 1: - return "DialogRunner str: '" + stringresp + "'"; - case 2: - return "DialogRunner obj: " + String.valueOf(objresp); - } - return "Unconfigured response."; - } - - /** - * null response - triggers the default response - * @return - */ - public boolean isNull() - { - return (type==2 && objresp==null) || (type==1 && (stringresp==null || stringresp.equals(""))); - } -} \ No newline at end of file diff --git a/src/jalview/util/dialogrunner/RunResponse.java b/src/jalview/util/dialogrunner/RunResponse.java index 3fd56c4..b97525b 100644 --- a/src/jalview/util/dialogrunner/RunResponse.java +++ b/src/jalview/util/dialogrunner/RunResponse.java @@ -32,43 +32,41 @@ public abstract class RunResponse implements Runnable /** * Response that triggers the Run method */ - public Response ourTrigger; + Object trigger; /** * set by run() on exit */ - public Response returned = null; + protected Object returnValue = null; - /** - * set by dialog runner - */ - public boolean wasRun = false; - - public RunResponse(int trigger) - { - ourTrigger = new Response(trigger); - } - - public RunResponse(Object trigger) + public RunResponse(Object onTrigger) { - ourTrigger = new Response(trigger); + trigger = onTrigger; } - public RunResponse(String trigger) + public Object getTrigger() { - ourTrigger = new Response(trigger); + return trigger; } - + public void reset() { - wasRun = false; - returned = null; - + returnValue = null; } @Override public String toString() { - return "Runner for " + ourTrigger; + return "Runner for " + trigger; + } + + public Object getReturnValue() + { + return returnValue; + } + + public void setReturnValue(Object o) + { + returnValue = o; } } diff --git a/test/jalview/util/dialogrunner/DialogRunnerTest.java b/test/jalview/util/dialogrunner/DialogRunnerTest.java index e69ae87..b89c4bf 100644 --- a/test/jalview/util/dialogrunner/DialogRunnerTest.java +++ b/test/jalview/util/dialogrunner/DialogRunnerTest.java @@ -1,24 +1,39 @@ package jalview.util.dialogrunner; -import org.testng.Assert; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertTrue; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + import org.testng.annotations.Test; +import junit.extensions.PA; + public class DialogRunnerTest { public class MockDialog implements DialogRunnerI { - DialogRunner runner = new DialogRunner<>(this); + DialogRunnerI runner = new DialogRunner(); @Override - public MockDialog response(RunResponse action) + public DialogRunnerI addResponse(Object response, RunResponse action) { - return runner.response(action); + return runner.addResponse(response, action); } - public void doDialog(String resp) + public List doDialog(String resp) { - runner.firstRun(resp); + return runner.handleResponse(resp); } + + @Override + public List handleResponse(Object response) + { + return null; + } } MockDialog dialog = new MockDialog(); @@ -27,28 +42,28 @@ public class DialogRunnerTest public void testDialogRunner() { RunResponse ok, cancel, help, ineed; - final Response ooh = new Response("OOOOoooOOOOH!"), - r_ok = new Response("OK"), r_cancel = new Response("CANCEL"), - r_done = new Response("DONE"), r_help = new Response("HELP"), - r_ddoit = new Response("DIDNT DOIT"), - r_needsb = new Response("I NEED SOMEBODY"); + final String ooh = "OOOOoooOOOOH!"; + final String r_ok = "OK"; + final String r_cancel = "CANCEL"; + final String r_done = "DONE"; + final String r_help = "HELP"; + final String r_ddoit = "DIDNT DOIT"; + final String r_needsb = "I NEED SOMEBODY"; ok = new RunResponse("OK") { - @Override public void run() { - returned = new Response("DONE"); + returnValue = "DONE"; } }; final RunResponse befok = new RunResponse("OK") { - @Override public void run() { - returned = new Response("OK"); + returnValue = "OK"; } }; @@ -57,7 +72,7 @@ public class DialogRunnerTest @Override public void run() { - returned = r_ddoit; + returnValue = r_ddoit; } }; help = new RunResponse("HELP") @@ -65,8 +80,7 @@ public class DialogRunnerTest @Override public void run() { - returned = r_needsb; - + returnValue = r_needsb; } }; ineed = new RunResponse(r_needsb) @@ -74,56 +88,64 @@ public class DialogRunnerTest @Override public void run() { - returned = ooh; + returnValue = ooh; } }; - Assert.assertFalse(dialog.runner.isRegistered(ok)); + assertFalse(isRegistered(dialog.runner, ok)); - dialog.response(ok).response(cancel).response(help).response(ineed); + dialog.addResponse("OK", ok).addResponse("CANCEL", cancel). + addResponse("HELP", help).addResponse(r_needsb, ineed); - Assert.assertTrue(dialog.runner.isRegistered(ok)); + assertTrue(isRegistered(dialog.runner, ok)); - Assert.assertFalse(dialog.runner.firstRunWasCalled); - dialog.doDialog("OK"); +// Assert.assertFalse(dialog.runner.firstRunWasCalled); + List actions = dialog.doDialog("OK"); // OK called, nothing else. - Assert.assertTrue(dialog.runner.firstRunWasCalled); - Assert.assertTrue(ok.wasRun); - Assert.assertEquals(ok.returned, r_done); - Assert.assertFalse(cancel.wasRun); - Assert.assertEquals(dialog.runner.responses.size(), 2); + // Assert.assertTrue(dialog.runner.firstRunWasCalled); + assertTrue(actions.contains(ok));//ok.wasRun); + assertEquals(ok.returnValue, r_done); + assertFalse(actions.contains(cancel));//cancel.wasRun); + assertEquals(actions/*dialog.runner.responses*/.size(), 2); // do it again - check it doesn't trigger again - ok.wasRun = false; - dialog.doDialog("OK"); - Assert.assertFalse(ok.wasRun); + //ok.wasRun = false; + actions = dialog.doDialog("OK"); + assertFalse(actions.contains(ok)); // reset - everything false/null - dialog.runner.resetResponses(); - Assert.assertFalse(dialog.runner.firstRunWasCalled); - Assert.assertFalse(ok.wasRun); - Assert.assertNull(ok.returned); - Assert.assertEquals(dialog.runner.responses.size(), 0); +// dialog.runner.resetResponses(); +// Assert.assertFalse(dialog.runner.firstRunWasCalled); +// Assert.assertFalse(ok.wasRun); +// Assert.assertNull(ok.returned); +// Assert.assertEquals(dialog.runner.responses.size(), 0); // cancel called .. - dialog.doDialog("HELP"); - Assert.assertTrue(dialog.runner.firstRunWasCalled); - Assert.assertFalse(ok.wasRun); - Assert.assertEquals(ineed.returned, ooh); - Assert.assertEquals(dialog.runner.responses.size(), 3); + actions = dialog.doDialog("HELP"); +// Assert.assertTrue(dialog.runner.firstRunWasCalled); + assertFalse(actions.contains(ok));//ok.wasRun); + assertEquals(ineed.returnValue, ooh); + assertEquals(actions/*dialog.runner.responses*/.size(), 3); // TODO: test prepend and chained execution of tasks for a response. - Assert.assertFalse(dialog.runner.isRegistered(befok)); - dialog.runner.firstResponse(befok); +// Assert.assertFalse(dialog.runner.isRegistered(befok)); + dialog.runner.addResponse("OK", befok); //setFirstResponse(befok); - Assert.assertTrue(dialog.runner.isRegistered(befok)); - Assert.assertTrue(dialog.runner.isRegistered(ok)); + assertTrue(isRegistered(dialog.runner, befok)); + assertTrue(isRegistered(dialog.runner, ok)); - dialog.runner.resetResponses(); +// dialog.runner.resetResponses(); - dialog.doDialog("OK"); - Assert.assertTrue(befok.wasRun); - Assert.assertTrue(ok.wasRun); - Assert.assertEquals(dialog.runner.responses.size(), 3); + actions = dialog.doDialog("OK"); + assertTrue(actions.contains(befok));//befok.wasRun); + assertTrue(actions.contains(ok)); //ok.wasRun); + assertEquals(actions/*dialog.runner.responses*/.size(), 3); + } + + private boolean isRegistered(DialogRunnerI runner, RunResponse action) + { + Map> actions = (Map>) PA.getValue(runner, "callbacks"); + Collection registered = actions.get(action.getTrigger()); + return registered != null && registered.contains(action); } } diff --git a/test/jalview/util/dialogrunner/ResponseTest.java b/test/jalview/util/dialogrunner/ResponseTest.java deleted file mode 100644 index d722b1a..0000000 --- a/test/jalview/util/dialogrunner/ResponseTest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors - * - * This file is part of Jalview. - * - * Jalview is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 - * of the License, or (at your option) any later version. - * - * Jalview is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Jalview. If not, see . - * The Jalview Authors are detailed in the 'AUTHORS' file. - */ -package jalview.util.dialogrunner; - -import org.testng.Assert; -import org.testng.annotations.Test; - -public class ResponseTest -{ - @Test - public void testResonse() { - Response intr=new Response(1),intrCopy=new Response(1); - Response strr=new Response("1"),strrcopy=new Response("1"); - Response objr=new Response(Double.valueOf(1d)); - Assert.assertTrue(intr.equals(intrCopy)); - Assert.assertTrue(strr.equals(strrcopy)); - Assert.assertFalse(intr.equals(strr)); - Assert.assertFalse(intr.equals(objr)); - Assert.assertFalse(strr.equals(objr)); - Assert.assertEquals(intr.toString(), "DialogRunner int: 1"); - Assert.assertEquals(strr.toString(), "DialogRunner str: '1'"); - Assert.assertEquals(objr.toString(), "DialogRunner obj: 1.0"); - } -} diff --git a/test/jalview/util/dialogrunner/RunResponseTest.java b/test/jalview/util/dialogrunner/RunResponseTest.java index ff86675..a8ae22e 100644 --- a/test/jalview/util/dialogrunner/RunResponseTest.java +++ b/test/jalview/util/dialogrunner/RunResponseTest.java @@ -1,6 +1,8 @@ package jalview.util.dialogrunner; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotEquals; +import static org.testng.Assert.assertNull; -import org.testng.Assert; import org.testng.annotations.Test; public class RunResponseTest @@ -8,30 +10,23 @@ public class RunResponseTest @Test public void testRunResponse() { - RunResponse rr = new RunResponse("OK") { @Override public void run() { - returned = new Response("DONE"); + returnValue = "DONE"; } }; - Assert.assertEquals(rr.ourTrigger, new Response("OK")); - Assert.assertNotEquals(rr.ourTrigger, new Response("NOTOK")); - Assert.assertNull(rr.returned); - Assert.assertFalse(rr.wasRun); - // trivial .. - rr.wasRun = true; - rr.run(); - Assert.assertTrue(rr.wasRun); + assertEquals(rr.trigger, "OK"); + assertNotEquals(rr.trigger, "NOTOK"); + assertNull(rr.returnValue); - Assert.assertEquals(rr.returned, new Response("DONE")); + assertEquals(rr.returnValue, "DONE"); rr.reset(); - Assert.assertNull(rr.returned); - Assert.assertFalse(rr.wasRun); + assertNull(rr.returnValue); - Assert.assertEquals(rr.toString(), "Runner for " + new Response("OK")); + assertEquals(rr.toString(), "Runner for " + "OK"); // just test the other constructors RunResponse rr12 = new RunResponse(12) @@ -39,7 +34,7 @@ public class RunResponseTest @Override public void run() { - returned = new Response("DONE"); + returnValue = "DONE"; } }; RunResponse rrpi = new RunResponse(new Double(3.142)) @@ -47,11 +42,10 @@ public class RunResponseTest @Override public void run() { - returned = new Response("DONE"); + returnValue = "DONE"; } }; - Assert.assertEquals(rr12.ourTrigger, new Response(12)); - Assert.assertEquals(rrpi.ourTrigger, - new Response(Double.valueOf(3.142))); + assertEquals(rr12.trigger, Integer.valueOf(12)); + assertEquals(rrpi.trigger, Double.valueOf(3.142)); } }