Add 'src/jexer/' from commit 'cf01c92f5809a0732409e280fb0f32f27393618d'
[nikiroo-utils.git] / src / jexer / TButton.java
index 534c12a441b9db40ce07f760e947b7c5e6cf796c..d86fa4400d16b51dc3be15dbaa38f5421ffdc7b5 100644 (file)
@@ -98,13 +98,20 @@ public class TButton extends TWidget {
 
         setX(x);
         setY(y);
-        setHeight(2);
-        setWidth(StringUtils.width(mnemonic.getRawLabel()) + 3);
+        super.setHeight(2);
+        super.setWidth(StringUtils.width(mnemonic.getRawLabel()) + 3);
 
         shadowColor = new CellAttributes();
         shadowColor.setTo(getWindow().getBackground());
         shadowColor.setForeColor(Color.BLACK);
         shadowColor.setBold(false);
+
+        // Since we set dimensions after TWidget's constructor, we need to
+        // update the layout manager.
+        if (getParent().getLayoutManager() != null) {
+            getParent().getLayoutManager().remove(this);
+            getParent().getLayoutManager().add(this);
+        }
     }
 
     /**
@@ -215,6 +222,27 @@ public class TButton extends TWidget {
     // TWidget ----------------------------------------------------------------
     // ------------------------------------------------------------------------
 
+    /**
+     * Override TWidget's width: we can only set width at construction time.
+     *
+     * @param width new widget width (ignored)
+     */
+    @Override
+    public void setWidth(final int width) {
+        // Do nothing
+    }
+
+    /**
+     * Override TWidget's height: we can only set height at construction
+     * time.
+     *
+     * @param height new widget height (ignored)
+     */
+    @Override
+    public void setHeight(final int height) {
+        // Do nothing
+    }
+
     /**
      * Draw a button with a shadow.
      */
@@ -250,12 +278,12 @@ public class TButton extends TWidget {
                     GraphicsChars.CP437[0xDF], shadowColor);
             }
         }
-        if (mnemonic.getShortcutIdx() >= 0) {
+        if (mnemonic.getScreenShortcutIdx() >= 0) {
             if (inButtonPress) {
-                putCharXY(2 + mnemonic.getShortcutIdx(), 0,
+                putCharXY(2 + mnemonic.getScreenShortcutIdx(), 0,
                     mnemonic.getShortcut(), menuMnemonicColor);
             } else {
-                putCharXY(1 + mnemonic.getShortcutIdx(), 0,
+                putCharXY(1 + mnemonic.getScreenShortcutIdx(), 0,
                     mnemonic.getShortcut(), menuMnemonicColor);
             }
         }
@@ -280,7 +308,7 @@ public class TButton extends TWidget {
      */
     public void dispatch() {
         if (action != null) {
-            action.DO();
+            action.DO(this);
             inButtonPress = false;
         }
     }