Ticket #21227: 21227.patch

File 21227.patch, 26.2 KB (added by marcello@…, 4 years ago)

[PATCH] in relation editor filter autocompletion roles according to relation type

  • src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java

     
    2929import java.util.EnumSet;
    3030import java.util.List;
    3131import java.util.Set;
     32import java.util.TreeSet;
    3233import java.util.stream.Collectors;
    3334
    3435import javax.swing.AbstractAction;
     
    5859import org.openstreetmap.josm.data.osm.Relation;
    5960import org.openstreetmap.josm.data.osm.RelationMember;
    6061import org.openstreetmap.josm.data.osm.Tag;
     62import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem;
    6163import org.openstreetmap.josm.data.validation.tests.RelationChecker;
    6264import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
    6365import org.openstreetmap.josm.gui.MainApplication;
     
    98100import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    99101import org.openstreetmap.josm.gui.tagging.TagEditorModel;
    100102import org.openstreetmap.josm.gui.tagging.TagEditorPanel;
    101 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
    102 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
     103import org.openstreetmap.josm.gui.tagging.ac.AutoCompEvent;
     104import org.openstreetmap.josm.gui.tagging.ac.AutoCompListener;
     105import org.openstreetmap.josm.gui.tagging.ac.AutoCompTextField;
    103106import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
    104107import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
    105108import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetHandler;
     
    117120 * This dialog is for editing relations.
    118121 * @since 343
    119122 */
    120 public class GenericRelationEditor extends RelationEditor implements CommandQueueListener {
     123public class GenericRelationEditor extends RelationEditor implements AutoCompListener, CommandQueueListener {
    121124    /** the tag table and its model */
    122125    private final TagEditorPanel tagEditorPanel;
    123126    private final ReferringRelationsBrowser referrerBrowser;
     
    131134    private final SelectionTable selectionTable;
    132135    private final SelectionTableModel selectionTableModel;
    133136
    134     private final AutoCompletingTextField tfRole;
     137    private final AutoCompletionManager manager;
     138    private final AutoCompTextField<AutoCompletionItem> tfRole;
    135139
    136140    /**
    137141     * the menu item in the windows menu. Required to properly hide on dialog close.
     
    216220        populateModels(relation);
    217221        tagEditorPanel.getModel().ensureOneTag();
    218222
     223        manager = AutoCompletionManager.of(this.getLayer().data);
     224
    219225        // setting up the member table
    220         memberTable = new MemberTable(getLayer(), getRelation(), memberTableModel);
     226        memberTable = new MemberTable(getLayer(), this, memberTableModel);
    221227        memberTable.addMouseListener(new MemberTableDblClickAdapter());
    222228        memberTableModel.addMemberModelListener(memberTable);
    223229
     
    226232        selectionTable.setRowHeight(ce.getEditor().getPreferredSize().height);
    227233
    228234        LeftButtonToolbar leftButtonToolbar = new LeftButtonToolbar(new RelationEditorActionAccess());
    229         tfRole = buildRoleTextField(this);
     235        tfRole = buildRoleTextField();
     236        tfRole.addAutoCompListener(this);
    230237
    231238        JSplitPane pane = buildSplitPane(
    232239                buildTagEditorPanel(tagEditorPanel),
     
    446453    }
    447454
    448455    /**
    449      * builds the role text field
    450      * @param re relation editor
     456     * builds a role text field
    451457     * @return the role text field
    452458     */
    453     protected static AutoCompletingTextField buildRoleTextField(final IRelationEditor re) {
    454         final AutoCompletingTextField tfRole = new AutoCompletingTextField(10);
     459    protected static AutoCompTextField<AutoCompletionItem> buildRoleTextField() {
     460        final AutoCompTextField<AutoCompletionItem> tfRole = new AutoCompTextField<>(10);
    455461        tfRole.setToolTipText(tr("Enter a role and apply it to the selected relation members"));
    456462        tfRole.addFocusListener(new FocusAdapter() {
    457463            @Override
     
    459465                tfRole.selectAll();
    460466            }
    461467        });
    462         tfRole.setAutoCompletionList(new AutoCompletionList());
    463         tfRole.addFocusListener(
    464                 new FocusAdapter() {
    465                     @Override
    466                     public void focusGained(FocusEvent e) {
    467                         AutoCompletionList list = tfRole.getAutoCompletionList();
    468                         if (list != null) {
    469                             list.clear();
    470                             AutoCompletionManager.of(re.getLayer().data).populateWithMemberRoles(list, re.getRelation());
    471                         }
    472                     }
    473                 }
    474         );
    475468        tfRole.setText(Config.getPref().get("relation.editor.generic.lastrole", ""));
    476469        return tfRole;
    477470    }
     
    10391032        }
    10401033
    10411034        @Override
    1042         public AutoCompletingTextField getTextFieldRole() {
     1035        public AutoCompTextField<AutoCompletionItem> getTextFieldRole() {
    10431036            return tfRole;
    10441037        }
    1045 
    10461038    }
    10471039
    10481040    @Override
     
    10541046            applyAction.updateEnabledState();
    10551047        }
    10561048    }
     1049
     1050    @Override
     1051    @SuppressWarnings("unchecked")
     1052    public void autoCompBefore(AutoCompEvent e) {
     1053        AutoCompTextField<AutoCompletionItem> tf = (AutoCompTextField<AutoCompletionItem>) e.getSource();
     1054        Set<String> currentRoles = new TreeSet<>();
     1055        for (int i = 0; i < memberTableModel.getRowCount(); ++i) {
     1056            String role = memberTableModel.getValue(i).getRole();
     1057            if (!role.isEmpty())
     1058                currentRoles.add(role);
     1059        }
     1060        tf.getModel().removeAllElements();
     1061        tf.getModel().addAllElements(manager.getRolesForRelation(currentRoles, tagEditorPanel.getModel().getTags()));
     1062    }
     1063
     1064    @Override
     1065    public void autoCompPerformed(AutoCompEvent e) {
     1066        // Not interested
     1067    }
    10571068}
  • src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java

     
    99import javax.swing.JTable;
    1010import javax.swing.table.TableCellEditor;
    1111
    12 import org.openstreetmap.josm.data.osm.Relation;
    13 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
    14 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
    15 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
     12import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem;
     13import org.openstreetmap.josm.gui.tagging.ac.AutoCompListener;
     14import org.openstreetmap.josm.gui.tagging.ac.AutoCompTextField;
    1615
    1716/**
    1817 * The {@link CellEditor} for the role cell in the table. Supports autocompletion.
    1918 */
    2019public class MemberRoleCellEditor extends AbstractCellEditor implements TableCellEditor {
    21     private final AutoCompletingTextField editor;
    22     private final AutoCompletionManager autoCompletionManager;
    23     private final transient Relation relation;
     20    private final AutoCompTextField<AutoCompletionItem> editor;
    2421
    25     /** user input is matched against this list of auto completion items */
    26     private final AutoCompletionList autoCompletionList;
    27 
    2822    /**
    2923     * Constructs a new {@code MemberRoleCellEditor}.
    30      * @param autoCompletionManager the auto completion manager. Must not be null
    31      * @param relation the relation. Can be null
     24     * @param listener the autocompletion listener
    3225     * @since 13675
    3326     */
    34     public MemberRoleCellEditor(AutoCompletionManager autoCompletionManager, Relation relation) {
    35         this.autoCompletionManager = autoCompletionManager;
    36         this.relation = relation;
    37         editor = new AutoCompletingTextField(0, false);
     27    public MemberRoleCellEditor(AutoCompListener listener) {
     28        editor = new AutoCompTextField<>(0, false);
    3829        editor.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
    39         autoCompletionList = new AutoCompletionList();
    40         editor.setAutoCompletionList(autoCompletionList);
     30        editor.addAutoCompListener(listener);
    4131    }
    4232
    4333    @Override
    4434    public Component getTableCellEditorComponent(JTable table,
    4535            Object value, boolean isSelected, int row, int column) {
    46 
    4736        String role = (String) value;
    4837        editor.setText(role);
    49         autoCompletionList.clear();
    50         autoCompletionManager.populateWithMemberRoles(autoCompletionList, relation);
    5138        return editor;
    5239    }
    5340
     
    6047     * Returns the edit field for this cell editor.
    6148     * @return the edit field for this cell editor
    6249     */
    63     public AutoCompletingTextField getEditor() {
     50    public AutoCompTextField<AutoCompletionItem> getEditor() {
    6451        return editor;
    6552    }
    6653}
  • src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java

     
    2727import org.openstreetmap.josm.actions.HistoryInfoAction;
    2828import org.openstreetmap.josm.actions.ZoomToAction;
    2929import org.openstreetmap.josm.data.osm.OsmPrimitive;
    30 import org.openstreetmap.josm.data.osm.Relation;
    3130import org.openstreetmap.josm.data.osm.RelationMember;
    3231import org.openstreetmap.josm.data.osm.Way;
    3332import org.openstreetmap.josm.gui.MainApplication;
     
    4140import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
    4241import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
    4342import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    44 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
     43import org.openstreetmap.josm.gui.tagging.ac.AutoCompListener;
    4544import org.openstreetmap.josm.gui.util.HighlightHelper;
    4645import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable;
    4746import org.openstreetmap.josm.spi.preferences.Config;
     
    6059     * constructor for relation member table
    6160     *
    6261     * @param layer the data layer of the relation. Must not be null
    63      * @param relation the relation. Can be null
     62     * @param listener the autocompletion listener
    6463     * @param model the table model
    6564     */
    66     public MemberTable(OsmDataLayer layer, Relation relation, MemberTableModel model) {
    67         super(model, new MemberTableColumnModel(AutoCompletionManager.of(layer.data), relation), model.getSelectionModel());
     65    public MemberTable(OsmDataLayer layer, AutoCompListener listener, MemberTableModel model) {
     66        super(model, new MemberTableColumnModel(listener), model.getSelectionModel());
    6867        setLayer(layer);
    6968        model.addMemberModelListener(this);
    7069
  • src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableColumnModel.java

     
    66import javax.swing.table.DefaultTableColumnModel;
    77import javax.swing.table.TableColumn;
    88
    9 import org.openstreetmap.josm.data.osm.Relation;
    10 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
     9import org.openstreetmap.josm.gui.tagging.ac.AutoCompListener;
    1110
    1211/**
    1312 * This is the column model for the {@link MemberTable}
     
    1615
    1716    /**
    1817     * Constructs a new {@code MemberTableColumnModel}.
    19      * @param autoCompletionManager the auto completion manager. Must not be null
    20      * @param relation the relation. Can be null
     18     * @param listener the autocompletion listener
    2119     * @since 13675
    2220     */
    23     public MemberTableColumnModel(AutoCompletionManager autoCompletionManager, Relation relation) {
     21    public MemberTableColumnModel(AutoCompListener listener) {
    2422        TableColumn col;
    2523
    2624        // column 0 - the member role
     
    2927        col.setResizable(true);
    3028        col.setPreferredWidth(100);
    3129        col.setCellRenderer(new MemberTableRoleCellRenderer());
    32         col.setCellEditor(new MemberRoleCellEditor(autoCompletionManager, relation));
     30        col.setCellEditor(new MemberRoleCellEditor(listener));
    3331        addColumn(col);
    3432
    3533        // column 1 - the member
  • src/org/openstreetmap/josm/gui/dialogs/relation/actions/IRelationEditorActionAccess.java

     
    33
    44import javax.swing.Action;
    55
     6import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem;
    67import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
    78import org.openstreetmap.josm.gui.dialogs.relation.MemberTable;
    89import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel;
     
    910import org.openstreetmap.josm.gui.dialogs.relation.SelectionTable;
    1011import org.openstreetmap.josm.gui.dialogs.relation.SelectionTableModel;
    1112import org.openstreetmap.josm.gui.tagging.TagEditorModel;
    12 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
     13import org.openstreetmap.josm.gui.tagging.ac.AutoCompTextField;
    1314
    1415/**
    1516 * This interface provides access to the relation editor for actions.
     
    6970     * Get the text field that is used to edit the role.
    7071     * @return The role text field.
    7172     */
    72     AutoCompletingTextField getTextFieldRole();
     73    AutoCompTextField<AutoCompletionItem> getTextFieldRole();
    7374
    7475    /**
    7576     * Tells the member table editor to stop editing and accept any partially edited value as the value of the editor.
  • src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java

     
    2020import org.openstreetmap.josm.data.conflict.Conflict;
    2121import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
    2222import org.openstreetmap.josm.data.osm.Relation;
     23import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem;
    2324import org.openstreetmap.josm.gui.HelpAwareOptionPane;
    2425import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
    2526import org.openstreetmap.josm.gui.MainApplication;
     
    2728import org.openstreetmap.josm.gui.dialogs.relation.RelationDialogManager;
    2829import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
    2930import org.openstreetmap.josm.gui.tagging.TagEditorModel;
    30 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
     31import org.openstreetmap.josm.gui.tagging.ac.AutoCompTextField;
    3132import org.openstreetmap.josm.tools.ImageProvider;
    3233import org.openstreetmap.josm.tools.Utils;
    3334
     
    3839abstract class SavingAction extends AbstractRelationEditorAction {
    3940    private static final long serialVersionUID = 1L;
    4041
    41     protected final AutoCompletingTextField tfRole;
     42    protected final AutoCompTextField<AutoCompletionItem> tfRole;
    4243
    4344    protected SavingAction(IRelationEditorActionAccess editorAccess, IRelationEditorUpdateOn... updateOn) {
    4445        super(editorAccess, updateOn);
  • src/org/openstreetmap/josm/gui/dialogs/relation/actions/SetRoleAction.java

     
    1010import javax.swing.event.DocumentEvent;
    1111import javax.swing.event.DocumentListener;
    1212
     13import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem;
    1314import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
    1415import org.openstreetmap.josm.gui.MainApplication;
    15 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
     16import org.openstreetmap.josm.gui.tagging.ac.AutoCompTextField;
    1617import org.openstreetmap.josm.tools.ImageProvider;
    1718import org.openstreetmap.josm.tools.Utils;
    1819
     
    2324public class SetRoleAction extends AbstractRelationEditorAction implements DocumentListener {
    2425    private static final long serialVersionUID = 1L;
    2526
    26     private final transient AutoCompletingTextField tfRole;
     27    private final transient AutoCompTextField<AutoCompletionItem> tfRole;
    2728
    2829    /**
    2930     * Constructs a new {@code SetRoleAction}.
  • src/org/openstreetmap/josm/gui/tagging/ac/AutoCompComboBox.java

     
    104104     * @param elems The string items to set
    105105     * @deprecated Has been moved to the model, where it belongs. Use
    106106     *     {@link org.openstreetmap.josm.gui.widgets.HistoryComboBoxModel#addAllStrings} instead. Probably you want to use
    107      *     {@link org.openstreetmap.josm.gui.tagging.ac.AutoCompComboBoxModel.Preferences#load} and
    108      *     {@link org.openstreetmap.josm.gui.tagging.ac.AutoCompComboBoxModel.Preferences#save}.
     107     *     {@link org.openstreetmap.josm.gui.widgets.JosmComboBoxModel.Preferences#load} and
     108     *     {@link org.openstreetmap.josm.gui.widgets.JosmComboBoxModel.Preferences#save}.
    109109     */
    110110    @Deprecated
    111111    public void setPossibleItems(Collection<E> elems) {
     
    122122     * @since 15011
    123123     * @deprecated Has been moved to the model, where it belongs. Use
    124124     *     {@link org.openstreetmap.josm.gui.widgets.HistoryComboBoxModel#addAllStrings} instead. Probably you want to use
    125      *     {@link org.openstreetmap.josm.gui.tagging.ac.AutoCompComboBoxModel.Preferences#load} and
    126      *     {@link org.openstreetmap.josm.gui.tagging.ac.AutoCompComboBoxModel.Preferences#save}.
     125     *     {@link org.openstreetmap.josm.gui.widgets.JosmComboBoxModel.Preferences#load} and
     126     *     {@link org.openstreetmap.josm.gui.widgets.JosmComboBoxModel.Preferences#save}.
    127127     */
    128128    @Deprecated
    129129    public void setPossibleItemsTopDown(Collection<E> elems) {
  • src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java

     
    132132     * only accessed by getRoleCache(), rebuild() and cacheRelationMemberRoles()
    133133     * use getRoleCache() accessor
    134134     */
    135     protected Set<String> roleCache;
     135    protected final MultiMap<String, String> ROLE_CACHE = new MultiMap<>();
    136136
    137137    /**
    138138     * the same as roleCache but for the preset roles can be accessed directly
     
    159159        return tagCache;
    160160    }
    161161
    162     protected Set<String> getRoleCache() {
     162    protected MultiMap<String, String> getRoleCache() {
    163163        if (dirty) {
    164164            rebuild();
    165165            dirty = false;
    166166        }
    167         return roleCache;
     167        return ROLE_CACHE;
    168168    }
    169169
    170170    /**
     
    172172     */
    173173    protected void rebuild() {
    174174        tagCache = new MultiMap<>();
    175         roleCache = new HashSet<>();
     175        ROLE_CACHE.clear();
    176176        cachePrimitives(ds.allNonDeletedCompletePrimitives());
    177177    }
    178178
     
    201201     * @param relation the relation
    202202     */
    203203    protected void cacheRelationMemberRoles(Relation relation) {
     204        String type = relation.get("type");
    204205        for (RelationMember m: relation.getMembers()) {
    205             if (m.hasRole()) {
    206                 roleCache.add(m.getRole());
     206            if (type != null && m.hasRole()) {
     207                ROLE_CACHE.put(type, m.getRole());
    207208            }
    208209        }
    209210    }
     
    264265     * @return the list of member roles
    265266     */
    266267    public List<String> getMemberRoles() {
    267         return new ArrayList<>(getRoleCache());
     268        return new ArrayList<>(getRoleCache().getAllValues());
    268269    }
    269270
    270271    /**
     
    274275     */
    275276    public void populateWithMemberRoles(AutoCompletionList list) {
    276277        list.add(TaggingPresets.getPresetRoles(), AutoCompletionPriority.IS_IN_STANDARD);
    277         list.add(getRoleCache(), AutoCompletionPriority.IS_IN_DATASET);
     278        list.add(getRoleCache().getAllValues(), AutoCompletionPriority.IS_IN_DATASET);
    278279    }
    279280
    280281    /**
     
    303304    }
    304305
    305306    /**
     307     * Returns all cached roles for given relation as {@link AutoCompletionItem}s.
     308     *
     309     * @param roles current roles in the member editor panel
     310     * @param keys current keys in the tag editor panel
     311     * @return the currently cached items, sorted by priority and alphabet
     312     * @since xxx
     313     */
     314    public List<AutoCompletionItem> getRolesForRelation(Set<String> roles, Map<String, String> keys) {
     315        Map<String, AutoCompletionPriority> map = new HashMap<>();
     316
     317        // the roles on this relation
     318        for (String role : roles) {
     319            map.merge(role, AutoCompletionPriority.IS_IN_DATASET, AutoCompletionPriority::mergeWith);
     320        }
     321        // the roles on existing relations of the same type
     322        String type = keys.get("type");
     323        if (type != null) {
     324            for (String role : getRoleCache().getValues(type)) {
     325                map.merge(role, AutoCompletionPriority.IS_IN_DATASET, AutoCompletionPriority::mergeWith);
     326            }
     327        }
     328        Collection<TaggingPreset> presets = TaggingPresets.getMatchingPresets(null, keys, false);
     329        if (presets.isEmpty()) {
     330            // no preset matched, all roles of all presets
     331            for (String role : TaggingPresets.getPresetRoles()) {
     332                map.merge(role, AutoCompletionPriority.IS_IN_STANDARD, AutoCompletionPriority::mergeWith);
     333            }
     334            for (String role : getRoleCache().getAllValues()) {
     335                map.merge(role, AutoCompletionPriority.IS_IN_DATASET, AutoCompletionPriority::mergeWith);
     336            }
     337        } else {
     338            // all roles of all matched presets
     339            for (TaggingPreset preset : presets) {
     340                if (preset.roles != null) {
     341                    for (Role role : preset.roles.roles) {
     342                        map.merge(role.key, AutoCompletionPriority.IS_IN_STANDARD, AutoCompletionPriority::mergeWith);
     343                    }
     344                }
     345            }
     346        }
     347        return map.entrySet().stream().map(e -> new AutoCompletionItem(e.getKey(), e.getValue())).sorted().collect(Collectors.toList());
     348    }
     349
     350    /**
    306351     * Populates the an {@link AutoCompletionList} with the currently cached tag keys
    307352     *
    308353     * @param list the list to populate
     
    503548                    MainApplication.getLayerManager().removeLayerChangeListener(this);
    504549                    dirty = true;
    505550                    tagCache = null;
    506                     roleCache = null;
     551                    ROLE_CACHE.clear();
    507552                    ds = null;
    508553                }
    509554            }
  • src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java

     
    3939     * @return the items as strings
    4040     * @deprecated Has been moved to the model, where it belongs. Use
    4141     *     {@link HistoryComboBoxModel#asStringList} instead. Probably you want to use
    42      *     {@link org.openstreetmap.josm.gui.tagging.ac.AutoCompComboBoxModel.Preferences#load} and
    43      *     {@link org.openstreetmap.josm.gui.tagging.ac.AutoCompComboBoxModel.Preferences#save}.
     42     *     {@link org.openstreetmap.josm.gui.widgets.JosmComboBoxModel.Preferences#load} and
     43     *     {@link org.openstreetmap.josm.gui.widgets.JosmComboBoxModel.Preferences#save}.
    4444     */
    4545    @Deprecated
    4646    public List<String> getHistory() {
  • src/org/openstreetmap/josm/tools/MultiMap.java

     
    124124    }
    125125
    126126    /**
     127     * Like getValues, but returns all values for all keys.
     128     * @return the set of all values or an empty set
     129     */
     130    public Set<B> getAllValues() {
     131        return map.entrySet().stream().flatMap(e -> e.getValue().stream()).collect(Collectors.toSet());
     132    }
     133
     134    /**
    127135     * Returns {@code true} if this map contains no key-value mappings.
    128136     * @return {@code true} if this map contains no key-value mappings
    129137     * @see Map#isEmpty()
  • test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java

     
    1818import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1919import org.openstreetmap.josm.data.osm.Relation;
    2020import org.openstreetmap.josm.data.osm.Way;
     21import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem;
    2122import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    2223import org.openstreetmap.josm.gui.tagging.TagEditorPanel;
    23 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
     24import org.openstreetmap.josm.gui.tagging.ac.AutoCompTextField;
    2425import org.openstreetmap.josm.testutils.JOSMTestRules;
    2526import org.openstreetmap.josm.testutils.mockers.JOptionPaneSimpleMocker;
    2627
     
    123124        OsmDataLayer layer = new OsmDataLayer(ds, "test", null);
    124125        IRelationEditor re = newRelationEditor(relation, layer);
    125126
    126         AutoCompletingTextField tfRole = GenericRelationEditor.buildRoleTextField(re);
     127        AutoCompTextField<AutoCompletionItem> tfRole = GenericRelationEditor.buildRoleTextField();
    127128        assertNotNull(tfRole);
    128129
    129130        TagEditorPanel tagEditorPanel = new TagEditorPanel(relation, null);