Orients adding properties
From: <>
---
.../josm/gui/dialogs/PropertiesDialog.java | 39 +++++++++++++++++++----
1 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java b/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
index 80ee10a..36e9f58 100644
--- a/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
+++ b/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
@@ -23,6 +23,7 @@ import java.util.Vector;
import java.util.Map.Entry;
import javax.swing.Box;
+import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
@@ -177,20 +178,44 @@ public class PropertiesDialog extends ToggleDialog implements SelectionChangedLi
JPanel p = new JPanel(new BorderLayout());
p.add(new JLabel(""+trn("This will change {0} object.","This will change {0} objects.", sel.size(),sel.size())+"
"+tr("Please select a key")),
BorderLayout.NORTH);
- TreeSet allKeys = new TreeSet();
- for (OsmPrimitive osm : Main.ds.allNonDeletedPrimitives())
- allKeys.addAll(osm.keySet());
+ final TreeMap> allData = new TreeMap>();
+ for (OsmPrimitive osm : Main.ds.allNonDeletedPrimitives()) {
+ for (String key : osm.keySet()) {
+ TreeSet values = null;
+ if (allData.containsKey(key))
+ values = allData.get(key);
+ else {
+ values = new TreeSet();
+ allData.put(key, values);
+ }
+ values.add(osm.get(key));
+ }
+ }
for (int i = 0; i < data.getRowCount(); ++i)
- allKeys.remove(data.getValueAt(i, 0));
- final JComboBox keys = new JComboBox(new Vector(allKeys));
+ allData.remove(data.getValueAt(i, 0));
+ final JComboBox keys = new JComboBox(new Vector(allData.keySet()));
keys.setEditable(true);
p.add(keys, BorderLayout.CENTER);
JPanel p2 = new JPanel(new BorderLayout());
p.add(p2, BorderLayout.SOUTH);
p2.add(new JLabel(tr("Please select a value")), BorderLayout.NORTH);
- final JTextField values = new JTextField();
+ final JComboBox values = new JComboBox();
+ values.setEditable(true);
p2.add(values, BorderLayout.CENTER);
+
+ ActionListener link = new ActionListener() {
+
+ public void actionPerformed(ActionEvent e) {
+ String key = keys.getEditor().getItem().toString();
+ Vector newValues = new Vector(allData.get(key));
+ values.setModel(new DefaultComboBoxModel(newValues));
+
+ }
+
+ };
+ keys.addActionListener(link);
+
JOptionPane pane = new JOptionPane(p, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION){
@Override public void selectInitialValue() {
keys.requestFocusInWindow();
@@ -201,7 +226,7 @@ public class PropertiesDialog extends ToggleDialog implements SelectionChangedLi
if (!Integer.valueOf(JOptionPane.OK_OPTION).equals(pane.getValue()))
return;
String key = keys.getEditor().getItem().toString();
- String value = values.getText();
+ String value = values.getEditor().getItem().toString();
if (value.equals(""))
return;
Main.main.editLayer().add(new ChangePropertyCommand(sel, key, value));