From: Olaf Wintermann Date: Sun, 22 Feb 2026 19:45:04 +0000 (+0100) Subject: add visibilityStates parameter to button functions X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=adc16c59e57079f45c371804038bbdb8cd17a1f0;p=rssreader.git add visibilityStates parameter to button functions --- diff --git a/ui-java/src/main/java/de/unixwork/ui/ButtonBuilder.java b/ui-java/src/main/java/de/unixwork/ui/ButtonBuilder.java index 8ecd5f6..5195581 100644 --- a/ui-java/src/main/java/de/unixwork/ui/ButtonBuilder.java +++ b/ui-java/src/main/java/de/unixwork/ui/ButtonBuilder.java @@ -30,6 +30,7 @@ public class ButtonBuilder extends AbstractWidgetBuilder { private int labelType; private EventHandler onClick; private int[] states; + private int[] visibilityStates; public ButtonBuilder(UiObject obj, MethodHandle widgetConstructor) { this.obj = obj; @@ -141,6 +142,11 @@ public class ButtonBuilder extends AbstractWidgetBuilder { return this; } + public ButtonBuilder visibilityStates(int... states) { + this.visibilityStates = states; + return this; + } + public MemorySegment createArgs(Arena arena) throws Throwable { ArgFuncs ui = ArgFuncs.getInstance(); @@ -209,6 +215,11 @@ public class ButtonBuilder extends AbstractWidgetBuilder { MemorySegment.copy(states, 0, st, ValueLayout.JAVA_INT, 0, states.length); ui.button_args_set_states.invoke(args, st, states.length); } + if(visibilityStates != null) { + MemorySegment st = arena.allocate(ValueLayout.JAVA_INT, visibilityStates.length); + MemorySegment.copy(visibilityStates, 0, st, ValueLayout.JAVA_INT, 0, visibilityStates.length); + ui.button_args_set_visibility_states.invoke(args, st, visibilityStates.length); + } ui.button_args_set_labeltype.invoke(args, labelType); if(onClick != null) { diff --git a/ui-java/src/main/java/de/unixwork/ui/LinkButtonBuilder.java b/ui-java/src/main/java/de/unixwork/ui/LinkButtonBuilder.java index 0df6500..9abfdd8 100644 --- a/ui-java/src/main/java/de/unixwork/ui/LinkButtonBuilder.java +++ b/ui-java/src/main/java/de/unixwork/ui/LinkButtonBuilder.java @@ -32,6 +32,7 @@ public class LinkButtonBuilder extends AbstractWidgetBuilder { private boolean nofollow; private LinkButtonType type; private int[] states; + private int[] visibilityStates; public LinkButtonBuilder(UiObject obj, MethodHandle widgetConstructor) { this.obj = obj; @@ -153,6 +154,11 @@ public class LinkButtonBuilder extends AbstractWidgetBuilder { return this; } + public LinkButtonBuilder visibilityStates(int... states) { + this.visibilityStates = states; + return this; + } + public MemorySegment createArgs(Arena arena) throws Throwable { ArgFuncs ui = ArgFuncs.getInstance(); @@ -247,6 +253,11 @@ public class LinkButtonBuilder extends AbstractWidgetBuilder { MemorySegment.copy(states, 0, st, ValueLayout.JAVA_INT, 0, states.length); ui.linkbutton_args_set_states.invoke(args, st, states.length); } + if(visibilityStates != null) { + MemorySegment st = arena.allocate(ValueLayout.JAVA_INT, visibilityStates.length); + MemorySegment.copy(visibilityStates, 0, st, ValueLayout.JAVA_INT, 0, visibilityStates.length); + ui.linkbutton_args_set_visibility_states.invoke(args, st, visibilityStates.length); + } return args; } diff --git a/ui-java/src/main/java/de/unixwork/ui/ToggleBuilder.java b/ui-java/src/main/java/de/unixwork/ui/ToggleBuilder.java index 84c5bf7..1ecae0f 100644 --- a/ui-java/src/main/java/de/unixwork/ui/ToggleBuilder.java +++ b/ui-java/src/main/java/de/unixwork/ui/ToggleBuilder.java @@ -30,6 +30,7 @@ public class ToggleBuilder extends AbstractWidgetBuilder { private int enableState; private EventHandler onChange; private int[] states; + private int[] visibilityStates; public ToggleBuilder(UiObject obj, MethodHandle widgetConstructor) { this.obj = obj; @@ -157,6 +158,11 @@ public class ToggleBuilder extends AbstractWidgetBuilder { return this; } + public ToggleBuilder visibilityStates(int... states) { + this.visibilityStates = states; + return this; + } + public MemorySegment createArgs(Arena arena) throws Throwable { ArgFuncs ui = ArgFuncs.getInstance(); @@ -237,6 +243,11 @@ public class ToggleBuilder extends AbstractWidgetBuilder { MemorySegment.copy(states, 0, st, ValueLayout.JAVA_INT, 0, states.length); ui.toggle_args_set_states.invoke(args, st, states.length); } + if(visibilityStates != null) { + MemorySegment st = arena.allocate(ValueLayout.JAVA_INT, visibilityStates.length); + MemorySegment.copy(visibilityStates, 0, st, ValueLayout.JAVA_INT, 0, visibilityStates.length); + ui.toggle_args_set_visibility_states.invoke(args, st, visibilityStates.length); + } if(onChange != null) { EventWrapper event = new EventWrapper(obj, onChange); diff --git a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Ui.kt b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Ui.kt index f06f7b3..a82e52c 100644 --- a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Ui.kt +++ b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Ui.kt @@ -902,6 +902,7 @@ fun UiObject.button( name: String? = null, styleClass: String? = null, states: IntArray? = null, + visibilityStates: IntArray? = null, onClick: EventHandler? = null ): UiWidget { val button = Button.button(this) @@ -962,6 +963,9 @@ fun UiObject.button( states?.let { button.states(*it) } + visibilityStates?.let { + button.visibilityStates(*it) + } onClick?.let { button.onClick(onClick) } @@ -992,6 +996,7 @@ private fun UiObject.createToggleButton( name: String? = null, styleClass: String? = null, states: IntArray? = null, + visibilityStates: IntArray? = null, onChange: EventHandler? = null ): UiWidget { label?.let { @@ -1057,6 +1062,9 @@ private fun UiObject.createToggleButton( states?.let { button.states(*it) } + visibilityStates?.let { + button.visibilityStates(*it) + } onChange?.let { button.onChange(onChange) } @@ -1086,6 +1094,7 @@ fun UiObject.togglebutton( name: String? = null, styleClass: String? = null, states: IntArray? = null, + visibilityStates: IntArray? = null, onChange: EventHandler? = null ): UiWidget { return createToggleButton( @@ -1112,6 +1121,7 @@ fun UiObject.togglebutton( name = name, styleClass = styleClass, states = states, + visibilityStates = visibilityStates, onChange = onChange ) } @@ -1139,6 +1149,7 @@ fun UiObject.checkbox( name: String? = null, styleClass: String? = null, states: IntArray? = null, + visibilityStates: IntArray? = null, onChange: EventHandler? = null ): UiWidget { return createToggleButton( @@ -1165,6 +1176,7 @@ fun UiObject.checkbox( name = name, styleClass = styleClass, states = states, + visibilityStates = visibilityStates, onChange = onChange ) } @@ -1192,6 +1204,7 @@ fun UiObject.switch( name: String? = null, styleClass: String? = null, states: IntArray? = null, + visibilityStates: IntArray? = null, onChange: EventHandler? = null ): UiWidget { return createToggleButton( @@ -1218,6 +1231,7 @@ fun UiObject.switch( name = name, styleClass = styleClass, states = states, + visibilityStates = visibilityStates, onChange = onChange ) } @@ -1244,6 +1258,7 @@ fun UiObject.radiobutton( name: String? = null, styleClass: String? = null, states: IntArray? = null, + visibilityStates: IntArray? = null, onChange: EventHandler? = null ): UiWidget { return createToggleButton( @@ -1269,6 +1284,7 @@ fun UiObject.radiobutton( name = name, styleClass = styleClass, states = states, + visibilityStates = visibilityStates, onChange = onChange ) } @@ -1296,6 +1312,7 @@ fun UiObject.linkbutton( name: String? = null, styleClass: String? = null, states: IntArray? = null, + visibilityStates: IntArray? = null, onClick: EventHandler? = null ): UiWidget { val button = Button.linkButton(this) @@ -1368,6 +1385,9 @@ fun UiObject.linkbutton( states?.let { button.states(*it) } + visibilityStates?.let { + button.visibilityStates(*it) + } return button.create() }