From edd00f1e68191d4098e0feb56929f6950d6e3cc4 Mon Sep 17 00:00:00 2001 From: hneemann Date: Thu, 31 Mar 2016 21:31:06 +0200 Subject: [PATCH] better text on option dialogs --- .../de/neemann/gui/ClosingWindowListener.java | 21 ++++++++++++-- .../de/neemann/gui/ConfirmDialogBuilder.java | 29 ++++++++++++++----- src/main/resources/lang/lang_de.properties | 6 +++- src/main/resources/lang/lang_en.properties | 4 +++ 4 files changed, 49 insertions(+), 11 deletions(-) diff --git a/src/main/java/de/neemann/gui/ClosingWindowListener.java b/src/main/java/de/neemann/gui/ClosingWindowListener.java index 037aeb82c..3929c6b0b 100644 --- a/src/main/java/de/neemann/gui/ClosingWindowListener.java +++ b/src/main/java/de/neemann/gui/ClosingWindowListener.java @@ -17,6 +17,9 @@ public class ClosingWindowListener extends WindowAdapter { public static String SAVE_CHANGES_MESSAGE = Lang.get("win_saveChanges"); public static String CONFIRM_EXIT_MESSAGE = Lang.get("win_confirmExit"); public static String STATE_CHANGED_MESSAGE = Lang.get("win_stateChanged"); + public static String NO_MESSAGE = Lang.get("btn_discard"); + public static String YES_MESSAGE = Lang.get("btn_save"); + public static String CANCEL_MESSAGE = Lang.get("btn_editFurther"); private final Component parent; private final GUICloser guiCloser; @@ -66,7 +69,13 @@ public class ClosingWindowListener extends WindowAdapter { */ public static boolean checkForSave(JFrame parent, ConfirmSave confirmSave) { if (confirmSave.isStateChanged()) { - int r = JOptionPane.showConfirmDialog(parent, SAVE_CHANGES_MESSAGE, STATE_CHANGED_MESSAGE, JOptionPane.YES_NO_CANCEL_OPTION); + int r = new ConfirmDialogBuilder(SAVE_CHANGES_MESSAGE) + .setTitle(STATE_CHANGED_MESSAGE) + .setNoOption(NO_MESSAGE) + .setYesOption(YES_MESSAGE) + .setCancleOption(CANCEL_MESSAGE) + .show(parent); + if (r != JOptionPane.CANCEL_OPTION) { if (r == JOptionPane.YES_OPTION) { confirmSave.saveChanges(); @@ -93,8 +102,14 @@ public class ClosingWindowListener extends WindowAdapter { @Override public void windowClosing(WindowEvent e) { if (guiCloser.isStateChanged()) { - int r = JOptionPane.showConfirmDialog(parent, SAVE_CHANGES_MESSAGE, CONFIRM_EXIT_MESSAGE, JOptionPane.YES_NO_CANCEL_OPTION); - if (r != JOptionPane.CANCEL_OPTION) { + int r = new ConfirmDialogBuilder(SAVE_CHANGES_MESSAGE) + .setTitle(CONFIRM_EXIT_MESSAGE) + .setNoOption(NO_MESSAGE) + .setYesOption(YES_MESSAGE) + .setCancleOption(CANCEL_MESSAGE) + .show(parent); + + if (r == JOptionPane.YES_OPTION || r == JOptionPane.NO_OPTION) { if (r == JOptionPane.YES_OPTION) { guiCloser.saveChanges(); } diff --git a/src/main/java/de/neemann/gui/ConfirmDialogBuilder.java b/src/main/java/de/neemann/gui/ConfirmDialogBuilder.java index 74e109574..417a114e1 100644 --- a/src/main/java/de/neemann/gui/ConfirmDialogBuilder.java +++ b/src/main/java/de/neemann/gui/ConfirmDialogBuilder.java @@ -15,6 +15,7 @@ public class ConfirmDialogBuilder { private String yes = "Yes"; private String no = "No"; private int def = 0; + private String cancle; /** * Creates anew dialog builder @@ -58,6 +59,17 @@ public class ConfirmDialogBuilder { return this; } + /** + * Sets the text for the cancle-option + * + * @param cancle the cancle option text + * @return this for chaining calls + */ + public ConfirmDialogBuilder setCancleOption(String cancle) { + this.cancle = cancle; + return this; + } + /** * Sets yes as the default option * @@ -82,20 +94,23 @@ public class ConfirmDialogBuilder { * Shows the dialog * * @param parent the parent component - * @return true if yes is pressed + * @return the result of showOptionDialog */ - public boolean show(Component parent) { - Object[] options = {yes, no}; - int n = JOptionPane.showOptionDialog(parent, + public int show(Component parent) { + Object[] options; + if (cancle == null) + options = new Object[]{yes, no}; + else + options = new Object[]{yes, no, cancle}; + + return JOptionPane.showOptionDialog(parent, message, title, - JOptionPane.YES_NO_OPTION, + cancle == null ? JOptionPane.YES_NO_OPTION : JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[def]); - - return n == JOptionPane.YES_OPTION; } } diff --git a/src/main/resources/lang/lang_de.properties b/src/main/resources/lang/lang_de.properties index 91cf4cf7d..62e0ec7a4 100644 --- a/src/main/resources/lang/lang_de.properties +++ b/src/main/resources/lang/lang_de.properties @@ -82,6 +82,10 @@ btn_edit=Bearbeiten btn_load=Laden btn_reload=Neu Laden btn_reload_tt=Letzte Datei noch einmal laden +btn_discard=Verwerfen +btn_save=Speichern +btn_editFurther=Weiter bearbeiten + tt_moveItemUp=Eintrag nach oben schieben tt_moveItemDown=Eintrag nach unten schieben @@ -132,6 +136,6 @@ menu_delete=L\u00F6schen menu_delete_tt=L\u00F6scht ausgew\u00E4hlte Elemente menu_about=\u00DCber Digital -win_saveChanges=Ver\u00E4nderungen speichern? +win_saveChanges=\u00C4nderungen speichern? win_confirmExit=Beenden best\u00E4tigen! win_stateChanged=Die Datei wurde ver\u00E4ndert! diff --git a/src/main/resources/lang/lang_en.properties b/src/main/resources/lang/lang_en.properties index 453d2ed46..ed9b4ca6c 100644 --- a/src/main/resources/lang/lang_en.properties +++ b/src/main/resources/lang/lang_en.properties @@ -83,6 +83,10 @@ btn_edit=Edit btn_load=Load btn_reload=Reload btn_reload_tt=Reload last hex file +btn_discard=Discard Changes +btn_save=Save +btn_editFurther=Continue editing + tt_moveItemUp=Move the item up tt_moveItemDown=Move the item down