MethodHandle sourcelist_args_set_onactivatedata;
MethodHandle sourcelist_args_set_onbuttonclick;
MethodHandle sourcelist_args_set_onbuttonclickdata;
+ MethodHandle sourcelist_args_set_contextmenu;
MethodHandle sourcelist_args_free;
MethodHandle textarea_args_new;
MemorySegment ui_sourcelist_args_set_onactivatedata_addr = lib.find("ui_sourcelist_args_set_onactivatedata").orElseThrow();
MemorySegment ui_sourcelist_args_set_onbuttonclick_addr = lib.find("ui_sourcelist_args_set_onbuttonclick").orElseThrow();
MemorySegment ui_sourcelist_args_set_onbuttonclickdata_addr = lib.find("ui_sourcelist_args_set_onbuttonclickdata").orElseThrow();
+ MemorySegment ui_sourcelist_args_set_contextmenu_addr = lib.find("ui_sourcelist_args_set_contextmenu").orElseThrow();
MemorySegment ui_sourcelist_args_free_addr = lib.find("ui_sourcelist_args_free").orElseThrow();
MemorySegment ui_textarea_args_new_addr = lib.find("ui_textarea_args_new").orElseThrow();
sourcelist_args_set_onactivatedata = linker.downcallHandle(ui_sourcelist_args_set_onactivatedata_addr, sigv_mm);
sourcelist_args_set_onbuttonclick = linker.downcallHandle(ui_sourcelist_args_set_onbuttonclick_addr, sigv_mm);
sourcelist_args_set_onbuttonclickdata = linker.downcallHandle(ui_sourcelist_args_set_onbuttonclickdata_addr, sigv_mm);
+ sourcelist_args_set_contextmenu = linker.downcallHandle(ui_sourcelist_args_set_contextmenu_addr, sigv_mm);
sourcelist_args_free = linker.downcallHandle(ui_sourcelist_args_free_addr, sigv_m);
textarea_args_new = linker.downcallHandle(ui_textarea_args_new_addr, sigm);
private int rowspan;
private String name;
private String styleClass;
+ private Menu contextMenu;
private int[] states;
private List<SubList> sublists;
private EventHandler onActivate;
private EventHandler onButtonClick;
+ private MemorySegment menuBuilder;
+
public SourceListBuilder(UiObject obj, MethodHandle widgetConstructor) {
this.obj = obj;
this.widgetConstructor = widgetConstructor;
return this;
}
+ public SourceListBuilder<T> contextmenu(Menu menu) {
+ this.contextMenu = menu;
+ return this;
+ }
+
public MemorySegment createArgs(Arena arena) throws Throwable {
ArgFuncs ui = ArgFuncs.getInstance();
ui.sourcelist_args_set_onbuttonclick.invoke(args, event.getCallback());
ui.sourcelist_args_set_onbuttonclickdata.invoke(args, event.getUserData());
}
+ if (contextMenu != null) {
+ menuBuilder = contextMenu.createMenuBuilder();
+ ui.sourcelist_args_set_contextmenu.invoke(args, menuBuilder);
+ }
return args;
}
+
+ void freeArgs() {
+ super.freeArgs();
+ if(menuBuilder != null) {
+ MenuFuncs ui = MenuFuncs.getInstance();
+ try {
+ ui.menubuilder_free.invoke(menuBuilder);
+ } catch (Throwable e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
}