From: Olaf Wintermann Date: Wed, 2 Jul 2025 16:42:58 +0000 (+0200) Subject: add Var annotation X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=c3b8dbca8b35e3a7b8997c1518610f1dd30a0153;p=rssreader.git add Var annotation --- diff --git a/ui-java/src/main/java/de/unixwork/ui/Document.java b/ui-java/src/main/java/de/unixwork/ui/Document.java index 47744c4..b1ad20c 100644 --- a/ui-java/src/main/java/de/unixwork/ui/Document.java +++ b/ui-java/src/main/java/de/unixwork/ui/Document.java @@ -1,6 +1,7 @@ package de.unixwork.ui; import java.lang.foreign.MemorySegment; +import java.lang.reflect.Field; public class Document extends Context { protected MemorySegment ptr; @@ -18,6 +19,29 @@ public class Document extends Context { } catch (Throwable e) { throw new RuntimeException(e); } + + // init UI vars + Class clazz = this.getClass(); + for (Field field : clazz.getDeclaredFields()) { + Var annotation = field.getAnnotation(Var.class); + if (annotation != null) { + String name = annotation.name(); + Class type = field.getType(); + + try { + field.setAccessible(true); // allow access to private fields + if (type == UiString.class) { + field.set(this, this.string(name)); + } else if (type == UiInteger.class) { + field.set(this, this.integer(name)); + } else if (type == UiList.class) { + field.set(this, this.list(name)); + } + } catch (Exception e) { + throw new RuntimeException("Failed to initialize field " + field.getName(), e); + } + } + } } public MemorySegment getPtr() { diff --git a/ui-java/src/main/java/de/unixwork/ui/Var.java b/ui-java/src/main/java/de/unixwork/ui/Var.java new file mode 100644 index 0000000..c9fc3b6 --- /dev/null +++ b/ui-java/src/main/java/de/unixwork/ui/Var.java @@ -0,0 +1,12 @@ +package de.unixwork.ui; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.lang.annotation.ElementType; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +public @interface Var { + String name(); +} \ No newline at end of file