package org.teachingextensions.logo.utils.EventUtils; import javax.swing.ImageIcon; import javax.swing.JOptionPane; import org.teachingextensions.approvals.lite.util.NumberUtils; /** * <img src="http://www.mhhe.com/engcs/compsci/wu2/graphics/wu2java/common/javabook2Doc/mbox3.gif" * style="text-align: left" alt="A message box" height="60" width="145"> <br> * Fancy MessageBox is a pop up window that you can change!<br> * Use it to collect input from the user, or to display a message for the user to read.<br> */ public class FancyMessageBox { private static FancyMessageBoxInstance fancyMessageBox = new FancyMessageBoxInstance(); /** * Prints a request for a numerical input to the window. <br> * <b>Example:</b> * {@code int cookies = FancyMessageBox.askForNumericalInput("How many cookies would you like?", "Cookies");} * * @param message * the text in the FancyMessageBox * @param title * the title of the FancyMessageBox * @return the user input as a number */ public static int askForNumericalInput(String message, String title) { return fancyMessageBox.askForNumericalInput(message, title); } /** * Prints a request for a text input to the window. <br> * <b>Example:</b> * {@code String name = FancyMessageBox.askForTextInput("What is your nickname?", "Nicknames");} * * @param message * the text in the FancyMessageBox * @param title * the title of the FancyMessageBox * @return the user input as a string */ public static String askForTextInput(String message, String title) { return fancyMessageBox.askForTextInput(message, title); } /** * Prints the message to the window. <br> * <b>Example:</b> {@code FancyMessageBox.showMessage("Girl programmers rule!","Just the Facts");} * * @param message * the text in the FancyMessageBox * @param title * the title of the FancyMessageBox * @param icon * a file and path that has an image for the MessageBox */ public static void showMesage(String message, String title, ImageIcon icon) { fancyMessageBox.showMessage(message, title, icon); } public static class FancyMessageBoxInstance { public static void mock(FancyMessageBoxInstance messageBoxMock) { fancyMessageBox = messageBoxMock; } public int askForNumericalInput(String message, String title) { String input = askForTextInput(message, title); return NumberUtils.load(input, 0); } public String askForTextInput(String message, String title) { return JOptionPane.showInputDialog(null, message, title, -1); } public void showMessage(String message, String title, ImageIcon icon) { JOptionPane.showMessageDialog(null, message, title, -1, icon); } } }