From d4a1087dd12d38810c531527e170132e03cb96c8 Mon Sep 17 00:00:00 2001 From: Mario Serrano Date: Fri, 20 Feb 2026 11:49:04 -0500 Subject: [PATCH] Refactor DefaultFieldCustomizer and TableViewRowRenderer to improve component class handling and defaults --- .../tools/dynamia/zk/crud/ui/EntityPickerBox.java | 6 +++--- .../dynamia/zk/viewers/DefaultFieldCustomizer.java | 11 +++++++++-- .../zk/viewers/table/TableViewRowRenderer.java | 13 ++++++++++++- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/platform/ui/zk/src/main/java/tools/dynamia/zk/crud/ui/EntityPickerBox.java b/platform/ui/zk/src/main/java/tools/dynamia/zk/crud/ui/EntityPickerBox.java index d79fa6c0..72f00d1a 100644 --- a/platform/ui/zk/src/main/java/tools/dynamia/zk/crud/ui/EntityPickerBox.java +++ b/platform/ui/zk/src/main/java/tools/dynamia/zk/crud/ui/EntityPickerBox.java @@ -325,7 +325,7 @@ public void setSelected(Object object) { } } - public final void setEntityClass(String entityClass) { + public void setEntityClass(String entityClass) { try { Class clazz = Class.forName(entityClass); setEntityClass(clazz); @@ -336,11 +336,11 @@ public final void setEntityClass(String entityClass) { } } - public final void setEntityClassName(String entityClassName) { + public void setEntityClassName(String entityClassName) { setEntityClass(entityClassName); } - public final void setEntityClass(Class entityClass) { + public void setEntityClass(Class entityClass) { this.entityClass = entityClass; if (entityClass != null) { entityName = StringUtils.addSpaceBetweenWords(entityClass.getSimpleName()); diff --git a/platform/ui/zk/src/main/java/tools/dynamia/zk/viewers/DefaultFieldCustomizer.java b/platform/ui/zk/src/main/java/tools/dynamia/zk/viewers/DefaultFieldCustomizer.java index d57d934e..c7bb7ce4 100644 --- a/platform/ui/zk/src/main/java/tools/dynamia/zk/viewers/DefaultFieldCustomizer.java +++ b/platform/ui/zk/src/main/java/tools/dynamia/zk/viewers/DefaultFieldCustomizer.java @@ -115,13 +115,20 @@ public void customize(String viewTypeName, Field field) { } else if (field.getFieldClass() == Boolean.class || field.getFieldClass() == boolean.class) { field.setComponentClass(Checkbox.class); field.set("disabled", true); - } else { - field.setComponentClass(Label.class); + } + + if (field.getComponent() != null && !field.getComponent().isBlank() && field.getComponentClass() == null) { + field.setComponentClass(ComponentAliasIndex.getInstance().get(field.getComponent())); } if (field.getComponentClass() != null && field.getComponent() == null) { field.setComponent(ComponentAliasIndex.getInstance().getAlias(field.getComponentClass())); } + + if (field.getComponentClass() == null && field.getComponent() == null) { + field.setComponentClass(Label.class); + field.setComponent("label"); + } } diff --git a/platform/ui/zk/src/main/java/tools/dynamia/zk/viewers/table/TableViewRowRenderer.java b/platform/ui/zk/src/main/java/tools/dynamia/zk/viewers/table/TableViewRowRenderer.java index 1a312082..c3834902 100644 --- a/platform/ui/zk/src/main/java/tools/dynamia/zk/viewers/table/TableViewRowRenderer.java +++ b/platform/ui/zk/src/main/java/tools/dynamia/zk/viewers/table/TableViewRowRenderer.java @@ -38,6 +38,7 @@ import tools.dynamia.viewers.util.ComponentCustomizerUtil; import tools.dynamia.viewers.util.ViewRendererUtil; import tools.dynamia.viewers.util.Viewers; +import tools.dynamia.zk.ComponentAliasIndex; import tools.dynamia.zk.actions.BootstrapButtonActionRenderer; import tools.dynamia.zk.converters.Util; import tools.dynamia.zk.ui.Import; @@ -288,7 +289,17 @@ protected void renderFieldCell(Binder binder, Listitem item, Object data, } protected Component createFieldComponent(Object data, Object cellValue, Field field, Listcell cell) { - Class componentClass = field.getComponentClass() != null ? field.getComponentClass() : Label.class; + Class componentClass = null; + if (field.getComponentClass() != null) { + componentClass = field.getComponentClass(); + } else if (field.getComponent() != null && !field.getComponent().isEmpty()) { + componentClass = ComponentAliasIndex.getInstance().get(field.getComponent()); + } + + if (componentClass == null) { + componentClass = Label.class; + } + Component component = (Component) ObjectOperations.newInstance(componentClass); if (component != null) { ZKUtil.changeReadOnly(component, tableView.isReadonly());