]> uap-core.de Git - rssreader.git/commitdiff
add kotlin container functions
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 22 Jun 2025 17:08:01 +0000 (19:08 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 22 Jun 2025 17:08:01 +0000 (19:08 +0200)
ui-java/src/main/java/de/unixwork/ui/ContainerBuilder.java
ui-java/src/main/java/de/unixwork/ui/ContainerUI.java
ui-java/src/test/java/de/unixwork/ui/demo/Main.java
ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt
ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Main.kt

index 495020b39d430fd159dd19508b147f7632365f3c..7e763abaff8292d5e82222f9d8acf204ea153dde 100644 (file)
@@ -191,7 +191,7 @@ public class ContainerBuilder extends AbstractWidgetBuilder{
 
     public UiWidget create(ContainerUI ui) {
         Container container = createContainer();
-        ui.callback(obj);
+        ui.callback();
         container.close();
         return container.getWidget();
     }
index 281f0d3b2811507d13c7be6d42e70d6908811bd2..2267e74dd2d5bee5fc2cf22e16e57c13a2b19635 100644 (file)
@@ -2,5 +2,5 @@ package de.unixwork.ui;
 
 @FunctionalInterface
 public interface ContainerUI {
-    public void callback(UiObject obj);
+    public void callback();
 }
index 5caaf766ff0c1d068d0b790b9c4fb78a4b7568bb..cacfb338b4a3bd870af5449d0e7875c3af5829b0 100644 (file)
@@ -18,7 +18,7 @@ public class Main implements Application{
             Button.button(window).label("B1").create();
             Button.button(window).label("B2").create();
             Button.button(window).label("B3").create();
-            Container.vbox(window).create(obj -> {
+            Container.vbox(window).create(() -> {
                 Button.button(window).label("Test").create();
             });
         }
index 3591d70d178b6686b04403562fd6b1a67258a3ed..c412d69b13eaac25a97446342555800fb2b271ed 100644 (file)
@@ -2,6 +2,9 @@ package de.unixwork.ui.kotlin
 
 import de.unixwork.ui.Button
 import de.unixwork.ui.ButtonBuilder
+import de.unixwork.ui.Container
+import de.unixwork.ui.ContainerBuilder
+import de.unixwork.ui.ContainerUI
 import de.unixwork.ui.EventHandler
 import de.unixwork.ui.EventWrapper.eventHandler
 import de.unixwork.ui.ToggleBuilder
@@ -21,6 +24,191 @@ class Toplevel(obj: UiObject) {
         block()
     }
 
+    private fun createContainer(
+        builder: ContainerBuilder,
+        fill: Boolean = false,
+        hexpand: Boolean = false,
+        vexpand: Boolean = false,
+        hfill: Boolean = false,
+        vfill: Boolean = false,
+        overrideDefaults: Boolean = false,
+        defhexpand: Boolean = false,
+        defvexpand: Boolean = false,
+        defhfill: Boolean = false,
+        defvfill: Boolean = false,
+        colspan: Int = -1,
+        rowspan: Int = -1,
+        name: String? = null,
+        styleClass: String? = null,
+        margin: Int = -1,
+        spacing: Int = -1,
+        columnspacing: Int = -1,
+        rowspacing: Int = -1,
+        ui: ContainerUI? = null
+    ): UiWidget {
+        val container = Container.vbox(obj)
+        if(hexpand) {
+            container.hexpand(true)
+        }
+        if(vexpand) {
+            container.vexpand(true)
+        }
+        if(hfill) {
+            container.hfill(true)
+        }
+        if(vfill) {
+            container.vfill(true)
+        }
+        if(overrideDefaults) {
+            container.overrideDefaults(true)
+        }
+        if(defhexpand) {
+            container.defaultHExpand(true)
+        }
+        if(defvexpand) {
+            container.defaultVExpand(true)
+        }
+        if(defhfill) {
+            container.defaultHfill(true)
+        }
+        if(defvfill) {
+            container.defaultVfill(true)
+        }
+        if(colspan > 0) {
+            container.colspan(colspan)
+        }
+        if(rowspan > 0) {
+            container.rowspan(rowspan)
+        }
+        if(margin > 0) {
+            container.margin(margin)
+        }
+        if(spacing > 0) {
+            container.spacing(spacing)
+        }
+        if(columnspacing > 0) {
+            container.columnspacing(columnspacing)
+        }
+        if(rowspacing > 0) {
+            container.rowspacing(rowspacing)
+        }
+
+        return container.create(ui)
+    }
+
+    fun hbox(
+        fill: Boolean = false,
+        hexpand: Boolean = false,
+        vexpand: Boolean = false,
+        hfill: Boolean = false,
+        vfill: Boolean = false,
+        overrideDefaults: Boolean = false,
+        colspan: Int = -1,
+        rowspan: Int = -1,
+        name: String? = null,
+        styleClass: String? = null,
+        margin: Int = -1,
+        spacing: Int = -1,
+        ui: ContainerUI? = null
+    ): UiWidget {
+        return createContainer(
+            builder = Container.hbox(obj),
+            fill = fill,
+            hexpand = hexpand,
+            vexpand = vexpand,
+            hfill = hfill,
+            vfill = vfill,
+            overrideDefaults = overrideDefaults,
+            colspan = colspan,
+            rowspan = rowspan,
+            name = name,
+            styleClass = styleClass,
+            margin = margin,
+            spacing = spacing,
+            ui = ui
+        )
+    }
+
+
+    fun vbox(
+        fill: Boolean = false,
+        hexpand: Boolean = false,
+        vexpand: Boolean = false,
+        hfill: Boolean = false,
+        vfill: Boolean = false,
+        overrideDefaults: Boolean = false,
+        colspan: Int = -1,
+        rowspan: Int = -1,
+        name: String? = null,
+        styleClass: String? = null,
+        margin: Int = -1,
+        spacing: Int = -1,
+        ui: ContainerUI? = null
+    ): UiWidget {
+        return createContainer(
+            builder = Container.vbox(obj),
+            fill = fill,
+            hexpand = hexpand,
+            vexpand = vexpand,
+            hfill = hfill,
+            vfill = vfill,
+            overrideDefaults = overrideDefaults,
+            colspan = colspan,
+            rowspan = rowspan,
+            name = name,
+            styleClass = styleClass,
+            margin = margin,
+            spacing = spacing,
+            ui = ui
+        )
+    }
+
+
+    fun grid(
+        fill: Boolean = false,
+        hexpand: Boolean = false,
+        vexpand: Boolean = false,
+        hfill: Boolean = false,
+        vfill: Boolean = false,
+        overrideDefaults: Boolean = false,
+        defhexpand: Boolean = false,
+        defvexpand: Boolean = false,
+        defhfill: Boolean = false,
+        defvfill: Boolean = false,
+        colspan: Int = -1,
+        rowspan: Int = -1,
+        name: String? = null,
+        styleClass: String? = null,
+        margin: Int = -1,
+        spacing: Int = -1,
+        columnspacing: Int = -1,
+        rowspacing: Int = -1,
+        ui: ContainerUI? = null
+    ): UiWidget {
+        return createContainer(
+            builder = Container.grid(obj),
+            fill = fill,
+            hexpand = hexpand,
+            vexpand = vexpand,
+            hfill = hfill,
+            vfill = vfill,
+            overrideDefaults = overrideDefaults,
+            defhexpand = defhexpand,
+            defhfill = defhfill,
+            defvexpand = defvexpand,
+            defvfill = defhfill,
+            colspan = colspan,
+            rowspan = rowspan,
+            name = name,
+            styleClass = styleClass,
+            margin = margin,
+            spacing = spacing,
+            columnspacing = columnspacing,
+            rowspacing = rowspacing,
+            ui = ui
+        )
+    }
+
     fun button(
         label: String? = null,
         stockId: String? = null,
index f725e3bdba0f163a19c6f46182ed7a2a2e536de1..2e61fc7ac5fac1e93ec4c54b9e4cee2434975b7d 100644 (file)
@@ -10,8 +10,20 @@ import de.unixwork.ui.kotlin.window
 class Main : Application {
     override fun startup() {
         val window = window("Test Window") {
-            button(label = "Hello World") {
-                println("Button Clicked")
+            hbox {
+                vbox {
+                    button(label = "Hello World") {
+                        println("Button Clicked")
+                    }
+                    button(label = "Hello World") {
+                        println("Button Clicked")
+                    }
+                }
+                vbox {
+                    button(label = "Hello World") {
+                        println("Button Clicked")
+                    }
+                }
             }
         }