From 6fd1d5c225c70677ef40ec7d76111b849e5d7d75 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 21 May 2008 21:24:42 +0000 Subject: JTable editor done?!? :) --- sources/prefs/editors/VSEditor.java | 147 +++++++++++++++++++++++++----------- 1 file changed, 104 insertions(+), 43 deletions(-) (limited to 'sources/prefs/editors/VSEditor.java') diff --git a/sources/prefs/editors/VSEditor.java b/sources/prefs/editors/VSEditor.java index d3d33e8..0d00bab 100644 --- a/sources/prefs/editors/VSEditor.java +++ b/sources/prefs/editors/VSEditor.java @@ -13,8 +13,7 @@ import utils.*; import prefs.VSPrefs; public abstract class VSEditor implements ActionListener { - protected static final int LABEL_FIELD_COLS = 18; - protected static final int VALUE_FIELD_COLS = 7; + protected static final int VALUE_FIELD_COLS = 9; protected static final int MIN_UNIT_LENGTH = 5; private HashMap integerFields; private HashMap colorFields; @@ -22,12 +21,12 @@ public abstract class VSEditor implements ActionListener { private HashMap longFields; private HashMap booleanFields; private HashMap stringFields; - private Vector colorKeys; - private Vector floatKeys; - private Vector integerKeys; - private Vector longKeys; - private Vector booleanKeys; - private Vector stringKeys; + private ArrayList colorKeys; + private ArrayList floatKeys; + private ArrayList integerKeys; + private ArrayList longKeys; + private ArrayList booleanKeys; + private ArrayList stringKeys; private JPanel buttonPanel; private JPanel editPanel; protected VSPrefs prefs; @@ -74,15 +73,12 @@ public abstract class VSEditor implements ActionListener { editPanel = createEditPanel(); buttonPanel = createButtonPanel(); - final String keyStartsWith = "sim."; - boolean reversed = false; - - colorKeys = setToSortedVector(prefsToEdit.getColorKeySet(), keyStartsWith, reversed); - floatKeys = setToSortedVector(prefsToEdit.getFloatKeySet(), keyStartsWith, reversed); - integerKeys = setToSortedVector(prefsToEdit.getIntegerKeySet(), keyStartsWith, reversed); - longKeys = setToSortedVector(prefsToEdit.getLongKeySet(), keyStartsWith, reversed); - booleanKeys = setToSortedVector(prefsToEdit.getBooleanKeySet(), keyStartsWith, reversed); - stringKeys = setToSortedVector(prefsToEdit.getStringKeySet(), keyStartsWith, reversed); + colorKeys = filterKeys(prefsToEdit.getColorKeySet()); + floatKeys = filterKeys(prefsToEdit.getFloatKeySet()); + integerKeys = filterKeys(prefsToEdit.getIntegerKeySet()); + longKeys = filterKeys(prefsToEdit.getLongKeySet()); + booleanKeys = filterKeys(prefsToEdit.getBooleanKeySet()); + stringKeys = filterKeys(prefsToEdit.getStringKeySet()); colorFields = new HashMap(); floatFields = new HashMap(); integerFields = new HashMap(); @@ -90,27 +86,17 @@ public abstract class VSEditor implements ActionListener { booleanFields = new HashMap(); stringFields = new HashMap(); - addToEditPanelFront(editPanel, editTable); fillEditPanel(editPanel, editTable); - addToEditPanelLast(editPanel, editTable); } - private Vector setToSortedVector(Set set, String startsWith, boolean reversed) { - Vector vector = new Vector(); - - if (reversed) { - for (String elem : set) - if (!elem.startsWith(startsWith) && !elem.endsWith("!") && !elem.startsWith("keyevent")) - vector.add(elem); - } else { - for (String elem : set) - if (elem.startsWith(startsWith) && !elem.endsWith("!") && !elem.startsWith("keyevent")) - vector.add(elem); - } + private ArrayList filterKeys(Set set) { + ArrayList filtered = new ArrayList(); - Collections.sort(vector); + for (String elem : set) + if (!elem.startsWith("lang.") && !elem.startsWith("keyevent")) + filtered.add(elem); - return vector; + return filtered; } abstract protected void addToButtonPanelFront(JPanel buttonPanel); @@ -132,9 +118,6 @@ public abstract class VSEditor implements ActionListener { return buttonPanel; } - abstract protected void addToEditPanelFront(JPanel editPanel, VSEditorTable editTable); - abstract protected void addToEditPanelLast(JPanel editPanel, VSEditorTable editTable); - private JPanel createUnitPanel(Component comp, String key) { JPanel unitPanel = new JPanel(new GridBagLayout()); unitPanel.setBackground(Color.WHITE); @@ -169,6 +152,9 @@ public abstract class VSEditor implements ActionListener { } private void fillEditPanel(JPanel editPanel, VSEditorTable editTable) { + HashMap components = new HashMap(); + HashMap labels = new HashMap(); + for (String key : integerKeys) { String fullKey = VSPrefs.INTEGER_PREFIX + key; String descr = prefsToEdit.getDescription(fullKey); @@ -194,7 +180,9 @@ public abstract class VSEditor implements ActionListener { integerFields.put(key, valComboBox); valComboBox.setBorder(null); - editTable.addVariable(label, createUnitPanel(valComboBox, fullKey)); + + labels.put(fullKey, label); + components.put(fullKey, createUnitPanel(valComboBox, fullKey)); } final String activated = prefs.getString("lang.activated"); @@ -206,7 +194,9 @@ public abstract class VSEditor implements ActionListener { valField.setBackground(Color.WHITE); booleanFields.put(key, valField); valField.setBorder(null); - editTable.addVariable(label, createUnitPanel(valField, fullKey)); + + labels.put(fullKey, label); + components.put(fullKey, createUnitPanel(valField, fullKey)); } for (String key : longKeys) { @@ -224,7 +214,9 @@ public abstract class VSEditor implements ActionListener { valField.setText(""+prefsToEdit.getLong(key)); longFields.put(key, valField); valField.setBorder(null); - editTable.addVariable(label, createUnitPanel(valField, fullKey)); + + labels.put(fullKey, label); + components.put(fullKey, createUnitPanel(valField, fullKey)); } @@ -243,7 +235,8 @@ public abstract class VSEditor implements ActionListener { valField.setText(""+prefsToEdit.getFloat(key)); floatFields.put(key, valField); valField.setBorder(null); - editTable.addVariable(label, createUnitPanel(valField, fullKey)); + labels.put(fullKey, label); + components.put(fullKey, createUnitPanel(valField, fullKey)); } @@ -263,7 +256,7 @@ public abstract class VSEditor implements ActionListener { public void mouseClicked(MouseEvent e) { JFrame parentFrame = getFrame(); JFrame frame = new VSFrame( - prefs.getString("name") + " - " + + prefs.getString("lang.name") + " - " + prefs.getString( "lang.colorchooser"),parentFrame); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); @@ -278,7 +271,8 @@ public abstract class VSEditor implements ActionListener { }); colorFields.put(key, valField); valField.setBorder(null); - editTable.addVariable(label, valField); + labels.put(fullKey, label); + components.put(fullKey, valField); } for (String key : stringKeys) { @@ -296,8 +290,75 @@ public abstract class VSEditor implements ActionListener { valField.setText(prefsToEdit.getString(key)); stringFields.put(key, valField); valField.setBorder(null); - editTable.addVariable(label, createUnitPanel(valField, fullKey)); + labels.put(fullKey, label); + components.put(fullKey, createUnitPanel(valField, fullKey)); + } + + ArrayList fullKeys = new ArrayList(); + fullKeys.addAll(components.keySet()); + Collections.sort(fullKeys); + + boolean flag = false; + for (String fullKey : fullKeys) { + String key = fullKey.substring(fullKey.indexOf(' ')+1); + if (key.startsWith("sim.")) { + if (!flag) { + flag = true; + editTable.addSeparator(prefs.getString("lang.prefs.simulation")); + } + editTable.addVariable(labels.get(fullKey), components.get(fullKey)); + } + } + + flag = false; + for (String fullKey : fullKeys) { + String key = fullKey.substring(fullKey.indexOf(' ')+1); + if (key.startsWith("process.")) { + if (!flag) { + flag = true; + editTable.addSeparator(prefs.getString("lang.prefs.process")); + } + editTable.addVariable(labels.get(fullKey), components.get(fullKey)); + } + } + + flag = false; + for (String fullKey : fullKeys) { + String key = fullKey.substring(fullKey.indexOf(' ')+1); + if (key.startsWith("message.")) { + if (!flag) { + flag = true; + editTable.addSeparator(prefs.getString("lang.prefs.message")); + } + editTable.addVariable(labels.get(fullKey), components.get(fullKey)); + } + } + + flag = false; + for (String fullKey : fullKeys) { + String key = fullKey.substring(fullKey.indexOf(' ')+1); + if (key.startsWith("col.")) { + if (!flag) { + flag = true; + editTable.addSeparator(prefs.getString("lang.prefs.color")); + } + editTable.addVariable(labels.get(fullKey), components.get(fullKey)); + } } + + flag = false; + for (String fullKey : fullKeys) { + String key = fullKey.substring(fullKey.indexOf(' ')+1); + if (key.startsWith("div.")) { + if (!flag) { + flag = true; + editTable.addSeparator(prefs.getString("lang.prefs.diverse")); + } + editTable.addVariable(labels.get(fullKey), components.get(fullKey)); + } + } + + editTable.fireTableDataChanged(); } protected void resetEditPanel() { -- cgit v1.2.3