diff --git a/src/main/java/com/annimon/ownlang/modules/forms/AbstractButtonValue.java b/src/main/java/com/annimon/ownlang/modules/forms/AbstractButtonValue.java new file mode 100644 index 0000000..64f4ed4 --- /dev/null +++ b/src/main/java/com/annimon/ownlang/modules/forms/AbstractButtonValue.java @@ -0,0 +1,60 @@ +package com.annimon.ownlang.modules.forms; + +import com.annimon.ownlang.lib.Arguments; +import static com.annimon.ownlang.lib.Converters.*; +import com.annimon.ownlang.lib.Function; +import com.annimon.ownlang.lib.FunctionValue; +import com.annimon.ownlang.lib.NumberValue; +import com.annimon.ownlang.lib.Value; +import com.annimon.ownlang.lib.ValueUtils; +import javax.swing.AbstractButton; + +public class AbstractButtonValue extends JComponentValue { + + final AbstractButton abstractButton; + + public AbstractButtonValue(int functionsCount, AbstractButton abstractButton) { + super(functionsCount + 2, abstractButton); + this.abstractButton = abstractButton; + init(); + } + + private void init() { + set("onClick", new FunctionValue(this::addActionListener)); + set("addActionListener", new FunctionValue(this::addActionListener)); + set("onChange", new FunctionValue(this::addChangeListener)); + set("addChangeListener", new FunctionValue(this::addChangeListener)); + set("doClick", intOptToVoid(abstractButton::doClick, abstractButton::doClick)); + set("getActionCommand", voidToString(abstractButton::getActionCommand)); + set("getDisplayedMnemonicIndex", voidToInt(abstractButton::getDisplayedMnemonicIndex)); + set("getHideActionText", voidToBoolean(abstractButton::getHideActionText)); + set("getHorizontalAlignment", voidToInt(abstractButton::getHorizontalAlignment)); + set("getHorizontalTextPosition", voidToInt(abstractButton::getHorizontalTextPosition)); + set("getIconTextGap", voidToInt(abstractButton::getIconTextGap)); + set("getText", voidToString(abstractButton::getText)); + set("getVerticalAlignment", voidToInt(abstractButton::getVerticalAlignment)); + set("getVerticalTextPosition", voidToInt(abstractButton::getVerticalTextPosition)); + set("isSelected", voidToBoolean(abstractButton::isSelected)); + set("setActionCommand", stringToVoid(abstractButton::setActionCommand)); + set("setHorizontalAlignment", intToVoid(abstractButton::setHorizontalAlignment)); + set("setHorizontalTextPosition", intToVoid(abstractButton::setHorizontalTextPosition)); + set("setSelected", booleanToVoid(abstractButton::setSelected)); + set("setText", stringToVoid(abstractButton::setText)); + set("setVerticalAlignment", intToVoid(abstractButton::setVerticalAlignment)); + set("setVerticalTextPosition", intToVoid(abstractButton::setVerticalTextPosition)); + } + + private Value addActionListener(Value[] args) { + Arguments.check(1, args.length); + final Function action = ValueUtils.consumeFunction(args[0], 0); + abstractButton.addActionListener(e -> action.execute()); + return NumberValue.ZERO; + } + + private Value addChangeListener(Value[] args) { + Arguments.check(1, args.length); + final Function action = ValueUtils.consumeFunction(args[0], 0); + abstractButton.addChangeListener(e -> action.execute()); + return NumberValue.ZERO; + } +} \ No newline at end of file diff --git a/src/main/java/com/annimon/ownlang/modules/forms/ComponentValue.java b/src/main/java/com/annimon/ownlang/modules/forms/ComponentValue.java index 15a0de2..04afe22 100644 --- a/src/main/java/com/annimon/ownlang/modules/forms/ComponentValue.java +++ b/src/main/java/com/annimon/ownlang/modules/forms/ComponentValue.java @@ -77,7 +77,7 @@ public abstract class ComponentValue extends MapValue { set("validate", voidToVoid(component::validate)); } - private Value addKeyListener(Value... args) { + private Value addKeyListener(Value[] args) { Arguments.check(1, args.length); final Function action = ValueUtils.consumeFunction(args[0], 0); component.addKeyListener(new KeyListener() { @@ -118,7 +118,7 @@ public abstract class ComponentValue extends MapValue { return NumberValue.ZERO; } - private Value getLocation(Value... args) { + private Value getLocation(Value[] args) { final Point location = component.getLocation(); final ArrayValue result = new ArrayValue(2); result.set(0, NumberValue.of(location.x)); @@ -126,7 +126,7 @@ public abstract class ComponentValue extends MapValue { return result; } - private Value getLocationOnScreen(Value... args) { + private Value getLocationOnScreen(Value[] args) { final Point location = component.getLocationOnScreen(); final ArrayValue result = new ArrayValue(2); result.set(0, NumberValue.of(location.x)); @@ -134,7 +134,7 @@ public abstract class ComponentValue extends MapValue { return result; } - private Value setLocation(Value... args) { + private Value setLocation(Value[] args) { Arguments.check(2, args.length); component.setLocation(args[0].asInt(), args[1].asInt()); return NumberValue.ZERO; diff --git a/src/main/java/com/annimon/ownlang/modules/forms/JButtonValue.java b/src/main/java/com/annimon/ownlang/modules/forms/JButtonValue.java index 87766fb..24939b4 100644 --- a/src/main/java/com/annimon/ownlang/modules/forms/JButtonValue.java +++ b/src/main/java/com/annimon/ownlang/modules/forms/JButtonValue.java @@ -1,32 +1,17 @@ package com.annimon.ownlang.modules.forms; -import com.annimon.ownlang.lib.Arguments; -import com.annimon.ownlang.lib.Function; -import com.annimon.ownlang.lib.FunctionValue; -import com.annimon.ownlang.lib.NumberValue; -import com.annimon.ownlang.lib.Value; -import com.annimon.ownlang.lib.ValueUtils; import javax.swing.JButton; -public class JButtonValue extends JComponentValue { +public class JButtonValue extends AbstractButtonValue { - final JButton button; + final JButton jButton; - public JButtonValue(JButton button) { - super(2, button); - this.button = button; + public JButtonValue(JButton jButton) { + super(0, jButton); + this.jButton = jButton; init(); } private void init() { - set("onClick", new FunctionValue(this::addActionListener)); - set("addActionListener", new FunctionValue(this::addActionListener)); - } - - private Value addActionListener(Value... args) { - Arguments.check(1, args.length); - final Function action = ValueUtils.consumeFunction(args[0], 0); - button.addActionListener(e -> action.execute()); - return NumberValue.ZERO; } } \ No newline at end of file diff --git a/src/main/java/com/annimon/ownlang/modules/forms/JComponentValue.java b/src/main/java/com/annimon/ownlang/modules/forms/JComponentValue.java index 63b5829..cd8561a 100644 --- a/src/main/java/com/annimon/ownlang/modules/forms/JComponentValue.java +++ b/src/main/java/com/annimon/ownlang/modules/forms/JComponentValue.java @@ -8,12 +8,24 @@ public abstract class JComponentValue extends ContainerValue { final JComponent jComponent; public JComponentValue(int functionsCount, JComponent jComponent) { - super(functionsCount + 2, jComponent); + super(functionsCount + 14, jComponent); this.jComponent = jComponent; init(); } private void init() { + set("getAutoscrolls", voidToBoolean(jComponent::getAutoscrolls)); + set("setAutoscrolls", booleanToVoid(jComponent::setAutoscrolls)); + set("isDoubleBuffered", voidToBoolean(jComponent::isDoubleBuffered)); + set("setDoubleBuffered", booleanToVoid(jComponent::setDoubleBuffered)); + set("getInheritsPopupMenu", voidToBoolean(jComponent::getInheritsPopupMenu)); + set("setInheritsPopupMenu", booleanToVoid(jComponent::setInheritsPopupMenu)); + set("isOpaque", voidToBoolean(jComponent::isOpaque)); + set("setOpaque", booleanToVoid(jComponent::setOpaque)); + set("isRequestFocusEnabled", voidToBoolean(jComponent::isRequestFocusEnabled)); + set("setRequestFocusEnabled", booleanToVoid(jComponent::setRequestFocusEnabled)); + set("getVerifyInputWhenFocusTarget", voidToBoolean(jComponent::getVerifyInputWhenFocusTarget)); + set("setVerifyInputWhenFocusTarget", booleanToVoid(jComponent::setVerifyInputWhenFocusTarget)); set("getToolTipText", voidToString(jComponent::getToolTipText)); set("setToolTipText", stringToVoid(jComponent::setToolTipText)); } diff --git a/src/main/java/com/annimon/ownlang/modules/forms/JTextComponentValue.java b/src/main/java/com/annimon/ownlang/modules/forms/JTextComponentValue.java new file mode 100644 index 0000000..d314701 --- /dev/null +++ b/src/main/java/com/annimon/ownlang/modules/forms/JTextComponentValue.java @@ -0,0 +1,38 @@ +package com.annimon.ownlang.modules.forms; + +import static com.annimon.ownlang.lib.Converters.*; +import javax.swing.text.JTextComponent; + +public class JTextComponentValue extends JComponentValue { + + private final JTextComponent textComponent; + + public JTextComponentValue(int functionsCount, JTextComponent textComponent) { + super(functionsCount + 20, textComponent); + this.textComponent = textComponent; + init(); + } + + private void init() { + set("copy", voidToVoid(textComponent::copy)); + set("cut", voidToVoid(textComponent::cut)); + set("getCaretPosition", voidToInt(textComponent::getCaretPosition)); + set("getDragEnabled", voidToBoolean(textComponent::getDragEnabled)); + set("getSelectedText", voidToString(textComponent::getSelectedText)); + set("getSelectionStart", voidToInt(textComponent::getSelectionStart)); + set("getSelectionEnd", voidToInt(textComponent::getSelectionEnd)); + set("getText", voidToString(textComponent::getText)); + set("isEditable", voidToBoolean(textComponent::isEditable)); + set("moveCaretPosition", intToVoid(textComponent::moveCaretPosition)); + set("paste", voidToVoid(textComponent::paste)); + set("replaceSelection", stringToVoid(textComponent::replaceSelection)); + set("select", int2ToVoid(textComponent::select)); + set("selectAll", voidToVoid(textComponent::selectAll)); + set("setCaretPosition", intToVoid(textComponent::setCaretPosition)); + set("setDragEnabled", booleanToVoid(textComponent::setDragEnabled)); + set("setEditable", booleanToVoid(textComponent::setEditable)); + set("setSelectionStart", intToVoid(textComponent::setSelectionStart)); + set("setSelectionEnd", intToVoid(textComponent::setSelectionEnd)); + set("setText", stringToVoid(textComponent::setText)); + } +} \ No newline at end of file diff --git a/src/main/java/com/annimon/ownlang/modules/forms/JTextFieldValue.java b/src/main/java/com/annimon/ownlang/modules/forms/JTextFieldValue.java index 841b92a..b43f65b 100644 --- a/src/main/java/com/annimon/ownlang/modules/forms/JTextFieldValue.java +++ b/src/main/java/com/annimon/ownlang/modules/forms/JTextFieldValue.java @@ -9,12 +9,12 @@ import com.annimon.ownlang.lib.Value; import javax.swing.JTextField; import static com.annimon.ownlang.lib.ValueUtils.consumeFunction; -public class JTextFieldValue extends JComponentValue { +public class JTextFieldValue extends JTextComponentValue { private final JTextField textField; public JTextFieldValue(JTextField textField) { - super(16, textField); + super(10, textField); this.textField = textField; init(); } @@ -22,20 +22,14 @@ public class JTextFieldValue extends JComponentValue { private void init() { set("onAction", new FunctionValue(this::addActionListener)); set("addActionListener", new FunctionValue(this::addActionListener)); - set("getCaretPosition", voidToInt(textField::getCaretPosition)); set("getColumns", voidToInt(textField::getColumns)); set("getHorizontalAlignment", voidToInt(textField::getHorizontalAlignment)); - set("getSelectionEnd", voidToInt(textField::getSelectionEnd)); - set("getSelectionStart", voidToInt(textField::getSelectionStart)); set("getScrollOffset", voidToInt(textField::getScrollOffset)); - set("getText", voidToString(textField::getText)); - set("setCaretPosition", intToVoid(textField::setCaretPosition)); + set("postActionEvent", voidToVoid(textField::postActionEvent)); + set("setActionCommand", stringToVoid(textField::setActionCommand)); set("setColumns", intToVoid(textField::setColumns)); set("setHorizontalAlignment", intToVoid(textField::setHorizontalAlignment)); set("setScrollOffset", intToVoid(textField::setScrollOffset)); - set("setSelectionEnd", intToVoid(textField::setSelectionEnd)); - set("setSelectionStart", intToVoid(textField::setSelectionStart)); - set("setText", stringToVoid(textField::setText)); } private Value addActionListener(Value... args) {