]> uap-core.de Git - rssreader.git/commitdiff
add visibilityStates parameter to button functions
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 22 Feb 2026 19:45:04 +0000 (20:45 +0100)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 22 Feb 2026 19:45:04 +0000 (20:45 +0100)
ui-java/src/main/java/de/unixwork/ui/ButtonBuilder.java
ui-java/src/main/java/de/unixwork/ui/LinkButtonBuilder.java
ui-java/src/main/java/de/unixwork/ui/ToggleBuilder.java
ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Ui.kt

index 8ecd5f67d0801b9fba66ba884cdc528e53f6e417..5195581688183a3e1edcf18a3e2c1cbe61f450dc 100644 (file)
@@ -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) {
index 0df6500e171aa253cf733d6646b6a163596f4cc3..9abfdd89b44dade325b557ec7125d647edf8685e 100644 (file)
@@ -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;
     }
index 84c5bf75c4df16e186d40508256c094b4406908e..1ecae0ff9efae6d81d023a4a333e3d83f063ea5d 100644 (file)
@@ -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);
index f06f7b36cbb6ac798b47ca674f49b8caa16e7879..a82e52c47f62bdeb7f41fd1a68ca26a871a7d781 100644 (file)
@@ -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()
 }