This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository jaxx. See http://git.nuiton.org/jaxx.git commit ab1cff77e11760ab093eb3412d1d2950342df5e9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 16 14:59:47 2014 +0100 fixes #3570: Can save a file giving a starting directory --- .../swing/action/AbstractApplicationAction.java | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/jaxx-application-swing/src/main/java/org/nuiton/jaxx/application/swing/action/AbstractApplicationAction.java b/jaxx-application-swing/src/main/java/org/nuiton/jaxx/application/swing/action/AbstractApplicationAction.java index c73d3f3..11d25e5 100644 --- a/jaxx-application-swing/src/main/java/org/nuiton/jaxx/application/swing/action/AbstractApplicationAction.java +++ b/jaxx-application-swing/src/main/java/org/nuiton/jaxx/application/swing/action/AbstractApplicationAction.java @@ -265,6 +265,68 @@ public abstract class AbstractApplicationAction<M extends AbstractBean, UI exten return file; } + /** + * Sauver un fichier via un sélecteur graphique de fichiers, en précisant + * le répertoire où sauvegarder le fichier. + * + * @param startDirectory le répertoire à utiliser pour choisir le fichier + * @param title le titre du dialogue de sélection + * @param buttonLabel le label du boutton d'acceptation + * @param filters les filtres + descriptions sur le sélecteur de + * fichiers + * @return le fichier choisi ou {@code null} si pas de fichier choisi ou + * pas voulu écrasé un fichier existant. + * @since 2.17 + */ + protected File saveFileWithStartDirectory(File startDirectory, + String filename, + String extension, + String title, + String buttonLabel, + String... filters) { + + boolean withExtension = StringUtils.isNotBlank(extension); + String filenameSuffix = withExtension ? "." + extension : ""; + + File file = JaxxFileChooser.forSaving() + .setStartDirectory(startDirectory) + .setTitle(title) + .setParent((Component) getUI()) + .setApprovalText(buttonLabel) + .setPatternOrDescriptionFilters(Arrays.asList(filters)) + .setFilename(filename + filenameSuffix) + .choose(); + + //File file = FileChooserUtil.saveFile(filename + filenameSuffix, title, buttonLabel, getContext().getMainUI(), filters); + if (log.isDebugEnabled()) { + log.debug(title + " : " + file); + } + if (file != null) { + Preconditions.checkState(!file.isDirectory()); + + // add extension if missing + if (withExtension && !file.getName().endsWith(filenameSuffix)) { + file = new File(file.getParentFile(), file.getName() + filenameSuffix); + } + + // ask user to confirm overwrite. + boolean confirm = askOverwriteFile(file); + + if (confirm) { + + // on conserve le répertoire (pour une prochaine utilisation) + JaxxFileChooser.setCurrentDirectory(file.getParentFile()); + } else { + + // l'utilisateur n'a pas confirmé l'écrasement + // donc pas de fichier en retour + file = null; + } + } + + return file; + } + protected boolean askOverwriteFile(File file) { boolean result; if (file.exists()) { -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.