X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJalviewFileChooser.java;fp=src%2Fjalview%2Fio%2FJalviewFileChooser.java;h=cf72ffb707e0e47a6468146b9768ed9884dd42d9;hb=833b0e8d60b46c17dad52d31f4896363f29499bc;hp=65cb603f104983d93beb5f0cfd78dbf55e4eb339;hpb=be9359e9a28efb6aade9bdac054d76b4f9452c47;p=jalview.git diff --git a/src/jalview/io/JalviewFileChooser.java b/src/jalview/io/JalviewFileChooser.java index 65cb603..cf72ffb 100755 --- a/src/jalview/io/JalviewFileChooser.java +++ b/src/jalview/io/JalviewFileChooser.java @@ -26,6 +26,7 @@ import jalview.gui.JvOptionPane; import jalview.util.MessageManager; import jalview.util.Platform; import jalview.util.dialogrunner.DialogRunnerI; +import jalview.util.dialogrunner.Response; import jalview.util.dialogrunner.RunResponse; import java.awt.Component; @@ -303,44 +304,80 @@ public class JalviewFileChooser extends JFileChooser return null; } - @Override - public int showSaveDialog(Component parent) throws HeadlessException + Component saveparent; + RunResponse overwriteCheck = new RunResponse( + JalviewFileChooser.APPROVE_OPTION) { - this.setAccessory(null); + @Override + public void run() + { + // JBP Note - this code was executed regardless of 'SAVE' being pressed + // need to see if there were side effects + if (getFileFilter() instanceof JalviewFileFilter) + { + JalviewFileFilter jvf = (JalviewFileFilter) getFileFilter(); - setDialogType(SAVE_DIALOG); + if (!jvf.accept(getSelectedFile())) + { + String withExtension = getSelectedFile() + "." + + jvf.getAcceptableExtension(); + setSelectedFile(new File(withExtension)); + } + } + // All good, so we continue to save + returned = new Response(JalviewFileChooser.APPROVE_OPTION); + + // TODO: ENSURE THAT FILES SAVED WITH A ':' IN THE NAME ARE REFUSED AND THE + // USER PROMPTED FOR A NEW FILENAME + /** + * @j2sNative + */ + { + if (getSelectedFile().exists()) + { + // TODO JAL-3048 - may not need to raise this for browser saves - int ret = showDialog(parent, MessageManager.getString("action.save")); + // yes/no cancel + int confirm = JvOptionPane.showConfirmDialog(saveparent, + MessageManager.getString("label.overwrite_existing_file"), + MessageManager.getString("label.file_already_exists"), + JvOptionPane.YES_NO_OPTION); + if (confirm != JvOptionPane.YES_OPTION) + { + returned = new Response(JalviewFileChooser.CANCEL_OPTION); + } + } + } + }; + }; - if (getFileFilter() instanceof JalviewFileFilter) - { - JalviewFileFilter jvf = (JalviewFileFilter) getFileFilter(); + @Override + public int showSaveDialog(Component parent) throws HeadlessException + { + this.setAccessory(null); - if (!jvf.accept(getSelectedFile())) - { - String withExtension = getSelectedFile() + "." - + jvf.getAcceptableExtension(); - setSelectedFile(new File(withExtension)); - } + /* + * Save dialog is opened until user picks a file format + */ + if (!runner.isRegistered(overwriteCheck)) + { + // first call for this instance + runner.firstResponse(overwriteCheck); } - // TODO: ENSURE THAT FILES SAVED WITH A ':' IN THE NAME ARE REFUSED AND THE - // USER PROMPTED FOR A NEW FILENAME - if ((ret == JalviewFileChooser.APPROVE_OPTION) - && getSelectedFile().exists()) + else { - int confirm = JvOptionPane.showConfirmDialog(parent, - MessageManager.getString("label.overwrite_existing_file"), - MessageManager.getString("label.file_already_exists"), - JvOptionPane.YES_NO_OPTION); - - if (confirm != JvOptionPane.YES_OPTION) - { - ret = JalviewFileChooser.CANCEL_OPTION; - } + // reset response flags + runner.resetResponses(); } - return ret; + setDialogType(SAVE_DIALOG); + saveparent = parent; + + int value = showDialog(parent, MessageManager.getString("action.save")); + + runner.run(value); + return value; } void recentListSelectionChanged(Object selection)