MethodHandle splitpane_args_set_max_panes;
MethodHandle splitpane_args_free;
+ MethodHandle sidebar_args_new;
+ MethodHandle sidebar_args_set_name;
+ MethodHandle sidebar_args_set_style_class;
+ MethodHandle sidebar_args_set_margin;
+ MethodHandle sidebar_args_set_spacing;
+ MethodHandle sidebar_args_free;
+
MethodHandle button_args_new;
MethodHandle button_args_set_fill;
MethodHandle button_args_set_hexpand;
MemorySegment ui_splitpane_args_set_max_panes_addr = lib.find("ui_splitpane_args_set_max_panes").orElseThrow();
MemorySegment ui_splitpane_args_free_addr = lib.find("ui_splitpane_args_free").orElseThrow();
+ MemorySegment ui_sidebar_args_new_addr = lib.find("ui_sidebar_args_new").orElseThrow();
+ MemorySegment ui_sidebar_args_set_name_addr = lib.find("ui_sidebar_args_set_name").orElseThrow();
+ MemorySegment ui_sidebar_args_set_style_class_addr = lib.find("ui_sidebar_args_set_style_class").orElseThrow();
+ MemorySegment ui_sidebar_args_set_margin_addr = lib.find("ui_sidebar_args_set_margin").orElseThrow();
+ MemorySegment ui_sidebar_args_set_spacing_addr = lib.find("ui_sidebar_args_set_spacing").orElseThrow();
+ MemorySegment ui_sidebar_args_free_addr = lib.find("ui_sidebar_args_free").orElseThrow();
+
MemorySegment ui_button_args_new_addr = lib.find("ui_button_args_new").orElseThrow();
MemorySegment ui_button_args_set_fill_addr = lib.find("ui_button_args_set_fill").orElseThrow();
MemorySegment ui_button_args_set_hexpand_addr = lib.find("ui_button_args_set_hexpand").orElseThrow();
splitpane_args_set_max_panes = linker.downcallHandle(ui_splitpane_args_set_max_panes_addr, sigv_mi);
splitpane_args_free = linker.downcallHandle(ui_splitpane_args_free_addr, sigv_m);
+ sidebar_args_new = linker.downcallHandle(ui_sidebar_args_new_addr, sigm);
+ sidebar_args_set_name = linker.downcallHandle(ui_sidebar_args_set_name_addr, sigv_mm);
+ sidebar_args_set_style_class = linker.downcallHandle(ui_sidebar_args_set_style_class_addr, sigv_mm);
+ sidebar_args_set_margin = linker.downcallHandle(ui_sidebar_args_set_margin_addr, sigv_mi);
+ sidebar_args_set_spacing = linker.downcallHandle(ui_sidebar_args_set_spacing_addr, sigv_mi);
+ sidebar_args_free = linker.downcallHandle(ui_sidebar_args_free_addr, sigv_m);
+
button_args_new = linker.downcallHandle(ui_button_args_new_addr, sigm);
button_args_set_fill = linker.downcallHandle(ui_button_args_set_fill_addr, sigm);
button_args_set_hexpand = linker.downcallHandle(ui_button_args_set_hexpand_addr, sigv_mb);
--- /dev/null
+package de.unixwork.ui;
+
+import java.lang.foreign.Arena;
+import java.lang.foreign.MemorySegment;
+import java.lang.invoke.MethodHandle;
+
+public class SidebarBuilder extends AbstractWidgetBuilder{
+ private String name;
+ private String styleClass;
+ private int margin;
+ private int spacing;
+
+ public SidebarBuilder(UiObject obj, MethodHandle widgetConstructor) {
+ this.obj = obj;
+ this.widgetConstructor = widgetConstructor;
+ }
+
+ public SidebarBuilder name(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public SidebarBuilder styleClass(String styleClass) {
+ this.styleClass = styleClass;
+ return this;
+ }
+
+ public SidebarBuilder margin(int margin) {
+ this.margin = margin;
+ return this;
+ }
+
+ public SidebarBuilder spacing(int sacing) {
+ this.spacing = sacing;
+ return this;
+ }
+
+ @Override
+ public MemorySegment createArgs(Arena arena) throws Throwable {
+ ArgFuncs ui = ArgFuncs.getInstance();
+
+ args = (MemorySegment)ui.sidebar_args_new.invoke();
+ if(name != null) {
+ MemorySegment cstr = arena.allocateFrom(name);
+ ui.sidebar_args_set_name.invoke(args, cstr);
+ }
+ if(styleClass != null) {
+ MemorySegment cstr = arena.allocateFrom(styleClass);
+ ui.sidebar_args_set_style_class.invoke(args, cstr);
+ }
+ if(margin > 0) {
+ ui.sidebar_args_set_margin.invoke(args, margin);
+ }
+ if(spacing > 0) {
+ ui.sidebar_args_set_spacing.invoke(args, spacing);
+ }
+
+ return args;
+ }
+
+ public Container createContainer() {
+ UiWidget w = create();
+ return new Container(obj, w);
+ }
+
+ public UiWidget create(ContainerUI ui) {
+ Container container = createContainer();
+ ui.callback();
+ container.close();
+ return container.getWidget();
+ }
+}