summaryrefslogtreecommitdiff
path: root/sources/prefs
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-05-26 17:39:03 +0000
committerPaul Buetow <paul@buetow.org>2008-05-26 17:39:03 +0000
commitd04ee66ac7a02e7e226478bdc0eebdd97f060e14 (patch)
tree641362ceaaf0f8814c3d732b5e2d26f7616979a7 /sources/prefs
parentd0b6e434d76cfea9e3096f0d50706c9a286a4b9d (diff)
Vector type introduced @ VSPrefs.
Diffstat (limited to 'sources/prefs')
-rw-r--r--sources/prefs/VSPrefs.java95
-rw-r--r--sources/prefs/editors/VSEditor.java99
2 files changed, 181 insertions, 13 deletions
diff --git a/sources/prefs/VSPrefs.java b/sources/prefs/VSPrefs.java
index dd274b9..915d8e3 100644
--- a/sources/prefs/VSPrefs.java
+++ b/sources/prefs/VSPrefs.java
@@ -25,6 +25,9 @@ public abstract class VSPrefs implements Serializable {
/** The Constant INTEGER_PREFIX. */
public static final String INTEGER_PREFIX = "Integer: ";
+ /** The Constant VECTOR_PREFIX. */
+ public static final String VECTOR_PREFIX = "Vector: ";
+
/** The Constant LONG_PREFIX. */
public static final String LONG_PREFIX = "Long: ";
@@ -40,6 +43,9 @@ public abstract class VSPrefs implements Serializable {
/** The integer prefs. */
private HashMap<String,Integer> integerPrefs;
+ /** The integer vector prefs. */
+ private HashMap<String,Vector<Integer>> vectorPrefs;
+
/** The long prefs. */
private HashMap<String,Long> longPrefs;
@@ -160,6 +166,7 @@ public abstract class VSPrefs implements Serializable {
descriptionPrefs = new HashMap<String,String>();
floatPrefs = new HashMap<String,Float>();
integerPrefs = new HashMap<String,Integer>();
+ vectorPrefs = new HashMap<String,Vector<Integer>>();
longPrefs = new HashMap<String,Long>();
restrictions = new HashMap<String,VSPrefRestriction>();
stringPrefs = new HashMap<String,String>();
@@ -176,6 +183,7 @@ public abstract class VSPrefs implements Serializable {
colorPrefs.clear();
floatPrefs.clear();
integerPrefs.clear();
+ vectorPrefs.clear();
longPrefs.clear();
stringPrefs.clear();
booleanPrefs.clear();
@@ -707,6 +715,81 @@ public abstract class VSPrefs implements Serializable {
setInteger(key, new Integer(val));
}
+ /* Integer vector methods */
+
+ /**
+ * Gets the integer key set.
+ *
+ * @return the integer key set
+ */
+ public synchronized Set<String> getVectorKeySet() {
+ return vectorPrefs.keySet();
+ }
+
+ /**
+ * Gets the integer obj.
+ *
+ * @param key the key
+ *
+ * @return the integer obj
+ */
+ public synchronized Vector<Integer> getVector(String key) {
+ Vector<Integer> val = vectorPrefs.get(key);
+
+ if (val == null) {
+ System.err.println("Fatal: No such integer config value \""
+ + key + "\"");
+ System.exit(1);
+ }
+
+ return val;
+ }
+
+ /**
+ * Inits the integer.
+ *
+ * @param key the key
+ * @param val the val
+ */
+ public synchronized void initVector(String key, Vector<Integer> val) {
+ if (!vectorPrefs.containsKey(key))
+ setVector(key, val);
+ }
+
+ /**
+ * Inits the integer vector.
+ *
+ * @param key the key
+ * @param val the val
+ * @param descr the descr
+ */
+ public void initVector(String key, Vector<Integer> val, String descr) {
+ initVector(key, val);
+ initDescription(VECTOR_PREFIX + key, descr);
+ }
+
+ /**
+ * Inits the integer vector plus unit.
+ *
+ * @param key the key
+ * @param val the val
+ * @param descr the descr
+ */
+ public void initVector(String key, Vector<Integer> val, String descr, String unit) {
+ initVector(key, val, descr);
+ initUnit(VECTOR_PREFIX + key, unit);
+ }
+
+ /**
+ * Sets the integer vector.
+ *
+ * @param key the key
+ * @param val the val
+ */
+ public synchronized void setVector(String key, Vector<Integer> val) {
+ vectorPrefs.put(key, val);
+ }
+
/* Long methods */
/**
@@ -921,6 +1004,7 @@ public abstract class VSPrefs implements Serializable {
objectOutputStream.writeObject(colorPrefs);
objectOutputStream.writeObject(floatPrefs);
objectOutputStream.writeObject(integerPrefs);
+ objectOutputStream.writeObject(vectorPrefs);
objectOutputStream.writeObject(longPrefs);
objectOutputStream.writeObject(stringPrefs);
objectOutputStream.writeObject(units);
@@ -941,6 +1025,7 @@ public abstract class VSPrefs implements Serializable {
descriptionPrefs = new HashMap<String,String>();
floatPrefs = (HashMap<String,Float>) objectInputStream.readObject();
integerPrefs = (HashMap<String,Integer>) objectInputStream.readObject();
+ vectorPrefs = (HashMap<String,Vector<Integer>>) objectInputStream.readObject();
longPrefs = (HashMap<String,Long>) objectInputStream.readObject();
restrictions = new HashMap<String,VSPrefRestriction>();
stringPrefs = (HashMap<String,String>) objectInputStream.readObject();
@@ -1071,6 +1156,13 @@ public abstract class VSPrefs implements Serializable {
descr += key + "=" + getInteger(key) + "; ";
}
+ set = getVectorKeySet();
+ if (set.size() > 0) {
+ descr += VECTOR_PREFIX;
+ for (String key : set)
+ descr += key + "=" + getVector(key) + "; ";
+ }
+
set = getLongKeySet();
if (set.size() > 0) {
descr += LONG_PREFIX;
@@ -1129,6 +1221,9 @@ public abstract class VSPrefs implements Serializable {
if (!integerPrefs.isEmpty())
return false;
+ if (!vectorPrefs.isEmpty())
+ return false;
+
if (!longPrefs.isEmpty())
return false;
diff --git a/sources/prefs/editors/VSEditor.java b/sources/prefs/editors/VSEditor.java
index 13d1f02..4436825 100644
--- a/sources/prefs/editors/VSEditor.java
+++ b/sources/prefs/editors/VSEditor.java
@@ -31,6 +31,9 @@ public abstract class VSEditor implements ActionListener {
/** The integer keys. */
private ArrayList<String> integerKeys;
+ /** The vector keys. */
+ private ArrayList<String> vectorKeys;
+
/** The long keys. */
private ArrayList<String> longKeys;
@@ -43,6 +46,9 @@ public abstract class VSEditor implements ActionListener {
/** The integer fields. */
private HashMap<String,JComboBox> integerFields;
+ /** The vector fields. */
+ private HashMap<String,JTextField> vectorFields;
+
/** The color fields. */
private HashMap<String,JTextField> colorFields;
@@ -190,6 +196,7 @@ public abstract class VSEditor implements ActionListener {
colorFields = new HashMap<String,JTextField>();
floatFields = new HashMap<String,JTextField>();
integerFields = new HashMap<String,JComboBox>();
+ vectorFields = new HashMap<String,JTextField>();
longFields = new HashMap<String,JTextField>();
booleanFields = new HashMap<String,JCheckBox>();
stringFields = new HashMap<String,JTextField>();
@@ -197,6 +204,7 @@ public abstract class VSEditor implements ActionListener {
colorKeys = filterKeys(prefsToEdit.getColorKeySet());
floatKeys = filterKeys(prefsToEdit.getFloatKeySet());
integerKeys = filterKeys(prefsToEdit.getIntegerKeySet());
+ vectorKeys = filterKeys(prefsToEdit.getVectorKeySet());
longKeys = filterKeys(prefsToEdit.getLongKeySet());
booleanKeys = filterKeys(prefsToEdit.getBooleanKeySet());
stringKeys = filterKeys(prefsToEdit.getStringKeySet());
@@ -332,13 +340,45 @@ public abstract class VSEditor implements ActionListener {
}
/**
- * Creates the boolean component.
+ * Creates the vector component.
*
* @param fullKey the full key
* @param key the key
* @param prefsToEdit the prefs to edit
+ */
+ protected VSTupel<String,Component,JTextField> createVectorComponent(String fullKey, String key, VSPrefs prefsToEdit) {
+ String descr = prefsToEdit.getDescription(fullKey);
+ String label = descr == null ? fullKey : descr;
+ Vector<Integer> vec = prefsToEdit.getVector(key);
+
+ JTextField valField = new JTextField();
+ valField.setBorder(null);
+
+ StringBuffer buffer = new StringBuffer();
+ buffer.append("[");
+
+ synchronized (vec) {
+ for (Integer integer : vec) {
+ buffer.append(integer + ",");
+ }
+ }
+
+ try {
+ valField.setText(buffer.toString().substring(0, buffer.length()-1)+"]");
+ } catch (StringIndexOutOfBoundsException e) {
+ valField.setText("[]");
+ }
+
+ return new VSTupel<String,Component,JTextField>(label,
+ createUnitPanel(prefsToEdit, valField, fullKey), valField);
+ }
+
+ /**
+ * Creates the boolean component.
*
- * @return the lang.process.removetupel< string, component, j check box>
+ * @param fullKey the full key
+ * @param key the key
+ * @param prefsToEdit the prefs to edit
*/
protected VSTupel<String,Component,JCheckBox> createBooleanComponent(String fullKey, String key, VSPrefs prefsToEdit) {
final String activated = prefs.getString("lang.activated");
@@ -482,12 +522,22 @@ public abstract class VSEditor implements ActionListener {
for (String key : integerKeys) {
String fullKey = VSPrefs.INTEGER_PREFIX + key;
- VSTupel<String,Component,JComboBox> tupel = createIntegerComponent(fullKey, key, prefsToEdit);
+ VSTupel<String,Component,JComboBox> tupel =
+ createIntegerComponent(fullKey, key, prefsToEdit);
labels.put(fullKey, tupel.getA());
components.put(fullKey, tupel.getB());
integerFields.put(key, tupel.getC());
}
+ for (String key : vectorKeys) {
+ String fullKey = VSPrefs.VECTOR_PREFIX + key;
+ VSTupel<String,Component,JTextField> tupel =
+ createVectorComponent(fullKey, key, prefsToEdit);
+ labels.put(fullKey, tupel.getA());
+ components.put(fullKey, tupel.getB());
+ vectorFields.put(key, tupel.getC());
+ }
+
for (String key : booleanKeys) {
String fullKey = VSPrefs.BOOLEAN_PREFIX + key;
VSTupel<String,Component,JCheckBox> tupel = createBooleanComponent(fullKey, key, prefsToEdit);
@@ -612,12 +662,14 @@ public abstract class VSEditor implements ActionListener {
ArrayList<String> fullKeys = new ArrayList<String>();
Set<String> integerKeys = prefsToAdd.getIntegerKeySet();
+ Set<String> vectorKeys = prefsToAdd.getVectorKeySet();
Set<String> floatKeys = prefsToAdd.getFloatKeySet();
Set<String> longKeys = prefsToAdd.getLongKeySet();
Set<String> booleanKeys = prefsToAdd.getBooleanKeySet();
Set<String> stringKeys = prefsToAdd.getStringKeySet();
for (String key : integerKeys) fullKeys.add(VSPrefs.INTEGER_PREFIX + key);
+ for (String key : vectorKeys) fullKeys.add(VSPrefs.VECTOR_PREFIX + key);
for (String key : floatKeys) fullKeys.add(VSPrefs.FLOAT_PREFIX + key);
for (String key : longKeys) fullKeys.add(VSPrefs.LONG_PREFIX + key);
for (String key : booleanKeys) fullKeys.add(VSPrefs.BOOLEAN_PREFIX + key);
@@ -634,6 +686,13 @@ public abstract class VSEditor implements ActionListener {
this.integerFields.put(prefsKey+key, tupel.getC());
addVariable(prefsKey, tupel.getA(), tupel.getB(), prefsToAdd);
+ } else if (fullKey.startsWith(VSPrefs.VECTOR_PREFIX)) {
+ VSTupel<String,Component,JTextField> tupel =
+ createVectorComponent(fullKey, key, prefsToAdd);
+ this.vectorKeys.add(prefsKey+key);
+ this.vectorFields.put(prefsKey+key, tupel.getC());
+ addVariable(prefsKey, tupel.getA(), tupel.getB(), prefsToAdd);
+
} else if (fullKey.startsWith(VSPrefs.BOOLEAN_PREFIX)) {
VSTupel<String,Component,JCheckBox> tupel =
createBooleanComponent(fullKey, key, prefsToAdd);
@@ -702,7 +761,7 @@ public abstract class VSEditor implements ActionListener {
/**
* Reset edit panel.
*/
- protected void resetEditPanel() {
+ protected void resetPrefs() {
for (String key : integerKeys) {
JComboBox valComboBox = integerFields.get(key);
valComboBox.setSelectedIndex(0);
@@ -714,6 +773,12 @@ public abstract class VSEditor implements ActionListener {
valField.setSelected(prefsToEditMap.get(keys[1]).getBoolean(keys[0]));
}
+ for (String key : vectorKeys) {
+ String keys[] = getKeys(key);
+ JTextField valField = vectorFields.get(key);
+ valField.setText(""+prefsToEditMap.get(keys[1]).getVector(keys[0]));
+ }
+
for (String key : floatKeys) {
String keys[] = getKeys(key);
JTextField valField = floatFields.get(key);
@@ -765,14 +830,26 @@ public abstract class VSEditor implements ActionListener {
for (String key : integerKeys) {
String keys[] = getKeys(key);
- //String fullKey = VSPrefs.INTEGER_PREFIX + keys[0];
JComboBox valComboBox = integerFields.get(key);
prefsToEditMap.get(keys[1]).setInteger(keys[0], (Integer) valComboBox.getSelectedItem());
}
+ for (String key : vectorKeys) {
+ String keys[] = getKeys(key);
+ JTextField valField = vectorFields.get(key);
+
+ try {
+ String val = valField.getText();
+ Vector<Integer> vec = utils.VSTools.parseIntegerVector(val);
+ prefsToEditMap.get(keys[1]).setVector(keys[0], vec);
+ } catch (exceptions.ParseIntegerVectorException e) {
+ }
+
+ valField.setText(""+prefsToEditMap.get(keys[1]).getVector(keys[0]));
+ }
+
for (String key : booleanKeys) {
String keys[] = getKeys(key);
- //String fullKey = VSPrefs.BOOLEAN_PREFIX + keys[0];
JCheckBox valField = booleanFields.get(key);
prefsToEditMap.get(keys[1]).setBoolean(keys[0], valField.isSelected());
}
@@ -782,12 +859,11 @@ public abstract class VSEditor implements ActionListener {
JTextField valField = floatFields.get(key);
try {
- //String fullKey = VSPrefs.FLOAT_PREFIX + keys[0];
Float val = Float.valueOf(valField.getText());
prefsToEditMap.get(keys[1]).setFloat(keys[0], val);
} catch (NumberFormatException e) {
- valField.setText("0.0");
+ valField.setText(""+prefsToEditMap.get(keys[1]).getFloat(keys[0]));
}
}
@@ -796,25 +872,22 @@ public abstract class VSEditor implements ActionListener {
JTextField valField = longFields.get(key);
try {
- //String fullKey = VSPrefs.LONG_PREFIX + keys[0];
Long val = Long.valueOf(valField.getText());
prefsToEditMap.get(keys[1]).setLong(keys[0], val);
} catch (NumberFormatException e) {
- valField.setText("0");
+ valField.setText(""+prefsToEditMap.get(keys[1]).getLong(keys[0]));
}
}
for (String key : colorKeys) {
String keys[] = getKeys(key);
- //String fullKey = VSPrefs.COLOR_PREFIX + keys[0];
JTextField valField = colorFields.get(key);
prefsToEditMap.get(keys[1]).setColor(keys[0], valField.getBackground());
}
for (String key : stringKeys) {
String keys[] = getKeys(key);
- //String fullKey = VSPrefs.STRING_PREFIX + keys[0];
JTextField valField = stringFields.get(key);
prefsToEditMap.get(keys[1]).setString(keys[0], valField.getText());
}
@@ -846,7 +919,7 @@ public abstract class VSEditor implements ActionListener {
savePrefs();
} else if (actionCommand.equals(prefs.getString("lang.reset"))) {
- resetEditPanel();
+ resetPrefs();
}
}