Changeset 7015 in josm for trunk/src/org/openstreetmap/josm/gui/tagging
- Timestamp:
- 2014-04-27T17:34:22+02:00 (10 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui/tagging
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java
r7005 r7015 618 618 } else { 619 619 // the objects have different values 620 JosmComboBox comboBox = new JosmComboBox(usage.values.toArray());620 JosmComboBox<String> comboBox = new JosmComboBox<>(usage.values.toArray(new String[0])); 621 621 comboBox.setEditable(true); 622 622 comboBox.setEditor(textField); … … 697 697 private static String getValue(Component comp) { 698 698 if (comp instanceof JosmComboBox) { 699 return ((JosmComboBox ) comp).getEditor().getItem().toString();699 return ((JosmComboBox<?>) comp).getEditor().getItem().toString(); 700 700 } else if (comp instanceof JosmTextField) { 701 701 return ((JosmTextField) comp).getText(); … … 1174 1174 1175 1175 public boolean editable = true; 1176 protected JosmComboBox combo;1176 protected JosmComboBox<PresetListEntry> combo; 1177 1177 public String length; 1178 1178 … … 1198 1198 lhm.put("", new PresetListEntry("")); 1199 1199 1200 combo = new JosmComboBox (lhm.values().toArray());1200 combo = new JosmComboBox<>(lhm.values().toArray(new PresetListEntry[0])); 1201 1201 component = combo; 1202 1202 combo.setRenderer(getListCellRenderer()); … … 1265 1265 @Override 1266 1266 protected void addToPanelAnchor(JPanel p, String def, boolean presetInitiallyMatches) { 1267 list = new ConcatenatingJList(delimiter, lhm.values().toArray( ));1267 list = new ConcatenatingJList(delimiter, lhm.values().toArray(new PresetListEntry[0])); 1268 1268 component = list; 1269 ListCellRenderer renderer = getListCellRenderer();1269 ListCellRenderer<PresetListEntry> renderer = getListCellRenderer(); 1270 1270 list.setCellRenderer(renderer); 1271 1271 … … 1315 1315 * string (extracted from TaggingPreset) 1316 1316 */ 1317 private static class ConcatenatingJList extends JList {1317 private static class ConcatenatingJList extends JList<PresetListEntry> { 1318 1318 private String delimiter; 1319 public ConcatenatingJList(String del, Object[] o) {1319 public ConcatenatingJList(String del, PresetListEntry[] o) { 1320 1320 super(o); 1321 1321 delimiter = del; … … 1328 1328 String s = o.toString(); 1329 1329 TreeSet<String> parts = new TreeSet<>(Arrays.asList(s.split(delimiter))); 1330 ListModel lm = getModel();1330 ListModel<PresetListEntry> lm = getModel(); 1331 1331 int[] intParts = new int[lm.getSize()]; 1332 1332 int j = 0; 1333 1333 for (int i = 0; i < lm.getSize(); i++) { 1334 if (parts.contains(( ((PresetListEntry)lm.getElementAt(i)).value))) {1334 if (parts.contains((lm.getElementAt(i).value))) { 1335 1335 intParts[j++]=i; 1336 1336 } … … 1345 1345 1346 1346 public String getSelectedItem() { 1347 ListModel lm = getModel();1347 ListModel<PresetListEntry> lm = getModel(); 1348 1348 int[] si = getSelectedIndices(); 1349 1349 StringBuilder builder = new StringBuilder(); … … 1352 1352 builder.append(delimiter); 1353 1353 } 1354 builder.append( ((PresetListEntry)lm.getElementAt(si[i])).value);1354 builder.append(lm.getElementAt(si[i]).value); 1355 1355 } 1356 1356 return builder.toString(); -
trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetSelector.java
r7005 r7015 82 82 private static class ResultListCellRenderer extends DefaultListCellRenderer { 83 83 @Override 84 public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, 85 boolean cellHasFocus) { 84 public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 86 85 JLabel result = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); 87 86 TaggingPreset tp = (TaggingPreset)value; -
trunk/src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletingComboBox.java
r7001 r7015 30 30 * @author guilhem.bonnefille@gmail.com 31 31 */ 32 public class AutoCompletingComboBox extends JosmComboBox {32 public class AutoCompletingComboBox extends JosmComboBox<AutoCompletionListItem> { 33 33 34 34 private boolean autocompleteEnabled = true; … … 43 43 */ 44 44 class AutoCompletingComboBoxDocument extends PlainDocument { 45 private JosmComboBox comboBox;45 private JosmComboBox<AutoCompletionListItem> comboBox; 46 46 private boolean selecting = false; 47 47 48 public AutoCompletingComboBoxDocument(final JosmComboBox comboBox) {48 public AutoCompletingComboBoxDocument(final JosmComboBox<AutoCompletionListItem> comboBox) { 49 49 this.comboBox = comboBox; 50 50 } … … 114 114 } 115 115 } 116 JTextComponent editor = (JTextComponent)comboBox.getEditor().getEditorComponent();116 JTextComponent editorComponent = (JTextComponent)comboBox.getEditor().getEditorComponent(); 117 117 // save unix system selection (middle mouse paste) 118 118 Clipboard sysSel = Toolkit.getDefaultToolkit().getSystemSelection(); 119 119 if(sysSel != null) { 120 120 Transferable old = sysSel.getContents(null); 121 editor .select(start, end);121 editorComponent.select(start, end); 122 122 sysSel.setContents(old, null); 123 123 } else { 124 editor .select(start, end);124 editorComponent.select(start, end); 125 125 } 126 126 } … … 133 133 134 134 private Object lookupItem(String pattern, boolean match) { 135 ComboBoxModel model = comboBox.getModel();135 ComboBoxModel<AutoCompletionListItem> model = comboBox.getModel(); 136 136 AutoCompletionListItem bestItem = null; 137 137 for (int i = 0, n = model.getSize(); i < n; i++) { … … 153 153 */ 154 154 public AutoCompletingComboBox() { 155 this( JosmComboBox.DEFAULT_PROTOTYPE_DISPLAY_VALUE);155 this("Foo"); 156 156 } 157 157 … … 165 165 super(new AutoCompletionListItem(prototype)); 166 166 setRenderer(new AutoCompleteListCellRenderer()); 167 final JTextComponent editor = (JTextComponent) this.getEditor().getEditorComponent();168 editor .setDocument(new AutoCompletingComboBoxDocument(this));169 editor .addFocusListener(167 final JTextComponent editorComponent = (JTextComponent) this.getEditor().getEditorComponent(); 168 editorComponent.setDocument(new AutoCompletingComboBoxDocument(this)); 169 editorComponent.addFocusListener( 170 170 new FocusListener() { 171 171 @Override … … 178 178 if(sysSel != null) { 179 179 Transferable old = sysSel.getContents(null); 180 editor .selectAll();180 editorComponent.selectAll(); 181 181 sysSel.setContents(old, null); 182 182 } else { 183 editor .selectAll();183 editorComponent.selectAll(); 184 184 } 185 185 } … … 188 188 } 189 189 190 public void setMaxTextLength(int length) 191 { 190 public void setMaxTextLength(int length) { 192 191 this.maxTextLength = length; 193 192 } 194 193 195 194 /** 196 * Convert the selected item into a String 197 * that can be edited in the editor component. 195 * Convert the selected item into a String that can be edited in the editor component. 198 196 * 199 * @param editor the editor197 * @param cbEditor the editor 200 198 * @param item excepts AutoCompletionListItem, String and null 201 199 */ 202 @Override public void configureEditor(ComboBoxEditor editor, Object item) { 200 @Override 201 public void configureEditor(ComboBoxEditor cbEditor, Object item) { 203 202 if (item == null) { 204 editor.setItem(null);203 cbEditor.setItem(null); 205 204 } else if (item instanceof String) { 206 editor.setItem(item);205 cbEditor.setItem(item); 207 206 } else if (item instanceof AutoCompletionListItem) { 208 editor.setItem(((AutoCompletionListItem)item).getValue());207 cbEditor.setItem(((AutoCompletionListItem)item).getValue()); 209 208 } else 210 209 throw new IllegalArgumentException(); … … 215 214 * @param item excepts AutoCompletionListItem, String and null 216 215 */ 217 @Override public void setSelectedItem(Object item) { 216 @Override 217 public void setSelectedItem(Object item) { 218 218 if (item == null) { 219 219 super.setSelectedItem(null); … … 239 239 */ 240 240 public void setPossibleItems(Collection<String> elems) { 241 DefaultComboBoxModel model = (DefaultComboBoxModel)this.getModel();241 DefaultComboBoxModel<AutoCompletionListItem> model = (DefaultComboBoxModel<AutoCompletionListItem>)this.getModel(); 242 242 Object oldValue = this.getEditor().getItem(); // Do not use getSelectedItem(); (fix #8013) 243 243 model.removeAllElements(); … … 245 245 model.addElement(new AutoCompletionListItem(elem, AutoCompletionItemPriority.UNKNOWN)); 246 246 } 247 // disable autocomplete to prevent unnecessary actions in 248 // AutoCompletingComboBoxDocument#insertString 247 // disable autocomplete to prevent unnecessary actions in AutoCompletingComboBoxDocument#insertString 249 248 autocompleteEnabled = false; 250 249 this.getEditor().setItem(oldValue); // Do not use setSelectedItem(oldValue); (fix #8013) … … 256 255 */ 257 256 public void setPossibleACItems(Collection<AutoCompletionListItem> elems) { 258 DefaultComboBoxModel model = (DefaultComboBoxModel)this.getModel();257 DefaultComboBoxModel<AutoCompletionListItem> model = (DefaultComboBoxModel<AutoCompletionListItem>)this.getModel(); 259 258 Object oldValue = getSelectedItem(); 260 259 Object editorOldValue = this.getEditor().getItem(); … … 266 265 this.getEditor().setItem(editorOldValue); 267 266 } 268 269 267 270 268 protected boolean isAutocompleteEnabled() {
Note:
See TracChangeset
for help on using the changeset viewer.