Author: nextgens
Date: 2007-04-15 18:36:29 +0000 (Sun, 15 Apr 2007)
New Revision: 12753

Added:
   trunk/freenet/src/freenet/config/EnumerableOption.java
Modified:
   trunk/freenet/src/freenet/config/BooleanOption.java
   trunk/freenet/src/freenet/config/Option.java
   trunk/freenet/src/freenet/config/StringOption.java
Log:
Create a new interface in the configuration framework: EnumerableOption

Modified: trunk/freenet/src/freenet/config/BooleanOption.java
===================================================================
--- trunk/freenet/src/freenet/config/BooleanOption.java 2007-04-15 17:46:39 UTC 
(rev 12752)
+++ trunk/freenet/src/freenet/config/BooleanOption.java 2007-04-15 18:36:29 UTC 
(rev 12753)
@@ -5,7 +5,7 @@

 import freenet.support.api.BooleanCallback;

-public class BooleanOption extends Option {
+public class BooleanOption extends Option implements EnumerableOption {

        final boolean defaultValue;
        final BooleanCallback cb;
@@ -67,4 +67,13 @@
                currentValue = defaultValue;
        }

+       public String[] getPossibleValues() {
+               return new String[] { "true", "false" };
+       }
+       
+       public void setPossibleValues(String[] val) {}
+       
+       public boolean isEnumerable() {
+               return true;
+       }
 }

Added: trunk/freenet/src/freenet/config/EnumerableOption.java
===================================================================
--- trunk/freenet/src/freenet/config/EnumerableOption.java                      
        (rev 0)
+++ trunk/freenet/src/freenet/config/EnumerableOption.java      2007-04-15 
18:36:29 UTC (rev 12753)
@@ -0,0 +1,11 @@
+/* This code is part of Freenet. It is distributed under the GNU General
+ * Public License, version 2 (or at your option any later version). See
+ * http://www.gnu.org/ for further details of the GPL. */
+
+package freenet.config;
+
+public interface EnumerableOption {
+       public String[] getPossibleValues();
+       public void setPossibleValues(String[] val);
+       public String getValueString();
+}

Modified: trunk/freenet/src/freenet/config/Option.java
===================================================================
--- trunk/freenet/src/freenet/config/Option.java        2007-04-15 17:46:39 UTC 
(rev 12752)
+++ trunk/freenet/src/freenet/config/Option.java        2007-04-15 18:36:29 UTC 
(rev 12753)
@@ -91,4 +91,8 @@
        public abstract void setDefault();

        public abstract String getDefault();
+       
+       public boolean isEnumerable() {
+               return false;
+       }
 }

Modified: trunk/freenet/src/freenet/config/StringOption.java
===================================================================
--- trunk/freenet/src/freenet/config/StringOption.java  2007-04-15 17:46:39 UTC 
(rev 12752)
+++ trunk/freenet/src/freenet/config/StringOption.java  2007-04-15 18:36:29 UTC 
(rev 12753)
@@ -5,11 +5,12 @@

 import freenet.support.api.StringCallback;

-public class StringOption extends Option {
+public class StringOption extends Option implements EnumerableOption {

        final String defaultValue;
        final StringCallback cb;
        private String currentValue;
+       private String[] possibleValues;

        public StringOption(SubConfig conf, String optionName, String 
defaultValue, int sortOrder, 
                        boolean expert, boolean forceWrite, String shortDesc, 
String longDesc, StringCallback cb) {
@@ -29,7 +30,7 @@

        public void setValue(String val) throws InvalidConfigValueException {
                cb.set(val);
-               this.currentValue = val;
+               this.currentValue = val; // Callbacks are in charge of ensuring 
it matches with possibleValues
        }

        public String getValueString() {
@@ -53,4 +54,15 @@
                return defaultValue;
        }

+       public void setPossibleValues(String[] val) {
+               possibleValues = val;
+       }
+       
+       public String[] getPossibleValues() {
+               return possibleValues;
+       }
+       
+       public boolean isEnumerable() {
+               return (possibleValues != null);
+       }
 }


Reply via email to