MethodHandle toggle_args_set_groups;
MethodHandle toggle_args_free;
+ MethodHandle linkbutton_args_new;
+ MethodHandle linkbutton_args_set_fill;
+ MethodHandle linkbutton_args_set_hexpand;
+ MethodHandle linkbutton_args_set_vexpand;
+ MethodHandle linkbutton_args_set_hfill;
+ MethodHandle linkbutton_args_set_vfill;
+ MethodHandle linkbutton_args_set_override_defaults;
+ MethodHandle linkbutton_args_set_colspan;
+ MethodHandle linkbutton_args_set_rowspan;
+ MethodHandle linkbutton_args_set_name;
+ MethodHandle linkbutton_args_set_style_class;
+ MethodHandle linkbutton_args_set_varname;
+ MethodHandle linkbutton_args_set_value;
+ MethodHandle linkbutton_args_set_label;
+ MethodHandle linkbutton_args_set_uri;
+ MethodHandle linkbutton_args_set_onclick;
+ MethodHandle linkbutton_args_set_onclickdata;
+ MethodHandle linkbutton_args_set_nofollow;
+ MethodHandle linkbutton_args_set_type;
+ MethodHandle linkbutton_args_set_groups;
+ MethodHandle linkbutton_args_free;
+
MethodHandle list_args_new;
MethodHandle list_args_set_fill;
MethodHandle list_args_set_hexpand;
MemorySegment ui_toggle_args_set_groups_addr = lib.find("ui_toggle_args_set_groups").orElseThrow();
MemorySegment ui_toggle_args_free_addr = lib.find("ui_toggle_args_free").orElseThrow();
+ MemorySegment ui_linkbutton_args_new_addr = lib.find("ui_linkbutton_args_new").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_fill_addr = lib.find("ui_linkbutton_args_set_fill").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_hexpand_addr = lib.find("ui_linkbutton_args_set_hexpand").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_vexpand_addr = lib.find("ui_linkbutton_args_set_vexpand").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_hfill_addr = lib.find("ui_linkbutton_args_set_hfill").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_vfill_addr = lib.find("ui_linkbutton_args_set_vfill").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_override_defaults_addr = lib.find("ui_linkbutton_args_set_override_defaults").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_colspan_addr = lib.find("ui_linkbutton_args_set_colspan").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_rowspan_addr = lib.find("ui_linkbutton_args_set_rowspan").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_name_addr = lib.find("ui_linkbutton_args_set_name").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_style_class_addr = lib.find("ui_linkbutton_args_set_style_class").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_varname_addr = lib.find("ui_linkbutton_args_set_varname").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_value_addr = lib.find("ui_linkbutton_args_set_value").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_label_addr = lib.find("ui_linkbutton_args_set_label").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_uri_addr = lib.find("ui_linkbutton_args_set_uri").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_onclick_addr = lib.find("ui_linkbutton_args_set_onclick").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_onclickdata_addr = lib.find("ui_linkbutton_args_set_onclickdata").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_nofollow_addr = lib.find("ui_linkbutton_args_set_nofollow").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_type_addr = lib.find("ui_linkbutton_args_set_type").orElseThrow();
+ MemorySegment ui_linkbutton_args_set_groups_addr = lib.find("ui_linkbutton_args_set_groups").orElseThrow();
+ MemorySegment ui_linkbutton_args_free_addr = lib.find("ui_linkbutton_args_free").orElseThrow();
+
MemorySegment ui_list_args_new_addr = lib.find("ui_list_args_new").orElseThrow();
MemorySegment ui_list_args_set_fill_addr = lib.find("ui_list_args_set_fill").orElseThrow();
MemorySegment ui_list_args_set_hexpand_addr = lib.find("ui_list_args_set_hexpand").orElseThrow();
toggle_args_set_groups = linker.downcallHandle(ui_toggle_args_set_groups_addr, sigv_mm);
toggle_args_free = linker.downcallHandle(ui_toggle_args_free_addr, sigv_m);
+ linkbutton_args_new = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigm);
+ linkbutton_args_set_fill = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mb);
+ linkbutton_args_set_hexpand = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mb);
+ linkbutton_args_set_vexpand = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mb);
+ linkbutton_args_set_hfill = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mb);
+ linkbutton_args_set_vfill = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mb);
+ linkbutton_args_set_override_defaults = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mb);
+ linkbutton_args_set_colspan = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mi);
+ linkbutton_args_set_rowspan = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mi);
+ linkbutton_args_set_name = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mm);
+ linkbutton_args_set_style_class = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mm);
+ linkbutton_args_set_varname = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mm);
+ linkbutton_args_set_value = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mm);
+ linkbutton_args_set_label = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mm);
+ linkbutton_args_set_uri = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mm);
+ linkbutton_args_set_onclick = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mm);
+ linkbutton_args_set_onclickdata = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mm);
+ linkbutton_args_set_nofollow = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mb);
+ linkbutton_args_set_type = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mi);
+ linkbutton_args_set_groups = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mm);
+ linkbutton_args_free = linker.downcallHandle(ui_menuitemlist_args_set_varname_addr, sigv_mm);
+
list_args_new = linker.downcallHandle(ui_list_args_new_addr, sigm);
list_args_set_fill = linker.downcallHandle(ui_list_args_set_fill_addr, sigv_mb);
list_args_set_hexpand = linker.downcallHandle(ui_list_args_set_hexpand_addr, sigv_mb);
--- /dev/null
+package de.unixwork.ui;
+
+import java.lang.foreign.Arena;
+import java.lang.foreign.FunctionDescriptor;
+import java.lang.foreign.MemorySegment;
+import java.lang.foreign.ValueLayout;
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodType;
+
+public class LinkButtonBuilder extends AbstractWidgetBuilder {
+ private boolean fill;
+ private boolean hexpand;
+ private boolean vexpand;
+ private boolean hfill;
+ private boolean vfill;
+ private boolean overrideDefaults;
+ private int colspan;
+ private int rowspan;
+ private String name;
+ private String styleClass;
+ private String label;
+ private String uri;
+ private EventHandler onClick;
+ private String varname;
+ private UiString value;
+ private boolean nofollow;
+ private LinkButtonType type;
+ private int[] states;
+
+ public LinkButtonBuilder(UiObject obj, MethodHandle widgetConstructor) {
+ this.obj = obj;
+ this.widgetConstructor = widgetConstructor;
+ this.argsFree = ArgFuncs.getInstance().linkbutton_args_free;
+ }
+
+ public LinkButtonBuilder fill(boolean fill) {
+ this.fill = fill;
+ return this;
+ }
+
+ public LinkButtonBuilder hexpand(boolean hexpand) {
+ this.hexpand = hexpand;
+ return this;
+ }
+
+ public LinkButtonBuilder vexpand(boolean vexpand) {
+ this.vexpand = vexpand;
+ return this;
+ }
+
+ public LinkButtonBuilder hfill(boolean hfill) {
+ this.hfill = hfill;
+ return this;
+ }
+
+ public LinkButtonBuilder vfill(boolean vfill) {
+ this.vfill = vfill;
+ return this;
+ }
+
+ public LinkButtonBuilder overrideDefaults(boolean overrideDefaults) {
+ this.overrideDefaults = overrideDefaults;
+ return this;
+ }
+
+ public LinkButtonBuilder colspan(int colspan) {
+ this.colspan = colspan;
+ return this;
+ }
+
+ public LinkButtonBuilder rowspan(int rowspan) {
+ this.rowspan = rowspan;
+ return this;
+ }
+
+ public LinkButtonBuilder name(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public LinkButtonBuilder styleClass(String styleClass) {
+ this.styleClass = styleClass;
+ return this;
+ }
+
+ public LinkButtonBuilder label(String label) {
+ this.label = label;
+ return this;
+ }
+
+ public LinkButtonBuilder uri(String uri) {
+ this.uri = uri;
+ return this;
+ }
+
+ public LinkButtonBuilder varname(String varname) {
+ this.varname = varname;
+ return this;
+ }
+
+ public LinkButtonBuilder value(UiString value) {
+ this.value = value;
+ return this;
+ }
+
+ public LinkButtonBuilder nofollow(boolean nofollow) {
+ this.nofollow = nofollow;
+ return this;
+ }
+
+ public LinkButtonBuilder type(LinkButtonType type) {
+ this.type = type;
+ return this;
+ }
+
+ public LinkButtonBuilder onClick(EventHandler onClick) {
+ this.onClick = onClick;
+ return this;
+ }
+
+ public LinkButtonBuilder states(int... states) {
+ this.states = states;
+ return this;
+ }
+
+ public MemorySegment createArgs(Arena arena) throws Throwable {
+ ArgFuncs ui = ArgFuncs.getInstance();
+
+ args = (MemorySegment)ui.linkbutton_args_new.invoke();
+ if(fill) {
+ ui.linkbutton_args_set_fill.invoke(args, fill);
+ }
+ if(hexpand) {
+ ui.linkbutton_args_set_hexpand.invoke(args, hexpand);
+ }
+ if(vexpand) {
+ ui.linkbutton_args_set_vexpand.invoke(args, vexpand);
+ }
+ if(hfill) {
+ ui.linkbutton_args_set_hfill.invoke(args, hfill);
+ }
+ if(vfill) {
+ ui.linkbutton_args_set_vfill.invoke(args, vfill);
+ }
+ if(overrideDefaults) {
+ ui.linkbutton_args_set_override_defaults.invoke(args, overrideDefaults);
+ }
+ if(colspan > 0) {
+ ui.linkbutton_args_set_colspan.invoke(args, colspan);
+ }
+ if(rowspan > 0) {
+ ui.linkbutton_args_set_rowspan.invoke(args, rowspan);
+ }
+ if(name != null) {
+ MemorySegment cstr = arena.allocateFrom(name);
+ ui.linkbutton_args_set_name.invoke(args, cstr);
+ }
+ if(styleClass != null) {
+ MemorySegment cstr = arena.allocateFrom(styleClass);
+ ui.linkbutton_args_set_style_class.invoke(args, cstr);
+ }
+ if(label != null) {
+ MemorySegment cstr = arena.allocateFrom(label);
+ ui.linkbutton_args_set_label.invoke(args, cstr);
+ }
+ if(uri != null) {
+ MemorySegment cstr = arena.allocateFrom(uri);
+ ui.linkbutton_args_set_uri.invoke(args, cstr);
+ }
+ if(varname != null) {
+ MemorySegment cstr = arena.allocateFrom(varname);
+ ui.linkbutton_args_set_varname.invoke(args, cstr);
+ }
+ if(value != null) {
+ ui.linkbutton_args_set_value.invoke(args, value.valuePtr);
+ }
+ if(nofollow) {
+ ui.linkbutton_args_set_nofollow.invoke(args, nofollow);
+ }
+ if(type != null) {
+ switch(type) {
+ case LINK: {
+ ui.linkbutton_args_set_type.invoke(args, 0);
+ break;
+ }
+ case BUTTON: {
+ ui.linkbutton_args_set_type.invoke(args, 1);
+ }
+ }
+ }
+
+ if(onClick != null) {
+ EventWrapper event = new EventWrapper(obj, onClick);
+
+ // set toolkit args
+ ui.linkbutton_args_set_onclick.invoke(args, event.getCallback());
+ ui.linkbutton_args_set_onclickdata.invoke(args, event.getUserData());
+ }
+
+ return args;
+ }
+}