Changeset 18173 in josm for trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
- Timestamp:
- 2021-08-24T02:43:50+02:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
r17168 r18173 88 88 import org.openstreetmap.josm.gui.MainApplication; 89 89 import org.openstreetmap.josm.gui.datatransfer.ClipboardUtils; 90 import org.openstreetmap.josm.gui.tagging.ac.AutoComp letingComboBox;90 import org.openstreetmap.josm.gui.tagging.ac.AutoCompComboBox; 91 91 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager; 92 92 import org.openstreetmap.josm.gui.util.GuiHelper; … … 400 400 401 401 /** 402 * Returns the edited item with whitespaces removed 403 * @param cb the combobox 404 * @return the edited item with whitespaces removed 405 * @since 18173 406 */ 407 public static String getEditItem(AutoCompComboBox<AutoCompletionItem> cb) { 408 return Utils.removeWhiteSpaces(cb.getEditor().getItem().toString()); 409 } 410 411 /** 412 * Returns the selected item or the edited item as string 413 * @param cb the combobox 414 * @return the selected item or the edited item as string 415 * @since 18173 416 */ 417 public static String getSelectedOrEditItem(AutoCompComboBox<AutoCompletionItem> cb) { 418 final Object selectedItem = cb.getSelectedItem(); 419 if (selectedItem != null) 420 return selectedItem.toString(); 421 return getEditItem(cb); 422 } 423 424 /** 402 425 * Warns user about a key being overwritten. 403 426 * @param action The action done by the user. Must state what key is changed … … 476 499 List<AutoCompletionItem> keyList = autocomplete.getTagKeys(DEFAULT_AC_ITEM_COMPARATOR); 477 500 478 keys = new AutoCompletingComboBox(key); 479 keys.setPossibleAcItems(keyList); 501 keys = new AutoCompComboBox<>(); 502 keys.getModel().setComparator(Comparator.naturalOrder()); // according to Comparable 503 keys.setPrototypeDisplayValue(new AutoCompletionItem(key)); 480 504 keys.setEditable(true); 505 keys.getModel().addAllElements(keyList); 481 506 keys.setSelectedItem(key); 482 507 … … 490 515 final String selection = m.size() != 1 ? tr("<different>") : m.entrySet().iterator().next().getKey(); 491 516 492 values = new AutoCompletingComboBox(selection); 517 values = new AutoCompComboBox<>(); 518 values.getModel().setComparator(Comparator.naturalOrder()); 519 values.setPrototypeDisplayValue(new AutoCompletionItem(selection)); 493 520 values.setRenderer(cellRenderer); 494 495 521 values.setEditable(true); 496 values. setPossibleAcItems(valueList);522 values.getModel().addAllElements(valueList); 497 523 values.setSelectedItem(selection); 498 524 values.getEditor().setItem(selection); 525 499 526 p.add(Box.createVerticalStrut(5), GBC.eol()); 500 527 p.add(new JLabel(tr("Value")), GBC.std()); … … 522 549 @Override 523 550 public void performTagEdit() { 524 String value = values.getEditItem();551 String value = getEditItem(values); 525 552 value = Normalizer.normalize(value, Normalizer.Form.NFC); 526 553 if (value.isEmpty()) { 527 554 value = null; // delete the key 528 555 } 529 String newkey = keys.getEditItem();556 String newkey = getEditItem(keys); 530 557 newkey = Normalizer.normalize(newkey, Normalizer.Form.NFC); 531 558 if (newkey.isEmpty()) { … … 574 601 575 602 protected abstract class AbstractTagsDialog extends ExtendedDialog { 576 protected AutoComp letingComboBoxkeys;577 protected AutoComp letingComboBoxvalues;603 protected AutoCompComboBox<AutoCompletionItem> keys; 604 protected AutoCompComboBox<AutoCompletionItem> values; 578 605 579 606 AbstractTagsDialog(Component parent, String title, String... buttonTexts) { … … 621 648 } 622 649 623 private void selectACComboBoxSavingUnixBuffer(AutoComp letingComboBoxcb) {650 private void selectACComboBoxSavingUnixBuffer(AutoCompComboBox<AutoCompletionItem> cb) { 624 651 // select combobox with saving unix system selection (middle mouse paste) 625 652 Clipboard sysSel = ClipboardUtils.getSystemSelection(); … … 667 694 && IntStream.range(0, size).allMatch(i -> Objects.equals(currentModel.getElementAt(i), correctItems.get(i))); 668 695 if (!valuesOK) { 669 values.setPossibleAcItems(correctItems); 696 values.getModel().removeAllElements(); 697 values.getModel().addAllElements(correctItems); 670 698 } 671 699 if (!Objects.equals(key, objKey)) { … … 688 716 return; 689 717 } 690 buttons.get(0).setIcon(findIcon( keys.getSelectedOrEditItem(), values.getSelectedOrEditItem())718 buttons.get(0).setIcon(findIcon(getSelectedOrEditItem(keys), getSelectedOrEditItem(values)) 691 719 .orElse(ImageProvider.get("ok", ImageProvider.ImageSizes.LARGEICON))); 692 720 } … … 732 760 733 761 mainPanel = new JPanel(new GridBagLayout()); 734 keys = new AutoCompletingComboBox(); 735 values = new AutoCompletingComboBox(); 762 keys = new AutoCompComboBox<>(); 763 values = new AutoCompComboBox<>(); 764 keys.getModel().setComparator(Comparator.naturalOrder()); // according to Comparable 765 values.getModel().setComparator(Comparator.naturalOrder()); 766 keys.setPrototypeDisplayValue(new AutoCompletionItem("dummy")); 767 values.setPrototypeDisplayValue(new AutoCompletionItem("dummy")); 736 768 keys.setAutocompleteEnabled(AUTOCOMPLETE_KEYS.get()); 737 769 values.setAutocompleteEnabled(AUTOCOMPLETE_VALUES.get()); … … 748 780 keyList.removeIf(item -> containsDataKey(item.getValue())); 749 781 750 keys.setPossibleAcItems(keyList); 782 keys.getModel().removeAllElements(); 783 keys.getModel().addAllElements(keyList); 751 784 keys.setEditable(true); 752 785 … … 939 972 @Override 940 973 public void actionPerformed(ActionEvent e) { 941 keys.setSelectedItem(t.getKey() , true);974 keys.setSelectedItem(t.getKey()); 942 975 // fix #7951, #8298 - update list of values before setting value (?) 943 976 focus.focusGained(null); 944 values.setSelectedItem(t.getValue() , true);977 values.setSelectedItem(t.getValue()); 945 978 selectValuesCombobox(); 946 979 } … … 1094 1127 */ 1095 1128 public final void performTagAdding() { 1096 String key = keys.getEditItem();1097 String value = values.getEditItem();1129 String key = getEditItem(keys); 1130 String value = getEditItem(values); 1098 1131 if (key.isEmpty() || value.isEmpty()) 1099 1132 return;
Note:
See TracChangeset
for help on using the changeset viewer.