Skip to content

Commit f96a177

Browse files
Enhance component indexing by adding MultipickerBox and ProviderMultipickerBox to BindingComponentIndex and ComponentAliasIndex
1 parent ab4f955 commit f96a177

5 files changed

Lines changed: 13 additions & 21 deletions

File tree

platform/ui/zk/src/main/java/tools/dynamia/zk/BindingComponentIndex.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public static BindingComponentIndex getInstance() {
7070

7171
public void put(String key, Class value) {
7272
if (getKey(value.getName()) != null) {
73-
throw new RuntimeException(value + " is already indexed");
73+
return;
7474
}
7575
super.put(key, value.getName());
7676
}

platform/ui/zk/src/main/java/tools/dynamia/zk/ComponentAliasIndex.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ public class ComponentAliasIndex extends HashMap<String, Class<? extends Compone
8989
getInstance().add("localebox", LocaleCombobox.class);
9090
getInstance().add("timezonebox", TimeZoneCombobox.class);
9191
getInstance().add("simplecombobox", SimpleCombobox.class);
92-
92+
getInstance().add("multipickerbox", MultipickerBox.class);
93+
getInstance().add("providermultipickerbox", ProviderMultipickerBox.class);
9394

9495

9596
LoggingService logger = new SLF4JLoggingService(ComponentAliasIndex.class);
@@ -102,7 +103,7 @@ public class ComponentAliasIndex extends HashMap<String, Class<? extends Compone
102103
for (String alias : aliases.stringPropertyNames()) {
103104
try {
104105
Class clazz = ObjectOperations.findClass(aliases.getProperty(alias));
105-
if(clazz!=null) {
106+
if (clazz != null) {
106107
getInstance().add(alias, clazz);
107108
}
108109
} catch (Exception ex) {

platform/ui/zk/src/main/java/tools/dynamia/zk/ui/InputPanel.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import tools.dynamia.viewers.ComponentCustomizer;
3535
import tools.dynamia.viewers.Field;
3636
import tools.dynamia.viewers.FieldCustomizer;
37+
import tools.dynamia.viewers.util.ComponentCustomizerUtil;
3738
import tools.dynamia.web.util.HttpUtils;
3839
import tools.dynamia.zk.util.ZKBindingUtil;
3940
import tools.dynamia.zk.util.ZKUtil;
@@ -143,8 +144,7 @@ private Component buildTextbox() {
143144
Component comp = (Component) ObjectOperations.newInstance(componClass);
144145
if (field.getComponentCustomizer() != null) {
145146
try {
146-
ComponentCustomizer customizer = ObjectOperations.newInstance(field.getComponentCustomizer());
147-
customizer.cutomize(field, comp);
147+
ComponentCustomizerUtil.customizeComponent(field, comp, field.getComponentCustomizer());
148148
} catch (Exception e) {
149149
log("Cannot create component customizer", e);
150150
}

platform/ui/zk/src/main/java/tools/dynamia/zk/ui/MultipickerBox.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import tools.dynamia.zk.BindingComponentIndex;
3030
import tools.dynamia.zk.ComponentAliasIndex;
3131

32+
import java.io.Serial;
3233
import java.util.Collection;
3334
import java.util.HashSet;
3435
import java.util.Set;
@@ -58,14 +59,10 @@
5859
*/
5960
public class MultipickerBox extends Bandbox {
6061

62+
@Serial
6163
private static final long serialVersionUID = 1L;
6264
private static final String SEPARATOR = ",";
6365

64-
static {
65-
ComponentAliasIndex.getInstance().add("multipickerbox", MultipickerBox.class);
66-
BindingComponentIndex.getInstance().put("selected", MultipickerBox.class);
67-
}
68-
6966
private String selected;
7067
private final Listbox itemsList;
7168
private final Bandpopup bandpopup;

platform/ui/zk/src/main/java/tools/dynamia/zk/ui/ProviderMultipickerBox.java

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
*/
1717
package tools.dynamia.zk.ui;
1818

19+
import org.springframework.beans.BeanUtils;
1920
import org.zkoss.zk.ui.UiException;
2021
import org.zkoss.zul.ListModelList;
2122
import tools.dynamia.commons.ObjectOperations;
2223
import tools.dynamia.commons.StringUtils;
2324
import tools.dynamia.integration.Containers;
24-
import tools.dynamia.zk.ComponentAliasIndex;
2525

2626
import java.util.Collection;
2727
import java.util.Set;
@@ -46,10 +46,6 @@ public class ProviderMultipickerBox extends MultipickerBox {
4646

4747
private static final long serialVersionUID = 4710970528102748639L;
4848

49-
static {
50-
ComponentAliasIndex.getInstance().add("providermultipickerbox", ProviderMultipickerBox.class);
51-
}
52-
5349
private String className;
5450
private String idField = "id";
5551
private String nameField = "name";
@@ -74,6 +70,7 @@ public ProviderMultipickerBox() {
7470
});
7571

7672
}
73+
7774
/**
7875
* Initializes the model by loading provider implementations from the Spring container.
7976
* This method is called when the provider class is set or configuration changes.
@@ -96,12 +93,9 @@ public String getClassName() {
9693

9794
public void setClassName(String className) {
9895
this.className = className;
99-
try {
100-
this.providerClass = Class.forName(className);
101-
initModel();
102-
} catch (ClassNotFoundException e) {
103-
throw new UiException("Invalid class name for " + this, e);
104-
}
96+
this.providerClass = ObjectOperations.findClass(className);
97+
initModel();
98+
10599
}
106100

107101
public String getIdField() {

0 commit comments

Comments
 (0)