From: Olaf Wintermann Date: Fri, 6 Mar 2026 19:43:28 +0000 (+0100) Subject: implement visibilityStates parameter for labels and spinbox X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=e513e81877bf9dbc3d3702d0ca19cef8f99ecd94;p=rssreader.git implement visibilityStates parameter for labels and spinbox --- diff --git a/ui-java/src/main/java/de/unixwork/ui/LabelBuilder.java b/ui-java/src/main/java/de/unixwork/ui/LabelBuilder.java index 590f562..3780dd8 100644 --- a/ui-java/src/main/java/de/unixwork/ui/LabelBuilder.java +++ b/ui-java/src/main/java/de/unixwork/ui/LabelBuilder.java @@ -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); diff --git a/ui-java/src/main/java/de/unixwork/ui/SpinBoxBuilder.java b/ui-java/src/main/java/de/unixwork/ui/SpinBoxBuilder.java index f7e801b..f1a0740 100644 --- a/ui-java/src/main/java/de/unixwork/ui/SpinBoxBuilder.java +++ b/ui-java/src/main/java/de/unixwork/ui/SpinBoxBuilder.java @@ -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; } 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 f23cbf3..d05bfc3 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 @@ -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 ) }