Changeset 16280 in josm for trunk/src/org


Ignore:
Timestamp:
2020-04-12T22:31:32+02:00 (5 years ago)
Author:
simon04
Message:

fix #19022 - PresetLink: allow to customize label text and UI position

Location:
trunk/src/org/openstreetmap/josm/gui/tagging/presets
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java

    r16060 r16280  
    2020import java.util.List;
    2121import java.util.Map;
     22import java.util.Objects;
    2223import java.util.Set;
    2324import java.util.concurrent.CompletableFuture;
     
    307308        PresetPanel p = new PresetPanel();
    308309        List<Link> l = new LinkedList<>();
    309         List<PresetLink> presetLink = new LinkedList<>();
    310310
    311311        final JPanel pp = new JPanel();
     
    336336        boolean presetInitiallyMatches = !selected.isEmpty() && selected.stream().allMatch(this);
    337337        JPanel items = new JPanel(new GridBagLayout());
     338        TaggingPresetItem previous = null;
    338339        for (TaggingPresetItem i : data) {
    339340            if (i instanceof Link) {
    340341                l.add((Link) i);
    341342                p.hasElements = true;
    342             } else if (i instanceof PresetLink) {
    343                 presetLink.add((PresetLink) i);
    344343            } else {
     344                if (i instanceof PresetLink) {
     345                    PresetLink link = (PresetLink) i;
     346                    if (!(previous instanceof PresetLink && Objects.equals(((PresetLink) previous).text, link.text))) {
     347                        items.add(link.createLabel(), GBC.eol().insets(0, 8, 0, 0));
     348                    }
     349                }
    345350                if (i.addToPanel(items, selected, presetInitiallyMatches)) {
    346351                    p.hasElements = true;
    347352                }
    348353            }
     354            previous = i;
    349355        }
    350356        p.add(items, GBC.eol().fill());
    351357        if (selected.isEmpty() && !supportsRelation()) {
    352358            GuiHelper.setEnabledRec(items, false);
    353         }
    354 
    355         // add PresetLink
    356         if (!presetLink.isEmpty()) {
    357             p.add(new JLabel(tr("Edit also …")), GBC.eol().insets(0, 8, 0, 0));
    358             for (PresetLink link : presetLink) {
    359                 link.addToPanel(p, selected, presetInitiallyMatches);
    360             }
    361359        }
    362360
  • trunk/src/org/openstreetmap/josm/gui/tagging/presets/items/PresetLink.java

    r13332 r16280  
    11// License: GPL. For details, see LICENSE file.
    22package org.openstreetmap.josm.gui.tagging.presets.items;
     3
     4import static org.openstreetmap.josm.tools.I18n.tr;
    35
    46import java.awt.event.MouseAdapter;
     
    1416import org.openstreetmap.josm.data.osm.Tag;
    1517import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
    16 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetItem;
    1718import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetLabel;
    1819import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
     
    2324 * @since 8863
    2425 */
    25 public class PresetLink extends TaggingPresetItem {
     26public class PresetLink extends TextItem {
    2627
    2728    static final class TaggingPresetMouseAdapter extends MouseAdapter {
     
    4041    /** The exact name of the preset to link to. Required. */
    4142    public String preset_name = ""; // NOSONAR
     43
     44    /**
     45     * Creates a label to be inserted aboive this link
     46     * @return a label
     47     */
     48    public JLabel createLabel() {
     49        initializeLocaleText(tr("Edit also …"));
     50        return new JLabel(locale_text);
     51    }
    4252
    4353    @Override
Note: See TracChangeset for help on using the changeset viewer.