ContainerFuncs ui = ContainerFuncs.getInstance();
return new SidebarBuilder(obj, ui.sidebar_create);
}
+
+ public static SidebarBuilder leftPanel(UiObject obj) {
+ ContainerFuncs ui = ContainerFuncs.getInstance();
+ return new SidebarBuilder(obj, ui.left_panel_create);
+ }
+
+ public static SidebarBuilder rightPanel(UiObject obj) {
+ ContainerFuncs ui = ContainerFuncs.getInstance();
+ return new SidebarBuilder(obj, ui.right_panel_create);
+ }
}
public MethodHandle tabview_create;
public MethodHandle headerbar_create;
public MethodHandle sidebar_create;
+ public MethodHandle left_panel_create;
+ public MethodHandle right_panel_create;
public MethodHandle itemlist_create;
public MethodHandle hsplitpane_create;
public MethodHandle vsplitpane_create;
MemorySegment ui_tabview_create_addr = lib.find("ui_tabview_create").orElseThrow();
MemorySegment ui_headerbar_create_addr = lib.find("ui_headerbar_create").orElseThrow();
MemorySegment ui_sidebar_create_addr = lib.find("ui_sidebar_create").orElseThrow();
+ MemorySegment ui_left_panel_create_addr = lib.find("ui_left_panel_create").orElseThrow();
+ MemorySegment ui_right_panel_create_addr = lib.find("ui_right_panel_create").orElseThrow();
MemorySegment ui_itemlist_create_addr = lib.find("ui_itemlist_create").orElseThrow();
MemorySegment ui_hsplitpane_create_addr = lib.find("ui_hsplitpane_create").orElseThrow();
MemorySegment ui_vsplitpane_create_addr = lib.find("ui_vsplitpane_create").orElseThrow();
tabview_create = linker.downcallHandle(ui_tabview_create_addr, sigm_mm);
headerbar_create = linker.downcallHandle(ui_headerbar_create_addr, sigm_mm);
sidebar_create = linker.downcallHandle(ui_sidebar_create_addr, sigm_mm);
+ left_panel_create = linker.downcallHandle(ui_left_panel_create_addr, sigm_mm);
+ right_panel_create = linker.downcallHandle(ui_right_panel_create_addr, sigm_mm);
itemlist_create = linker.downcallHandle(ui_itemlist_create_addr, sigm_mm);
hsplitpane_create = linker.downcallHandle(ui_hsplitpane_create_addr, sigm_mm);
vsplitpane_create = linker.downcallHandle(ui_vsplitpane_create_addr, sigm_mm);
return UiObjectFuncs.instance.simpleWindow(title);
}
+ public static UiObject createSplitViewWindow(String title, boolean sidebar) {
+ return UiObjectFuncs.instance.splitviewWindow(title, sidebar);
+ }
+
public static void setDefaultWindowSize(int width, int height) {
try {
UiObjectFuncs.instance.ui_window_default_size.invoke(width, height);
public MethodHandle ui_close;
public MethodHandle ui_window;
public MethodHandle ui_sidebar_window;
+ public MethodHandle ui_splitview_window;
public MethodHandle ui_simple_window;
public MethodHandle ui_dialog_window_create;
public MethodHandle ui_dialog_create;
FunctionDescriptor sigv_mimm = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.JAVA_INT, ValueLayout.ADDRESS, ValueLayout.ADDRESS);
FunctionDescriptor sigv_mmmm = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.ADDRESS, ValueLayout.ADDRESS, ValueLayout.ADDRESS);
FunctionDescriptor sigv_mii = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.JAVA_INT, ValueLayout.JAVA_INT);
+ FunctionDescriptor sigm_mb = FunctionDescriptor.of(ValueLayout.ADDRESS, ValueLayout.ADDRESS, ValueLayout.JAVA_BOOLEAN);
MemorySegment ui_show_addr = lib.find("ui_show").orElseThrow();
MemorySegment ui_close_addr = lib.find("ui_close").orElseThrow();
MemorySegment ui_window_addr = lib.find("ui_window").orElseThrow();
MemorySegment ui_sidebar_window_addr = lib.find("ui_sidebar_window").orElseThrow();
+ MemorySegment ui_splitview_window_addr = lib.find("ui_splitview_window").orElseThrow();
MemorySegment ui_simple_window_addr = lib.find("ui_simple_window").orElseThrow();
MemorySegment ui_dialog_window_create_addr = lib.find("ui_dialog_window_create").orElseThrow();
MemorySegment ui_dialog_create_addr = lib.find("ui_dialog_create").orElseThrow();
ui_close = linker.downcallHandle(ui_close_addr, sigv_m);
ui_window = linker.downcallHandle(ui_window_addr, sigm_mm);
ui_sidebar_window = linker.downcallHandle(ui_sidebar_window_addr, sigm_mm);
+ ui_splitview_window = linker.downcallHandle(ui_splitview_window_addr, sigm_mb);
ui_simple_window = linker.downcallHandle(ui_simple_window_addr, sigm_mm);
ui_dialog_window_create = linker.downcallHandle(ui_dialog_window_create_addr, sigm_mm);
ui_dialog_create = linker.downcallHandle(ui_dialog_create_addr, sigv_mm);
return createWindow(title, ui_sidebar_window);
}
+ UiObject splitviewWindow(String title, boolean sidebar) {
+ MemorySegment obj = null;
+ Toolkit toolkit = Toolkit.getInstance();
+ toolkit.setIsObjRegEnabled(false); // see createWindow for details
+ try (Arena arena = Arena.ofConfined()) {
+ MemorySegment cstr = arena.allocateFrom(title);
+ obj = (MemorySegment) ui_splitview_window.invoke(cstr, sidebar);
+ } catch (Throwable e) {
+ toolkit.setIsObjRegEnabled(true);
+ throw new RuntimeException(e);
+ }
+ toolkit.setIsObjRegEnabled(true);
+
+ return new UiObject(obj);
+ }
+
UiObject dialogWindow(MemorySegment parent, MemorySegment args) {
MemorySegment obj = null;
Toolkit toolkit = Toolkit.getInstance();
return container.create(ui)
}
+ fun leftPanel(
+ name: String? = null,
+ styleClass: String? = null,
+ margin: Int = -1,
+ spacing: Int = -1,
+ ui: ContainerUI? = null
+ ): UiWidget {
+ val container = Container.leftPanel(this@Toplevel.ui)
+ if(margin > 0) {
+ container.margin(margin)
+ }
+ if(spacing > 0) {
+ container.spacing(spacing)
+ }
+ if(name != null) {
+ container.name(name)
+ }
+ if(styleClass != null) {
+ container.styleClass(styleClass)
+ }
+
+ return container.create(ui)
+ }
+
+ fun rightPanel(
+ name: String? = null,
+ styleClass: String? = null,
+ margin: Int = -1,
+ spacing: Int = -1,
+ ui: ContainerUI? = null
+ ): UiWidget {
+ val container = Container.rightPanel(this@Toplevel.ui)
+ if(margin > 0) {
+ container.margin(margin)
+ }
+ if(spacing > 0) {
+ container.spacing(spacing)
+ }
+ if(name != null) {
+ container.name(name)
+ }
+ if(styleClass != null) {
+ container.styleClass(styleClass)
+ }
+
+ return container.create(ui)
+ }
+
fun button(
label: String? = null,
stockId: String? = null,
return toplevel
}
+fun splitViewWindow(title: String, sidebar: Boolean = false, width: Int = 0, height: Int = 0, ui: (Toplevel.() -> Unit)? = null): Toplevel {
+ val obj = UiObject.createSplitViewWindow(title, sidebar)
+ if(width > 0 && height > 0) {
+ obj.setSize(width, height)
+ }
+ val toplevel = Toplevel(obj)
+ ui?.invoke(toplevel)
+ return toplevel
+}
+
fun dialog(
parent: UiObject,
title: String? = null,