summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleDialogs.java
diff options
context:
space:
mode:
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/gui/SimpleDialogs.java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/gui/SimpleDialogs.java142
1 files changed, 115 insertions, 27 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleDialogs.java b/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleDialogs.java
index 7731529..85b9fa9 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleDialogs.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/gui/SimpleDialogs.java
@@ -1,24 +1,39 @@
package bjc.utils.gui;
import java.awt.Component;
+import java.awt.Frame;
import java.util.function.Function;
import java.util.function.Predicate;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+
+import bjc.utils.gui.layout.VLayout;
/**
* Utility class for getting simple input from the user.
+ *
* @author ben
*
*/
public class SimpleDialogs {
/**
* Get a bounded integer from the user.
- * @param parent The parent component for the dialogs.
- * @param title The title for the dialogs.
- * @param prompt The prompt to tell the user what to enter.
- * @param lower The lower integer bound to accept.
- * @param upper The upper integer bound to accept.
+ *
+ * @param parent
+ * The parent component for the dialogs.
+ * @param title
+ * The title for the dialogs.
+ * @param prompt
+ * The prompt to tell the user what to enter.
+ * @param lower
+ * The lower integer bound to accept.
+ * @param upper
+ * The upper integer bound to accept.
* @return A int within the specified bounds.
*/
public static int getBoundedInt(Component parent, String title,
@@ -35,9 +50,13 @@ public class SimpleDialogs {
/**
* Get a integer from the user
- * @param parent The parent component for dialogs.
- * @param title The title for dialogs.
- * @param prompt The prompt to tell the user what to enter.
+ *
+ * @param parent
+ * The parent component for dialogs.
+ * @param title
+ * The title for dialogs.
+ * @param prompt
+ * The prompt to tell the user what to enter.
* @return A int.
*/
public static int getInt(Component parent, String title,
@@ -54,23 +73,34 @@ public class SimpleDialogs {
/**
* Get a string from the user
- * @param parent The parent component for dialogs.
- * @param title The title for the dialogs.
- * @param prompt The prompt to tell the user what to enter.
+ *
+ * @param parent
+ * The parent component for dialogs.
+ * @param title
+ * The title for the dialogs.
+ * @param prompt
+ * The prompt to tell the user what to enter.
* @return A string.
*/
- public static String getString(Component parent, String title, String prompt) {
+ public static String getString(Component parent, String title,
+ String prompt) {
return JOptionPane.showInputDialog(parent, prompt, title,
JOptionPane.QUESTION_MESSAGE);
}
/**
* Get a value parsable from a string from the user.
- * @param parent The parent component for dialogs.
- * @param title The title for dialogs.
- * @param prompt The prompt to tell the user what to enter.
- * @param p A predicate to determine if a input is valid.
- * @param f The function to transform the string into a value.
+ *
+ * @param parent
+ * The parent component for dialogs.
+ * @param title
+ * The title for dialogs.
+ * @param prompt
+ * The prompt to tell the user what to enter.
+ * @param p
+ * A predicate to determine if a input is valid.
+ * @param f
+ * The function to transform the string into a value.
* @return The value parsed from a string.
*/
public static <E> E getValue(Component parent, String title,
@@ -88,9 +118,13 @@ public class SimpleDialogs {
/**
* Get a whole number from the user.
- * @param parent The parent component for dialogs.
- * @param title The title for dialogs.
- * @param prompt The prompt to tell the user what to enter.
+ *
+ * @param parent
+ * The parent component for dialogs.
+ * @param title
+ * The title for dialogs.
+ * @param prompt
+ * The prompt to tell the user what to enter.
* @return A whole number.
*/
public static int getWhole(Component parent, String title,
@@ -100,9 +134,13 @@ public class SimpleDialogs {
/**
* Ask the user a Yes/No question.
- * @param parent The parent component for dialogs.
- * @param title The title for dialogs.
- * @param question The question to ask the user.
+ *
+ * @param parent
+ * The parent component for dialogs.
+ * @param title
+ * The title for dialogs.
+ * @param question
+ * The question to ask the user.
* @return True if the user said yes, false otherwise.
*/
public static boolean getYesNo(Component parent, String title,
@@ -112,12 +150,62 @@ public class SimpleDialogs {
return (res == JOptionPane.YES_OPTION ? true : false);
}
-
+
+ /**
+ * Asks the user to pick an option from a series of choices.
+ *
+ * @param parent
+ * The parent frame for this dialog
+ * @param title
+ * The title of this dialog
+ * @param question
+ * The question being asked
+ * @param choices
+ * The availible choices for the question
+ * @return The choice the user picked, or null if they didn't pick one
+ */
+ @SuppressWarnings("unchecked")
+ public static <E> E getChoice(Frame parent, String title,
+ String question, E... choices) {
+ JDialog jd = new JDialog(parent, title, true);
+ jd.setLayout(new VLayout(2));
+
+ JPanel questionPane = new JPanel();
+
+ JLabel questionText = new JLabel(question);
+ JComboBox<E> questionChoices = new JComboBox<>(choices);
+
+ questionPane.add(questionText);
+ questionPane.add(questionChoices);
+
+ JPanel buttonPane = new JPanel();
+
+ JButton okButton = new JButton("Ok");
+ okButton.addActionListener(e -> jd.dispose());
+ JButton cancelButton = new JButton("Cancel");
+ cancelButton.addActionListener(e -> jd.dispose());
+
+ buttonPane.add(cancelButton);
+ buttonPane.add(okButton);
+
+ jd.add(questionPane);
+ jd.add(buttonPane);
+
+ jd.pack();
+ jd.setVisible(true);
+
+ return (E) questionChoices.getSelectedItem();
+ }
+
/**
* Show a error message to the user
- * @param parent The parent component for dialogs.
- * @param title The title for dialogs.
- * @param err The error to show the user.
+ *
+ * @param parent
+ * The parent component for dialogs.
+ * @param title
+ * The title for dialogs.
+ * @param err
+ * The error to show the user.
*/
public static void showError(Component parent, String title,
String err) {