Changeset 15565 in josm for trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
- Timestamp:
- 2019-12-08T14:35:57+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
r15376 r15565 28 28 import java.util.TreeSet; 29 29 import java.util.concurrent.atomic.AtomicBoolean; 30 import java.util.stream.Collectors; 30 31 31 32 import javax.swing.AbstractAction; 32 33 import javax.swing.JComponent; 33 34 import javax.swing.JLabel; 35 import javax.swing.JMenuItem; 34 36 import javax.swing.JPanel; 35 37 import javax.swing.JPopupMenu; … … 109 111 import org.openstreetmap.josm.tools.Logging; 110 112 import org.openstreetmap.josm.tools.Shortcut; 113 import org.openstreetmap.josm.tools.Territories; 111 114 import org.openstreetmap.josm.tools.Utils; 112 115 … … 172 175 private final transient PopupMenuHandler blankSpaceMenuHandler = new PopupMenuHandler(blankSpaceMenu); 173 176 177 private final List<JMenuItem> tagMenuTagInfoNatItems = new ArrayList<>(); 178 private final List<JMenuItem> membershipMenuTagInfoNatItems = new ArrayList<>(); 179 174 180 private final transient Map<String, Map<String, Integer>> valueCount = new TreeMap<>(); 175 181 /** … … 183 189 private final TaginfoAction taginfoAction = new TaginfoAction(tagTable, editHelper::getDataKey, editHelper::getDataValues, 184 190 membershipTable, x -> (IRelation<?>) membershipData.getValueAt(x, 0)); 191 private final Collection<TaginfoAction> taginfoNationalActions = new ArrayList<>(); 185 192 private final PasteValueAction pasteValueAction = new PasteValueAction(); 186 193 private final CopyValueAction copyValueAction = new CopyValueAction( … … 348 355 } 349 356 357 private void destroyTaginfoNationalActions() { 358 membershipMenuTagInfoNatItems.forEach(membershipMenu::remove); 359 membershipMenuTagInfoNatItems.clear(); 360 tagMenuTagInfoNatItems.forEach(tagMenu::remove); 361 tagMenuTagInfoNatItems.clear(); 362 taginfoNationalActions.forEach(JosmAction::destroy); 363 taginfoNationalActions.clear(); 364 } 365 366 private void setupTaginfoNationalActions(Collection<? extends IPrimitive> newSel) { 367 destroyTaginfoNationalActions(); 368 if (!newSel.isEmpty()) { 369 for (Entry<String, String> e : Territories.getNationalTaginfoUrls( 370 newSel.iterator().next().getBBox().getCenter()).entrySet()) { 371 taginfoNationalActions.add(new TaginfoAction(tagTable, editHelper::getDataKey, editHelper::getDataValues, 372 membershipTable, x -> (IRelation<?>) membershipData.getValueAt(x, 0), e.getValue(), e.getKey())); 373 } 374 membershipMenuTagInfoNatItems.addAll(taginfoNationalActions.stream().map(membershipMenu::add).collect(Collectors.toList())); 375 tagMenuTagInfoNatItems.addAll(taginfoNationalActions.stream().map(tagMenu::add).collect(Collectors.toList())); 376 } 377 } 378 350 379 /** 351 380 * Creates the popup menu @field membershipMenu and its launcher on membership table. … … 538 567 public void destroy() { 539 568 taginfoAction.destroy(); 569 destroyTaginfoNationalActions(); 540 570 super.destroy(); 541 571 Config.getPref().removeKeyPreferenceChangeListener("display.discardable-keys", preferenceListener); … … 558 588 // Ignore parameter as we do not want to operate always on real selection here, especially in draw mode 559 589 Collection<? extends IPrimitive> newSel = OsmDataManager.getInstance().getInProgressISelection(); 560 String selectedTag;590 int newSelSize = newSel.size(); 561 591 IRelation<?> selectedRelation = null; 562 selectedTag = editHelper.getChangedKey(); // select last added or last edited key by default592 String selectedTag = editHelper.getChangedKey(); // select last added or last edited key by default 563 593 if (selectedTag == null && tagTable.getSelectedRowCount() == 1) { 564 594 selectedTag = editHelper.getDataKey(tagTable.getSelectedRow()); … … 598 628 count += e1.getValue(); 599 629 } 600 if (count < newSel .size()) {601 e.getValue().put("", newSel .size()- count);630 if (count < newSelSize) { 631 e.getValue().put("", newSelSize - count); 602 632 } 603 633 tagData.addRow(new Object[]{e.getKey(), e.getValue()}); … … 655 685 pluginHook.setVisible(hasSelection); 656 686 687 setupTaginfoNationalActions(newSel); 657 688 autoresizeTagTable(); 658 689 … … 669 700 670 701 if (tagData.getRowCount() != 0 || membershipData.getRowCount() != 0) { 671 if (newSel .size()> 1) {702 if (newSelSize > 1) { 672 703 setTitle(tr("Objects: {2} / Tags: {0} / Memberships: {1}", 673 tagData.getRowCount(), membershipData.getRowCount(), newSel .size()));704 tagData.getRowCount(), membershipData.getRowCount(), newSelSize)); 674 705 } else { 675 706 setTitle(tr("Tags: {0} / Memberships: {1}",
Note:
See TracChangeset
for help on using the changeset viewer.