*
* The MIT License (MIT)
*
- * Copyright (C) 2017 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.List;
import java.util.ResourceBundle;
+import jexer.bits.StringUtils;
import jexer.event.TKeypressEvent;
import static jexer.TKeypress.*;
*
* <pre>
* {@code
- * box = application.messageBox(title, caption,
+ * box = messageBox(title, caption,
* TMessageBox.Type.OK | TMessageBox.Type.CANCEL);
*
* if (box.getResult() == TMessageBox.OK) {
*/
private Result result = Result.OK;
- /**
- * Get the result.
- *
- * @return the result: OK, CANCEL, YES, or NO.
- */
- public final Result getResult() {
- return result;
- }
-
// ------------------------------------------------------------------------
// Constructors -----------------------------------------------------------
// ------------------------------------------------------------------------
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
// Determine width and height
String [] lines = caption.split("\n");
- int width = title.length() + 12;
+ int width = StringUtils.width(title) + 12;
setHeight(6 + lines.length);
for (String line: lines) {
- if (line.length() + 4 > width) {
- width = line.length() + 4;
+ if (StringUtils.width(line) + 4 > width) {
+ width = StringUtils.width(line) + 4;
}
}
setWidth(width);
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();
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);
+ }
+
}