*
* The MIT License (MIT)
*
- * Copyright (C) 2016 Kevin Lamonte
+ * Copyright (C) 2019 Kevin Lamonte
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
import java.util.ArrayList;
import java.util.List;
+import java.util.ResourceBundle;
import jexer.event.TKeypressEvent;
import static jexer.TKeypress.*;
* TMessageBox is a system-modal dialog with buttons for OK, Cancel, Yes, or
* No. Call it like:
*
- * <p>
* <pre>
* {@code
* box = application.messageBox(title, caption,
*/
public class TMessageBox extends TWindow {
+ /**
+ * Translated strings.
+ */
+ private static final ResourceBundle i18n = ResourceBundle.getBundle(TMessageBox.class.getName());
+
+ // ------------------------------------------------------------------------
+ // Constants --------------------------------------------------------------
+ // ------------------------------------------------------------------------
+
/**
* Message boxes have these supported types.
*/
YESNOCANCEL
};
- /**
- * The type of this message box.
- */
- private Type type;
-
- /**
- * My buttons.
- */
- private List<TButton> buttons;
-
/**
* Message boxes have these possible results.
*/
NO
};
+ // ------------------------------------------------------------------------
+ // Variables --------------------------------------------------------------
+ // ------------------------------------------------------------------------
+
/**
- * Which button was clicked: OK, CANCEL, YES, or NO.
+ * The type of this message box.
*/
- private Result result = Result.OK;
+ private Type type;
/**
- * Get the result.
- *
- * @return the result: OK, CANCEL, YES, or NO.
+ * My buttons.
*/
- public final Result getResult() {
- return result;
- }
+ private List<TButton> buttons;
+
+ /**
+ * Which button was clicked: OK, CANCEL, YES, or NO.
+ */
+ private Result result = Result.OK;
+
+ // ------------------------------------------------------------------------
+ // Constructors -----------------------------------------------------------
+ // ------------------------------------------------------------------------
/**
* Public constructor. The message box will be centered on screen.
protected TMessageBox(final TApplication application, final String title,
final String caption, final Type type, final boolean yield) {
- // Start as 50x50 at (1, 1). These will be changed later.
+ // Start as 100x100 at (1, 1). These will be changed later.
super(application, title, 1, 1, 100, 100, CENTERED | MODAL);
// Hang onto type so that we can provide more convenience in
setWidth(15);
}
buttonX = (getWidth() - 11) / 2;
- buttons.add(addButton(" &OK ", buttonX, lineI,
+ buttons.add(addButton(i18n.getString("okButton"), buttonX, lineI,
new TAction() {
public void DO() {
result = Result.OK;
setWidth(26);
}
buttonX = (getWidth() - 22) / 2;
- buttons.add(addButton(" &OK ", buttonX, lineI,
+ buttons.add(addButton(i18n.getString("okButton"), buttonX, lineI,
new TAction() {
public void DO() {
result = Result.OK;
)
);
buttonX += 8 + 4;
- buttons.add(addButton("&Cancel", buttonX, lineI,
+ buttons.add(addButton(i18n.getString("cancelButton"), buttonX, lineI,
new TAction() {
public void DO() {
result = Result.CANCEL;
setWidth(20);
}
buttonX = (getWidth() - 16) / 2;
- buttons.add(addButton("&Yes", buttonX, lineI,
+ buttons.add(addButton(i18n.getString("yesButton"), buttonX, lineI,
new TAction() {
public void DO() {
result = Result.YES;
)
);
buttonX += 5 + 4;
- buttons.add(addButton("&No", buttonX, lineI,
+ buttons.add(addButton(i18n.getString("noButton"), buttonX, lineI,
new TAction() {
public void DO() {
result = Result.NO;
setWidth(31);
}
buttonX = (getWidth() - 27) / 2;
- buttons.add(addButton("&Yes", buttonX, lineI,
+ buttons.add(addButton(i18n.getString("yesButton"), buttonX, lineI,
new TAction() {
public void DO() {
result = Result.YES;
)
);
buttonX += 5 + 4;
- buttons.add(addButton("&No", buttonX, lineI,
+ buttons.add(addButton(i18n.getString("noButton"), buttonX, lineI,
new TAction() {
public void DO() {
result = Result.NO;
)
);
buttonX += 4 + 4;
- buttons.add(addButton("&Cancel", buttonX, lineI,
+ buttons.add(addButton(i18n.getString("cancelButton"), buttonX,
+ lineI,
new TAction() {
public void DO() {
result = Result.CANCEL;
break;
default:
- throw new IllegalArgumentException("Invalid message box type: " + type);
+ throw new IllegalArgumentException("Invalid message box type: " +
+ type);
}
- // Set the secondaryThread to run me
- getApplication().enableSecondaryEventReceiver(this);
-
if (yield) {
+ // Set the secondaryThread to run me
+ getApplication().enableSecondaryEventReceiver(this);
+
// Yield to the secondary thread. When I come back from the
// constructor response will already be set.
getApplication().yield();
}
}
+ // ------------------------------------------------------------------------
+ // TWindow ----------------------------------------------------------------
+ // ------------------------------------------------------------------------
+
/**
* Handle keystrokes.
*
break;
default:
- throw new IllegalArgumentException("Invalid message box type: " + type);
+ throw new IllegalArgumentException("Invalid message box type: " +
+ type);
}
super.onKeypress(keypress);
}
+ // ------------------------------------------------------------------------
+ // TMessageBox ------------------------------------------------------------
+ // ------------------------------------------------------------------------
+
+ /**
+ * Get the result.
+ *
+ * @return the result: OK, CANCEL, YES, or NO.
+ */
+ public final Result getResult() {
+ return result;
+ }
+
+ /**
+ * See if the user clicked YES.
+ *
+ * @return true if the user clicked YES
+ */
+ public final boolean isYes() {
+ return (result == Result.YES);
+ }
+
+ /**
+ * See if the user clicked NO.
+ *
+ * @return true if the user clicked NO
+ */
+ public final boolean isNo() {
+ return (result == Result.NO);
+ }
+
+ /**
+ * See if the user clicked OK.
+ *
+ * @return true if the user clicked OK
+ */
+ public final boolean isOk() {
+ return (result == Result.OK);
+ }
+
+ /**
+ * See if the user clicked CANCEL.
+ *
+ * @return true if the user clicked CANCEL
+ */
+ public final boolean isCancel() {
+ return (result == Result.CANCEL);
+ }
+
}