From a8078f83147f7be8401438f3630bfd7540fec00b Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Thu, 14 Jan 2016 18:20:11 +0100 Subject: [PATCH] Added Data node methods to Configurator --- Zutil.jar | Bin 1190607 -> 1190941 bytes src/zutil/ui/Configurator.java | 39 +++++++++++++++++++++++++-------- 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/Zutil.jar b/Zutil.jar index e5b18f009f4afcd9eb3becd3fc9c27ca034dc71a..71ed73dc5261a4b94df90e7032ef96b65f23694f 100755 GIT binary patch delta 24450 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 BjRXJy diff --git a/src/zutil/ui/Configurator.java b/src/zutil/ui/Configurator.java index 8e909f8..8125f12 100755 --- a/src/zutil/ui/Configurator.java +++ b/src/zutil/ui/Configurator.java @@ -25,6 +25,7 @@ package zutil.ui; import zutil.log.LogUtil; +import zutil.parser.DataNode; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -51,9 +52,9 @@ public class Configurator { @Retention(RetentionPolicy.RUNTIME) // Make this annotation accessible at runtime via reflection. @Target({ElementType.FIELD}) // This annotation can only be applied to class fields. public static @interface Configurable{ - /* Nice name of this parameter */ + /** Nice name of this parameter **/ String value(); - /* Defines the order the parameters, in ascending order */ + /** Defines the order the parameters, in ascending order **/ int order() default Integer.MAX_VALUE; } @@ -109,24 +110,46 @@ public class Configurator { /** * Uses a Map to assign all parameters of the Object */ - public void setConfiguration(Map parameters){ + public void setValues(Map parameters){ for(ConfigurationParam param : this.params){ if(parameters.containsKey(param.getName())) param.setValue(parameters.get(param.getName())); } } + /** + * Uses a Map to assign all parameters of the Object. + * NOTE: the DataNode must be of type Map + */ + public void setValues(DataNode node){ + if(!node.isMap()) + return; + for(ConfigurationParam param : this.params){ + if(node.get(param.getName()) != null) + param.setValue(node.getString(param.getName())); + } + } + + public DataNode getValuesAsNode(){ + DataNode node = new DataNode(DataNode.DataType.Map); + for(ConfigurationParam param : this.params){ + node.set(param.getName(), param.getString()); + } + return node; + } + + /** * All configuration parameters that was set * for each parameter will be applied to the object. * - * If the target class implements the ConfigurationActionListener interface + * The postConfigurationAction() method will be called on the target object if it implements the ConfigurationActionListener interface. */ public void applyConfiguration(){ StringBuilder strParams = new StringBuilder(); for(ConfigurationParam param : params){ try { - param.apply(); + param.apply(obj); // Logging if(logger.isLoggable(Level.FINE)) { strParams.append(param.getName()); @@ -157,14 +180,12 @@ public class Configurator { protected String name; protected String niceName; protected ConfigType type; - protected Object obj; protected Object value; protected int order; - protected ConfigurationParam(Field f, Object o) throws IllegalAccessException { + protected ConfigurationParam(Field f, Object obj) throws IllegalAccessException { field = f; - obj = o; field.setAccessible(true); name = field.getName(); if(obj != null) @@ -218,7 +239,7 @@ public class Configurator { } } - protected void apply() throws IllegalAccessException { + protected void apply(Object obj) throws IllegalAccessException { if(obj != null) field.set(obj, value); }