]> uap-core.de Git - rssreader.git/commitdiff
implement visibilityStates parameter for labels and spinbox
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 6 Mar 2026 19:43:28 +0000 (20:43 +0100)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Fri, 6 Mar 2026 19:43:28 +0000 (20:43 +0100)
ui-java/src/main/java/de/unixwork/ui/LabelBuilder.java
ui-java/src/main/java/de/unixwork/ui/SpinBoxBuilder.java
ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Ui.kt

index 590f56297970befff3d3fec0f1a7c1f9d2856c9b..3780dd8068b76140fdebe46307ed63b5230a5000 100644 (file)
@@ -2,6 +2,7 @@ package de.unixwork.ui;
 
 import java.lang.foreign.Arena;
 import java.lang.foreign.MemorySegment;
+import java.lang.foreign.ValueLayout;
 import java.lang.invoke.MethodHandle;
 
 public class LabelBuilder extends AbstractWidgetBuilder {
@@ -25,6 +26,7 @@ public class LabelBuilder extends AbstractWidgetBuilder {
     private LabelStyle style;
     private UiString value;
     private String varname;
+    private int[] visibilityStates;
 
     public LabelBuilder(UiObject obj, MethodHandle widgetConstructor) {
         this.obj = obj;
@@ -131,6 +133,11 @@ public class LabelBuilder extends AbstractWidgetBuilder {
         return this;
     }
 
+    public LabelBuilder visibilityStates(int[] states) {
+        this.visibilityStates = states;
+        return this;
+    }
+
     public MemorySegment createArgs(Arena arena) throws Throwable {
         ArgFuncs ui = ArgFuncs.getInstance();
 
@@ -206,6 +213,11 @@ public class LabelBuilder extends AbstractWidgetBuilder {
             }
             ui.label_args_set_style.invoke(args, styleNum);
         }
+        if(visibilityStates != null) {
+            MemorySegment st = arena.allocate(ValueLayout.JAVA_INT, visibilityStates.length);
+            MemorySegment.copy(visibilityStates, 0, st, ValueLayout.JAVA_INT, 0, visibilityStates.length);
+            ui.label_args_set_visibility_states.invoke(args, st, visibilityStates.length);
+        }
 
         if(varname != null) {
             MemorySegment cstr = arena.allocateFrom(varname);
index f7e801bb6005e37232590778c6c12d74610acbb5..f1a074063d11c8192c899ec8b4661dad426b8fa3 100644 (file)
@@ -32,6 +32,7 @@ public class SpinBoxBuilder extends AbstractWidgetBuilder{
     private EventHandler onChange;
     private EventHandler onActivate;
     private int[] states;
+    private int[] visibilityStates;
 
     public SpinBoxBuilder(UiObject obj, MethodHandle widgetConstructor) {
         this.obj = obj;
@@ -163,6 +164,11 @@ public class SpinBoxBuilder extends AbstractWidgetBuilder{
         return this;
     }
 
+    public SpinBoxBuilder visibilityStates(int... visibilityStates) {
+        this.visibilityStates = visibilityStates;
+        return this;
+    }
+
     public MemorySegment createArgs(Arena arena) throws Throwable {
         ArgFuncs ui = ArgFuncs.getInstance();
 
@@ -251,6 +257,11 @@ public class SpinBoxBuilder extends AbstractWidgetBuilder{
             MemorySegment.copy(states, 0, st, ValueLayout.JAVA_INT, 0, states.length);
             ui.spinbox_args_set_states.invoke(args, st, states.length);
         }
+        if(visibilityStates != null) {
+            MemorySegment st = arena.allocate(ValueLayout.JAVA_INT, states.length);
+            MemorySegment.copy(states, 0, st, ValueLayout.JAVA_INT, 0, states.length);
+            ui.spinbox_args_set_visibility_states.invoke(args, st, states.length);
+        }
 
         return args;
     }
index f23cbf392a70202e2cefbca88da0cdaa7729c217..d05bfc315f441737579e77980400ee034044546c 100644 (file)
@@ -2175,6 +2175,7 @@ fun UiObject.spinbox(
     name: String? = null,
     styleClass: String? = null,
     states: IntArray? = null,
+    visibilityStates: IntArray? = null,
     onChange: EventHandler? = null
 ): UiWidget {
     val spinbox = Entry.spinbox(this)
@@ -2250,6 +2251,9 @@ fun UiObject.spinbox(
     states?.let {
         spinbox.states(*it)
     }
+    visibilityStates?.let {
+        spinbox.visibilityStates(*it)
+    }
     onChange?.let {
         spinbox.onChange(onChange)
     }
@@ -2348,6 +2352,7 @@ private fun UiObject.createLabel(
     rowspan: Int = -1,
     name: String? = null,
     styleClass: String? = null,
+    visibilityStates: IntArray? = null
 ): UiWidget {
     labelStr?.let {
         label.label(it)
@@ -2394,6 +2399,9 @@ private fun UiObject.createLabel(
     styleClass?.let {
         label.styleClass(it)
     }
+    visibilityStates?.let {
+        label.visibilityStates(it)
+    }
 
     return label.create()
 }
@@ -2413,7 +2421,8 @@ fun UiObject.label(
     colspan: Int = -1,
     rowspan: Int = -1,
     name: String? = null,
-    styleClass: String? = null
+    styleClass: String? = null,
+    visibilityStates: IntArray? = null
 ): UiWidget {
     val labelBuilder = Label.label(this)
     return createLabel(
@@ -2432,7 +2441,8 @@ fun UiObject.label(
         colspan = colspan,
         rowspan = rowspan,
         name = name,
-        styleClass = styleClass
+        styleClass = styleClass,
+        visibilityStates = visibilityStates
     )
 }
 
@@ -2450,7 +2460,8 @@ fun UiObject.llabel(
     colspan: Int = -1,
     rowspan: Int = -1,
     name: String? = null,
-    styleClass: String? = null
+    styleClass: String? = null,
+    visibilityStates: IntArray? = null
 ): UiWidget {
     val labelBuilder = Label.llabel(this)
     return createLabel(
@@ -2468,7 +2479,8 @@ fun UiObject.llabel(
         colspan = colspan,
         rowspan = rowspan,
         name = name,
-        styleClass = styleClass
+        styleClass = styleClass,
+        visibilityStates = visibilityStates
     )
 }
 
@@ -2486,7 +2498,8 @@ fun UiObject.rlabel(
     colspan: Int = -1,
     rowspan: Int = -1,
     name: String? = null,
-    styleClass: String? = null
+    styleClass: String? = null,
+    visibilityStates: IntArray? = null
 ): UiWidget {
     val labelBuilder = Label.rlabel(this)
     return createLabel(
@@ -2504,6 +2517,7 @@ fun UiObject.rlabel(
         colspan = colspan,
         rowspan = rowspan,
         name = name,
-        styleClass = styleClass
+        styleClass = styleClass,
+        visibilityStates = visibilityStates
     )
 }