- Timestamp:
- 2009-05-05T16:51:53+02:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/preferences/AdvancedPreference.java
r1180 r1576 12 12 import java.awt.event.MouseEvent; 13 13 import java.util.Map; 14 import java.util.TreeMap; 14 15 import java.util.TreeSet; 15 16 import java.util.Map.Entry; … … 23 24 import javax.swing.JTable; 24 25 import javax.swing.JTextField; 26 import javax.swing.event.DocumentEvent; 27 import javax.swing.event.DocumentListener; 25 28 import javax.swing.table.DefaultTableCellRenderer; 26 29 import javax.swing.table.DefaultTableModel; … … 34 37 private Map<String,String> defaults; 35 38 private DefaultTableModel model; 39 protected Map<String, String> data; 40 protected JTextField txtFilter; 36 41 37 42 public void addGui(final PreferenceDialog gui) { 38 43 JPanel p = gui.createPreferenceTab("advanced", tr("Advanced Preferences"), 39 44 tr("Setting Preference entries directly. Use with caution!"), false); 45 46 txtFilter = new JTextField(); 47 JLabel lbFilter = new JLabel(tr("Search: ")); 48 lbFilter.setLabelFor(txtFilter); 49 p.add(lbFilter); 50 p.add(txtFilter, GBC.eol().fill(GBC.HORIZONTAL)); 51 txtFilter.getDocument().addDocumentListener(new DocumentListener(){ 52 public void changedUpdate(DocumentEvent e) { 53 action(); 54 } 55 56 public void insertUpdate(DocumentEvent e) { 57 action(); 58 } 59 60 public void removeUpdate(DocumentEvent e) { 61 action(); 62 } 63 64 private void action() { 65 dataToModel(); 66 } 67 }); 40 68 41 69 model = new DefaultTableModel(new String[]{tr("Key"), tr("Value")},0) { … … 73 101 orig.remove("osm-server.password"); 74 102 defaults.remove("osm-server.password"); 103 prepareData(); 104 dataToModel(); 105 106 JButton add = new JButton(tr("Add")); 107 p.add(Box.createHorizontalGlue(), GBC.std().fill(GBC.HORIZONTAL)); 108 p.add(add, GBC.std().insets(0,5,0,0)); 109 add.addActionListener(new ActionListener(){ 110 public void actionPerformed(ActionEvent e) { 111 addPreference(gui); 112 } 113 }); 114 115 JButton edit = new JButton(tr("Edit")); 116 p.add(edit, GBC.std().insets(5,5,5,0)); 117 edit.addActionListener(new ActionListener(){ 118 public void actionPerformed(ActionEvent e) { 119 editPreference(gui, list); 120 } 121 }); 122 123 JButton delete = new JButton(tr("Delete")); 124 p.add(delete, GBC.std().insets(0,5,0,0)); 125 delete.addActionListener(new ActionListener(){ 126 public void actionPerformed(ActionEvent e) { 127 removePreference(gui, list); 128 } 129 }); 130 131 list.addMouseListener(new MouseAdapter(){ 132 @Override public void mouseClicked(MouseEvent e) { 133 if (e.getClickCount() == 2) 134 editPreference(gui, list); 135 } 136 }); 137 } 138 139 private void prepareData() { 75 140 TreeSet<String> ts = new TreeSet<String>(orig.keySet()); 76 141 for (String s : defaults.keySet()) … … 79 144 ts.add(s); 80 145 } 81 146 data = new TreeMap<String, String>(); 82 147 for (String s : ts) 83 148 { 84 149 String val = Main.pref.get(s); 85 150 if(val == null) val = ""; 86 model.addRow(new String[]{s, val}); 87 } 88 89 JButton add = new JButton(tr("Add")); 90 p.add(Box.createHorizontalGlue(), GBC.std().fill(GBC.HORIZONTAL)); 91 p.add(add, GBC.std().insets(0,5,0,0)); 92 add.addActionListener(new ActionListener(){ 93 public void actionPerformed(ActionEvent e) { 94 JPanel p = new JPanel(new GridBagLayout()); 95 p.add(new JLabel(tr("Key")), GBC.std().insets(0,0,5,0)); 96 JTextField key = new JTextField(10); 97 JTextField value = new JTextField(10); 98 p.add(key, GBC.eop().insets(5,0,0,0).fill(GBC.HORIZONTAL)); 99 p.add(new JLabel(tr("Value")), GBC.std().insets(0,0,5,0)); 100 p.add(value, GBC.eol().insets(5,0,0,0).fill(GBC.HORIZONTAL)); 101 int answer = JOptionPane.showConfirmDialog(gui, p, tr("Enter a new key/value pair"), JOptionPane.OK_CANCEL_OPTION); 102 if (answer == JOptionPane.OK_OPTION) 103 model.addRow(new String[]{key.getText(), value.getText()}); 104 } 105 }); 106 107 JButton edit = new JButton(tr("Edit")); 108 p.add(edit, GBC.std().insets(5,5,5,0)); 109 edit.addActionListener(new ActionListener(){ 110 public void actionPerformed(ActionEvent e) { 111 edit(gui, list); 112 } 113 }); 114 115 JButton delete = new JButton(tr("Delete")); 116 p.add(delete, GBC.std().insets(0,5,0,0)); 117 delete.addActionListener(new ActionListener(){ 118 public void actionPerformed(ActionEvent e) { 119 if (list.getSelectedRowCount() == 0) { 120 JOptionPane.showMessageDialog(gui, tr("Please select the row to delete.")); 121 return; 122 } 123 for(int row: list.getSelectedRows()) 124 model.setValueAt("", row, 1); 125 } 126 }); 127 128 list.addMouseListener(new MouseAdapter(){ 129 @Override public void mouseClicked(MouseEvent e) { 130 if (e.getClickCount() == 2) 131 edit(gui, list); 132 } 133 }); 151 data.put(s, val); 152 } 153 } 154 155 private void dataToModel() { 156 while (model.getRowCount() > 0) { 157 model.removeRow(0); 158 } 159 for (String prefKey : data.keySet()) { 160 String prefValue = data.get(prefKey); 161 if (prefKey.contains(txtFilter.getText()) || 162 prefValue.contains(txtFilter.getText())) { 163 model.addRow(new String[] {prefKey, prefValue}); 164 } 165 } 134 166 } 135 167 136 168 public boolean ok() { 137 for ( int i = 0; i < model.getRowCount(); ++i) {138 String value = model.getValueAt(i,1).toString();169 for (String key : data.keySet()) { 170 String value = data.get(key); 139 171 if(value.length() != 0) 140 172 { 141 String key = model.getValueAt(i,0).toString();142 173 String origValue = orig.get(key); 143 174 if (origValue == null || !origValue.equals(value)) … … 152 183 153 184 154 private void edit(final PreferenceDialog gui, final JTable list) { 185 private void editPreference(final PreferenceDialog gui, final JTable list) { 155 186 if (list.getSelectedRowCount() != 1) { 156 187 JOptionPane.showMessageDialog(gui, tr("Please select the row to edit.")); … … 158 189 } 159 190 String v = JOptionPane.showInputDialog(tr("New value for {0}", model.getValueAt(list.getSelectedRow(), 0)), model.getValueAt(list.getSelectedRow(), 1)); 160 if (v != null) 191 if (v != null) { 192 data.put((String) model.getValueAt(list.getSelectedRow(), 0), v); 161 193 model.setValueAt(v, list.getSelectedRow(), 1); 194 } 195 } 196 197 private void removePreference(final PreferenceDialog gui, final JTable list) { 198 if (list.getSelectedRowCount() == 0) { 199 JOptionPane.showMessageDialog(gui, tr("Please select the row to delete.")); 200 return; 201 } 202 for(int row: list.getSelectedRows()) { 203 data.put((String) model.getValueAt(row, 0), ""); 204 model.setValueAt("", row, 1); 205 } 206 } 207 208 private void addPreference(final PreferenceDialog gui) { 209 JPanel p = new JPanel(new GridBagLayout()); 210 p.add(new JLabel(tr("Key")), GBC.std().insets(0,0,5,0)); 211 JTextField key = new JTextField(10); 212 JTextField value = new JTextField(10); 213 p.add(key, GBC.eop().insets(5,0,0,0).fill(GBC.HORIZONTAL)); 214 p.add(new JLabel(tr("Value")), GBC.std().insets(0,0,5,0)); 215 p.add(value, GBC.eol().insets(5,0,0,0).fill(GBC.HORIZONTAL)); 216 int answer = JOptionPane.showConfirmDialog(gui, p, tr("Enter a new key/value pair"), JOptionPane.OK_CANCEL_OPTION); 217 if (answer == JOptionPane.OK_OPTION) { 218 data.put(key.getText(), value.getText()); 219 model.addRow(new String[]{key.getText(), value.getText()}); 220 } 162 221 } 163 222 }
Note:
See TracChangeset
for help on using the changeset viewer.