fix typos and submenu mnemonic bug
authorKevin Lamonte <kevin.lamonte@gmail.com>
Wed, 31 Jul 2019 00:18:44 +0000 (19:18 -0500)
committerKevin Lamonte <kevin.lamonte@gmail.com>
Wed, 31 Jul 2019 00:18:44 +0000 (19:18 -0500)
src/jexer/TComboBox.java
src/jexer/TImage.java
src/jexer/TImageWindow.java
src/jexer/TPasswordField.java
src/jexer/TSpinner.java
src/jexer/TTableWindow.java
src/jexer/TWidget.java
src/jexer/demos/DemoEditorWindow.java
src/jexer/menu/TMenu.java

index 0814177d495d858ee02d6df734336dcd4fe41019..1ef6bcd4ffd8ecd3a518646f7095412236e4d629 100644 (file)
@@ -96,13 +96,12 @@ public class TComboBox extends TWidget {
 
         this.updateAction = updateAction;
 
-        field = new TField(this, 0, 0, width - 3, false, "",
-            updateAction, null);
+        field = addField(0, 0, width - 3, false, "", updateAction, null);
         if (valuesIndex >= 0) {
             field.setText(values.get(valuesIndex));
         }
 
-        list = new TList(this, values, 0, 1, width, valuesHeight,
+        list = addList(values, 0, 1, width, valuesHeight,
             new TAction() {
                 public void DO() {
                     field.setText(list.getSelected());
index 1a9aa9e62e6d5ec2b9ce4c52de3461a39c297c25..bc827b709a4dd5e75bd1021f1c30c6ab11f19d49 100644 (file)
@@ -111,6 +111,25 @@ public class TImage extends TWidget {
     // Constructors -----------------------------------------------------------
     // ------------------------------------------------------------------------
 
+    /**
+     * Public constructor.
+     *
+     * @param parent parent widget
+     * @param x column relative to parent
+     * @param y row relative to parent
+     * @param width number of text cells for width of the image
+     * @param height number of text cells for height of the image
+     * @param image the image to display
+     * @param left left column of the image.  0 is the left-most column.
+     * @param top top row of the image.  0 is the top-most row.
+     */
+    public TImage(final TWidget parent, final int x, final int y,
+        final int width, final int height,
+        final BufferedImage image, final int left, final int top) {
+
+        this(parent, x, y, width, height, image, left, top, null);
+    }
+
     /**
      * Public constructor.
      *
index a4a54a91d8c601ebd82c0311ddba7f2056ac9d8c..86b0d6d62811d201b902646fe2fcd5d6ab16133d 100644 (file)
@@ -104,8 +104,8 @@ public class TImageWindow extends TScrollableWindow {
 
         BufferedImage image = ImageIO.read(file);
 
-        imageField = new TImage(this, 0, 0, getWidth() - 2, getHeight() - 2,
-            image, 0, 0, null);
+        imageField = addImage(0, 0, getWidth() - 2, getHeight() - 2,
+            image, 0, 0);
         setTitle(file.getName());
 
         setupAfterImage();
index 1b78fc8b8db65256bf18b555004c078333da1b98..6b00f4a6653d3ba5bef763b1b66b10ba6c56d265 100644 (file)
@@ -32,7 +32,8 @@ import jexer.bits.CellAttributes;
 import jexer.bits.GraphicsChars;
 
 /**
- * TField implements an editable text field.
+ * TPasswordField implements an editable text field that displays
+ * stars/asterisks when it is not active.
  */
 public class TPasswordField extends TField {
 
index ba45f6a64794b2d638a08f8a6fe3b1cf6d0036c9..474848698ee7be4c6f08911ef69561dc3793964e 100644 (file)
@@ -35,7 +35,7 @@ import jexer.event.TMouseEvent;
 import static jexer.TKeypress.*;
 
 /**
- * TSpinner implements a simple up/down spinner.  Values can be numer
+ * TSpinner implements a simple up/down spinner.
  */
 public class TSpinner extends TWidget {
 
index ad96543dbfe7e5750018bdbc2c6631403c10a3ee..984e660fe51e8738a1c344576b485ab83ffc02ba 100644 (file)
@@ -75,7 +75,7 @@ public class TTableWindow extends TScrollableWindow {
         super(parent, title, 0, 0, parent.getScreen().getWidth() / 2,
             parent.getScreen().getHeight() / 2 - 2, RESIZABLE | CENTERED);
 
-        tableField = new TTableWidget(this, 0, 0, getWidth() - 2, getHeight() - 2);
+        tableField = addTable(0, 0, getWidth() - 2, getHeight() - 2);
         setupAfterTable();
     }
 
index 9af0bb83ba122eba0ca3e4480c09d167e3254918..c89e70ec65de92a7240ec9c69e90bcbf7736da4a 100644 (file)
@@ -28,6 +28,7 @@
  */
 package jexer;
 
+import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.util.List;
 import java.util.ArrayList;
@@ -2201,4 +2202,58 @@ public abstract class TWidget implements Comparable<TWidget> {
             moveAction);
     }
 
+    /**
+     * Convenience function to add an image to this container/window.
+     *
+     * @param x column relative to parent
+     * @param y row relative to parent
+     * @param width number of text cells for width of the image
+     * @param height number of text cells for height of the image
+     * @param image the image to display
+     * @param left left column of the image.  0 is the left-most column.
+     * @param top top row of the image.  0 is the top-most row.
+     */
+    public final TImage addImage(final int x, final int y,
+        final int width, final int height,
+        final BufferedImage image, final int left, final int top) {
+
+        return new TImage(this, x, y, width, height, image, left, top);
+    }
+
+    /**
+     * Convenience function to add an image to this container/window.
+     *
+     * @param x column relative to parent
+     * @param y row relative to parent
+     * @param width number of text cells for width of the image
+     * @param height number of text cells for height of the image
+     * @param image the image to display
+     * @param left left column of the image.  0 is the left-most column.
+     * @param top top row of the image.  0 is the top-most row.
+     * @param clickAction function to call when mouse is pressed
+     */
+    public final TImage addImage(final int x, final int y,
+        final int width, final int height,
+        final BufferedImage image, final int left, final int top,
+        final TAction clickAction) {
+
+        return new TImage(this, x, y, width, height, image, left, top,
+            clickAction);
+    }
+
+    /**
+     * Convenience function to add an editable 2D data table to this
+     * container/window.
+     *
+     * @param x column relative to parent
+     * @param y row relative to parent
+     * @param width width of widget
+     * @param height height of widget
+     */
+    public TTableWidget addTable(final int x, final int y, final int width,
+        final int height) {
+
+        return new TTableWidget(this, x, y, width, height);
+    }
+
 }
index 59bc9f0fc48fbae45e4845f3da4b9722101c0afc..87798fb3f4b08d5ca6f684dc44928143f57aa35b 100644 (file)
@@ -72,7 +72,7 @@ public class DemoEditorWindow extends TWindow {
         final String text) {
 
         super(parent, title, 0, 0, 44, 22, RESIZABLE);
-        editField = new TEditorWidget(this, text, 0, 0, 42, 20);
+        editField = addEditor(text, 0, 0, 42, 20);
 
         statusBar = newStatusBar(i18n.getString("statusBar"));
         statusBar.addShortcutKeypress(kbF1, cmHelp,
index 8a8ec6be752d1443e60969baa5505671a567279f..d102f79118f5c8202a0e4f6e9f2ed7272ee5cc7f 100644 (file)
@@ -270,15 +270,21 @@ public class TMenu extends TWindow {
         /*
         System.err.printf("keypress: %s active child: %s\n", keypress,
             getActiveChild());
-         */
+        */
 
         if (getActiveChild() != this) {
-            if ((getActiveChild() instanceof TSubMenu)
-                || (getActiveChild() instanceof TMenu)
-            ) {
+            if (getActiveChild() instanceof TMenu) {
                 getActiveChild().onKeypress(keypress);
                 return;
             }
+
+            if (getActiveChild() instanceof TSubMenu) {
+                TSubMenu subMenu = (TSubMenu) getActiveChild();
+                if (subMenu.menu.isActive()) {
+                    subMenu.onKeypress(keypress);
+                    return;
+                }
+            }
         }
 
         if (keypress.equals(kbEsc)) {
@@ -310,12 +316,18 @@ public class TMenu extends TWindow {
         if (!keypress.getKey().isFnKey()
             && !keypress.getKey().isAlt()
             && !keypress.getKey().isCtrl()) {
+
+            // System.err.println("Checking children for mnemonic...");
+
             for (TWidget widget: getChildren()) {
                 TMenuItem item = (TMenuItem) widget;
-                if ((item.getMnemonic() != null)
+                if ((item.isEnabled() == true)
+                    && (item.getMnemonic() != null)
                     && (Character.toLowerCase(item.getMnemonic().getShortcut())
                         == Character.toLowerCase(keypress.getKey().getChar()))
                 ) {
+                    // System.err.println("activate: " + item);
+
                     // Send an enter keystroke to it
                     activate(item);
                     item.handleEvent(new TKeypressEvent(kbEnter));