MethodHandle splitpane_args_set_max_panes;
MethodHandle splitpane_args_free;
+ MethodHandle tabview_args_new;
+ MethodHandle tabview_args_set_fill;
+ MethodHandle tabview_args_set_hexpand;
+ MethodHandle tabview_args_set_vexpand;
+ MethodHandle tabview_args_set_hfill;
+ MethodHandle tabview_args_set_vfill;
+ MethodHandle tabview_args_set_override_defaults;
+ MethodHandle tabview_args_set_colspan;
+ MethodHandle tabview_args_set_rowspan;
+ MethodHandle tabview_args_set_name;
+ MethodHandle tabview_args_set_style_class;
+ MethodHandle tabview_args_set_margin;
+ MethodHandle tabview_args_set_spacing;
+ MethodHandle tabview_args_set_columnspacing;
+ MethodHandle tabview_args_set_rowspacing;
+ MethodHandle tabview_args_set_type;
+ MethodHandle tabview_args_set_onchange;
+ MethodHandle tabview_args_set_onchangedata;
+ MethodHandle tabview_args_set_varname;
+ MethodHandle tabview_args_set_value;
+ MethodHandle tabview_args_set_subcontainer;
+ MethodHandle tabview_args_free;
+
MethodHandle sidebar_args_new;
MethodHandle sidebar_args_set_name;
MethodHandle sidebar_args_set_style_class;
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_tabview_args_new_addr = lib.find("ui_tabview_args_new").orElseThrow();
+ MemorySegment ui_tabview_args_set_fill_addr = lib.find("ui_tabview_args_set_fill").orElseThrow();
+ MemorySegment ui_tabview_args_set_hexpand_addr = lib.find("ui_tabview_args_set_hexpand").orElseThrow();
+ MemorySegment ui_tabview_args_set_vexpand_addr = lib.find("ui_tabview_args_set_vexpand").orElseThrow();
+ MemorySegment ui_tabview_args_set_hfill_addr = lib.find("ui_tabview_args_set_hfill").orElseThrow();
+ MemorySegment ui_tabview_args_set_vfill_addr = lib.find("ui_tabview_args_set_vfill").orElseThrow();
+ MemorySegment ui_tabview_args_set_override_defaults_addr = lib.find("ui_tabview_args_set_override_defaults").orElseThrow();
+ MemorySegment ui_tabview_args_set_colspan_addr = lib.find("ui_tabview_args_set_colspan").orElseThrow();
+ MemorySegment ui_tabview_args_set_rowspan_addr = lib.find("ui_tabview_args_set_rowspan").orElseThrow();
+ MemorySegment ui_tabview_args_set_name_addr = lib.find("ui_tabview_args_set_name").orElseThrow();
+ MemorySegment ui_tabview_args_set_style_class_addr = lib.find("ui_tabview_args_set_style_class").orElseThrow();
+ MemorySegment ui_tabview_args_set_margin_addr = lib.find("ui_tabview_args_set_margin").orElseThrow();
+ MemorySegment ui_tabview_args_set_spacing_addr = lib.find("ui_tabview_args_set_spacing").orElseThrow();
+ MemorySegment ui_tabview_args_set_columnspacing_addr = lib.find("ui_tabview_args_set_columnspacing").orElseThrow();
+ MemorySegment ui_tabview_args_set_rowspacing_addr = lib.find("ui_tabview_args_set_rowspacing").orElseThrow();
+ MemorySegment ui_tabview_args_set_type_addr = lib.find("ui_tabview_args_set_type").orElseThrow();
+ MemorySegment ui_tabview_args_set_onchange_addr = lib.find("ui_tabview_args_set_onchange").orElseThrow();
+ MemorySegment ui_tabview_args_set_onchangedata_addr = lib.find("ui_tabview_args_set_onchangedata").orElseThrow();
+ MemorySegment ui_tabview_args_set_varname_addr = lib.find("ui_tabview_args_set_varname").orElseThrow();
+ MemorySegment ui_tabview_args_set_value_addr = lib.find("ui_tabview_args_set_value").orElseThrow();
+ MemorySegment ui_tabview_args_set_subcontainer_addr = lib.find("ui_tabview_args_set_subcontainer").orElseThrow();
+ MemorySegment ui_tabview_args_free_addr = lib.find("ui_tabview_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();
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);
+ tabview_args_new = linker.downcallHandle(ui_tabview_args_new_addr, sigm);
+ tabview_args_set_fill = linker.downcallHandle(ui_tabview_args_set_fill_addr, sigv_mb);
+ tabview_args_set_hexpand = linker.downcallHandle(ui_tabview_args_set_hexpand_addr, sigv_mb);
+ tabview_args_set_vexpand = linker.downcallHandle(ui_tabview_args_set_vexpand_addr, sigv_mb);
+ tabview_args_set_hfill = linker.downcallHandle(ui_tabview_args_set_hfill_addr, sigv_mb);
+ tabview_args_set_vfill = linker.downcallHandle(ui_tabview_args_set_vfill_addr, sigv_mb);
+ tabview_args_set_override_defaults = linker.downcallHandle(ui_tabview_args_set_override_defaults_addr, sigv_mb);
+ tabview_args_set_colspan = linker.downcallHandle(ui_tabview_args_set_colspan_addr, sigv_mi);
+ tabview_args_set_rowspan = linker.downcallHandle(ui_tabview_args_set_rowspan_addr, sigv_mi);
+ tabview_args_set_name = linker.downcallHandle(ui_tabview_args_set_name_addr, sigv_mm);
+ tabview_args_set_style_class = linker.downcallHandle(ui_tabview_args_set_style_class_addr, sigv_mm);
+ tabview_args_set_margin = linker.downcallHandle(ui_tabview_args_set_margin_addr, sigv_mi);
+ tabview_args_set_spacing = linker.downcallHandle(ui_tabview_args_set_spacing_addr, sigv_mi);
+ tabview_args_set_columnspacing = linker.downcallHandle(ui_tabview_args_set_columnspacing_addr, sigv_mi);
+ tabview_args_set_rowspacing = linker.downcallHandle(ui_tabview_args_set_rowspacing_addr, sigv_mi);
+ tabview_args_set_type = linker.downcallHandle(ui_tabview_args_set_type_addr, sigv_mi);
+ tabview_args_set_onchange = linker.downcallHandle(ui_tabview_args_set_onchange_addr, sigv_mm);
+ tabview_args_set_onchangedata = linker.downcallHandle(ui_tabview_args_set_onchangedata_addr, sigv_mm);
+ tabview_args_set_varname = linker.downcallHandle(ui_tabview_args_set_varname_addr, sigv_mm);
+ tabview_args_set_value = linker.downcallHandle(ui_tabview_args_set_value_addr, sigv_mm);
+ tabview_args_set_subcontainer = linker.downcallHandle(ui_tabview_args_set_subcontainer_addr, sigv_mi);
+ tabview_args_free = linker.downcallHandle(ui_tabview_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);
return new ContainerBuilder(obj, ui.grid_create);
}
+ public static TabViewBuilder tabview(UiObject obj) {
+ ContainerFuncs ui = ContainerFuncs.getInstance();
+ return new TabViewBuilder(obj, ui.tabview_create);
+ }
+
public static void newline(UiObject obj) {
ContainerFuncs ui = ContainerFuncs.getInstance();
try {
--- /dev/null
+package de.unixwork.ui;
+
+import java.lang.foreign.Arena;
+import java.lang.foreign.MemorySegment;
+import java.lang.invoke.MethodHandle;
+
+public class TabViewBuilder 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 int margin;
+ private int spacing;
+ private int columnspacing;
+ private int rowspacing;
+ private TabViewType type = TabViewType.DEFAULT;
+ private EventHandler onChange;
+ private String varname;
+ private UiInteger value;
+ // TODO: subcontainer type
+
+ public TabViewBuilder(UiObject obj, MethodHandle widgetConstructor) {
+ this.obj = obj;
+ this.widgetConstructor = widgetConstructor;
+ }
+
+ public TabViewBuilder fill(boolean fill) {
+ this.fill = fill;
+ return this;
+ }
+
+ public TabViewBuilder hexpand(boolean hexpand) {
+ this.hexpand = hexpand;
+ return this;
+ }
+
+ public TabViewBuilder vexpand(boolean vexpand) {
+ this.vexpand = vexpand;
+ return this;
+ }
+
+ public TabViewBuilder hfill(boolean hfill) {
+ this.hfill = hfill;
+ return this;
+ }
+
+ public TabViewBuilder vfill(boolean vfill) {
+ this.vfill = vfill;
+ return this;
+ }
+
+ public TabViewBuilder overrideDefaults(boolean overrideDefaults) {
+ this.overrideDefaults = overrideDefaults;
+ return this;
+ }
+
+ public TabViewBuilder colspan(int colspan) {
+ this.colspan = colspan;
+ return this;
+ }
+
+ public TabViewBuilder rowspan(int rowspan) {
+ this.rowspan = rowspan;
+ return this;
+ }
+
+ public TabViewBuilder name(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public TabViewBuilder styleClass(String styleClass) {
+ this.styleClass = styleClass;
+ return this;
+ }
+
+ public TabViewBuilder margin(int margin) {
+ this.margin = margin;
+ return this;
+ }
+
+ public TabViewBuilder spacing(int sacing) {
+ this.spacing = sacing;
+ return this;
+ }
+
+ public TabViewBuilder columnspacing(int columnspacing) {
+ this.columnspacing = columnspacing;
+ return this;
+ }
+
+ public TabViewBuilder rowspacing(int rowspacing) {
+ this.rowspacing = rowspacing;
+ return this;
+ }
+
+ public TabViewBuilder type(TabViewType type) {
+ this.type = type;
+ return this;
+ }
+
+ public TabViewBuilder onChange(EventHandler onChange) {
+ this.onChange = onChange;
+ return this;
+ }
+
+ public TabViewBuilder varname(String varname) {
+ this.varname = varname;
+ return this;
+ }
+
+ public TabViewBuilder value(UiInteger value) {
+ this.value = value;
+ return this;
+ }
+
+ @Override
+ public MemorySegment createArgs(Arena arena) throws Throwable {
+ ArgFuncs ui = ArgFuncs.getInstance();
+
+ args = (MemorySegment)ui.tabview_args_new.invoke();
+ if(fill) {
+ ui.tabview_args_set_fill.invoke(args, fill);
+ }
+ if(hexpand) {
+ ui.tabview_args_set_hexpand.invoke(args, hexpand);
+ }
+ if(vexpand) {
+ ui.tabview_args_set_vexpand.invoke(args, vexpand);
+ }
+ if(hfill) {
+ ui.tabview_args_set_hfill.invoke(args, hfill);
+ }
+ if(vfill) {
+ ui.tabview_args_set_vfill.invoke(args, vfill);
+ }
+ if(overrideDefaults) {
+ ui.tabview_args_set_override_defaults.invoke(args, overrideDefaults);
+ }
+ if(colspan > 0) {
+ ui.tabview_args_set_colspan.invoke(args, colspan);
+ }
+ if(rowspan > 0) {
+ ui.tabview_args_set_rowspan.invoke(args, rowspan);
+ }
+ if(name != null) {
+ MemorySegment cstr = arena.allocateFrom(name);
+ ui.tabview_args_set_name.invoke(args, cstr);
+ }
+ if(styleClass != null) {
+ MemorySegment cstr = arena.allocateFrom(styleClass);
+ ui.tabview_args_set_style_class.invoke(args, cstr);
+ }
+ if(margin > 0) {
+ ui.tabview_args_set_margin.invoke(args, margin);
+ }
+ if(spacing > 0) {
+ ui.tabview_args_set_spacing.invoke(args, spacing);
+ }
+ if(columnspacing > 0) {
+ ui.tabview_args_set_columnspacing.invoke(args, columnspacing);
+ }
+ if(rowspacing > 0) {
+ ui.tabview_args_set_rowspacing.invoke(args, rowspacing);
+ }
+ ui.tabview_args_set_type.invoke(args, type.getValue());
+ if(onChange != null) {
+ EventWrapper event = new EventWrapper(obj, onChange);
+
+ // set toolkit args
+ ui.tabview_args_set_onchange.invoke(args, event.getCallback());
+ ui.tabview_args_set_onchangedata.invoke(args, event.getUserData());
+ }
+ if(varname != null) {
+ MemorySegment cstr = arena.allocateFrom(varname);
+ ui.tabview_args_set_varname.invoke(args, cstr);
+ }
+ if(value != null) {
+ ui.tabview_args_set_value.invoke(args, value.valuePtr);
+ }
+ // TODO: subcontainer type
+
+ 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();
+ }
+}
--- /dev/null
+package de.unixwork.ui;
+
+public enum TabViewType {
+ DEFAULT(0),
+ DOC(1),
+ NAVIGATION_SIDE(2),
+ NAVIGATION_TOP(3),
+ NAVIGATION_TOP2(4),
+ INVISIBLE(5);
+
+ TabViewType(int value) {
+ this.value = value;
+ }
+
+ private final int value;
+
+ public int getValue() {
+ return value;
+ }
+}
import de.unixwork.ui.Label
import de.unixwork.ui.LinkButtonType
import de.unixwork.ui.ListViewBuilder
+import de.unixwork.ui.TabViewType
import de.unixwork.ui.TableModel
import de.unixwork.ui.TableViewBuilder
import de.unixwork.ui.UiText
)
}
+ fun tabview(
+ 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,
+ columnspacing: Int = -1,
+ rowspacing: Int = -1,
+ type: TabViewType = TabViewType.DEFAULT,
+ varname: String? = null,
+ value: UiInteger? = null,
+ onChange: EventHandler? = null,
+ ui: ContainerUI? = null
+ ): UiWidget {
+ val container = Container.tabview(this@Toplevel.ui)
+ if(fill) {
+ container.fill(true)
+ }
+ 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(name != null) {
+ container.name(name)
+ }
+ if(styleClass != null) {
+ container.styleClass(styleClass)
+ }
+ 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)
+ }
+ container.type(type)
+ if(varname != null) {
+ container.varname(varname)
+ }
+ if(value != null) {
+ container.value(value)
+ }
+ if(onChange != null) {
+ container.onChange(onChange)
+ }
+ return container.create(ui)
+ }
+
private fun createSplitpane(
horizontal: Boolean,
fill: Boolean = false,