Ticket #21227: 21227.patch
| File 21227.patch, 26.2 KB (added by , 4 years ago) |
|---|
-
src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
29 29 import java.util.EnumSet; 30 30 import java.util.List; 31 31 import java.util.Set; 32 import java.util.TreeSet; 32 33 import java.util.stream.Collectors; 33 34 34 35 import javax.swing.AbstractAction; … … 58 59 import org.openstreetmap.josm.data.osm.Relation; 59 60 import org.openstreetmap.josm.data.osm.RelationMember; 60 61 import org.openstreetmap.josm.data.osm.Tag; 62 import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem; 61 63 import org.openstreetmap.josm.data.validation.tests.RelationChecker; 62 64 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil; 63 65 import org.openstreetmap.josm.gui.MainApplication; … … 98 100 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 99 101 import org.openstreetmap.josm.gui.tagging.TagEditorModel; 100 102 import org.openstreetmap.josm.gui.tagging.TagEditorPanel; 101 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField; 102 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList; 103 import org.openstreetmap.josm.gui.tagging.ac.AutoCompEvent; 104 import org.openstreetmap.josm.gui.tagging.ac.AutoCompListener; 105 import org.openstreetmap.josm.gui.tagging.ac.AutoCompTextField; 103 106 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager; 104 107 import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset; 105 108 import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetHandler; … … 117 120 * This dialog is for editing relations. 118 121 * @since 343 119 122 */ 120 public class GenericRelationEditor extends RelationEditor implements CommandQueueListener {123 public class GenericRelationEditor extends RelationEditor implements AutoCompListener, CommandQueueListener { 121 124 /** the tag table and its model */ 122 125 private final TagEditorPanel tagEditorPanel; 123 126 private final ReferringRelationsBrowser referrerBrowser; … … 131 134 private final SelectionTable selectionTable; 132 135 private final SelectionTableModel selectionTableModel; 133 136 134 private final AutoCompletingTextField tfRole; 137 private final AutoCompletionManager manager; 138 private final AutoCompTextField<AutoCompletionItem> tfRole; 135 139 136 140 /** 137 141 * the menu item in the windows menu. Required to properly hide on dialog close. … … 216 220 populateModels(relation); 217 221 tagEditorPanel.getModel().ensureOneTag(); 218 222 223 manager = AutoCompletionManager.of(this.getLayer().data); 224 219 225 // setting up the member table 220 memberTable = new MemberTable(getLayer(), getRelation(), memberTableModel);226 memberTable = new MemberTable(getLayer(), this, memberTableModel); 221 227 memberTable.addMouseListener(new MemberTableDblClickAdapter()); 222 228 memberTableModel.addMemberModelListener(memberTable); 223 229 … … 226 232 selectionTable.setRowHeight(ce.getEditor().getPreferredSize().height); 227 233 228 234 LeftButtonToolbar leftButtonToolbar = new LeftButtonToolbar(new RelationEditorActionAccess()); 229 tfRole = buildRoleTextField(this); 235 tfRole = buildRoleTextField(); 236 tfRole.addAutoCompListener(this); 230 237 231 238 JSplitPane pane = buildSplitPane( 232 239 buildTagEditorPanel(tagEditorPanel), … … 446 453 } 447 454 448 455 /** 449 * builds the role text field 450 * @param re relation editor 456 * builds a role text field 451 457 * @return the role text field 452 458 */ 453 protected static AutoComp letingTextField buildRoleTextField(final IRelationEditor re) {454 final AutoComp letingTextField tfRole = new AutoCompletingTextField(10);459 protected static AutoCompTextField<AutoCompletionItem> buildRoleTextField() { 460 final AutoCompTextField<AutoCompletionItem> tfRole = new AutoCompTextField<>(10); 455 461 tfRole.setToolTipText(tr("Enter a role and apply it to the selected relation members")); 456 462 tfRole.addFocusListener(new FocusAdapter() { 457 463 @Override … … 459 465 tfRole.selectAll(); 460 466 } 461 467 }); 462 tfRole.setAutoCompletionList(new AutoCompletionList());463 tfRole.addFocusListener(464 new FocusAdapter() {465 @Override466 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 );475 468 tfRole.setText(Config.getPref().get("relation.editor.generic.lastrole", "")); 476 469 return tfRole; 477 470 } … … 1039 1032 } 1040 1033 1041 1034 @Override 1042 public AutoComp letingTextFieldgetTextFieldRole() {1035 public AutoCompTextField<AutoCompletionItem> getTextFieldRole() { 1043 1036 return tfRole; 1044 1037 } 1045 1046 1038 } 1047 1039 1048 1040 @Override … … 1054 1046 applyAction.updateEnabledState(); 1055 1047 } 1056 1048 } 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 } 1057 1068 } -
src/org/openstreetmap/josm/gui/dialogs/relation/MemberRoleCellEditor.java
9 9 import javax.swing.JTable; 10 10 import javax.swing.table.TableCellEditor; 11 11 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; 12 import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem; 13 import org.openstreetmap.josm.gui.tagging.ac.AutoCompListener; 14 import org.openstreetmap.josm.gui.tagging.ac.AutoCompTextField; 16 15 17 16 /** 18 17 * The {@link CellEditor} for the role cell in the table. Supports autocompletion. 19 18 */ 20 19 public 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; 24 21 25 /** user input is matched against this list of auto completion items */26 private final AutoCompletionList autoCompletionList;27 28 22 /** 29 23 * 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 32 25 * @since 13675 33 26 */ 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); 38 29 editor.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); 39 autoCompletionList = new AutoCompletionList(); 40 editor.setAutoCompletionList(autoCompletionList); 30 editor.addAutoCompListener(listener); 41 31 } 42 32 43 33 @Override 44 34 public Component getTableCellEditorComponent(JTable table, 45 35 Object value, boolean isSelected, int row, int column) { 46 47 36 String role = (String) value; 48 37 editor.setText(role); 49 autoCompletionList.clear();50 autoCompletionManager.populateWithMemberRoles(autoCompletionList, relation);51 38 return editor; 52 39 } 53 40 … … 60 47 * Returns the edit field for this cell editor. 61 48 * @return the edit field for this cell editor 62 49 */ 63 public AutoComp letingTextFieldgetEditor() {50 public AutoCompTextField<AutoCompletionItem> getEditor() { 64 51 return editor; 65 52 } 66 53 } -
src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
27 27 import org.openstreetmap.josm.actions.HistoryInfoAction; 28 28 import org.openstreetmap.josm.actions.ZoomToAction; 29 29 import org.openstreetmap.josm.data.osm.OsmPrimitive; 30 import org.openstreetmap.josm.data.osm.Relation;31 30 import org.openstreetmap.josm.data.osm.RelationMember; 32 31 import org.openstreetmap.josm.data.osm.Way; 33 32 import org.openstreetmap.josm.gui.MainApplication; … … 41 40 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent; 42 41 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener; 43 42 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 44 import org.openstreetmap.josm.gui.tagging.ac.AutoComp letionManager;43 import org.openstreetmap.josm.gui.tagging.ac.AutoCompListener; 45 44 import org.openstreetmap.josm.gui.util.HighlightHelper; 46 45 import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable; 47 46 import org.openstreetmap.josm.spi.preferences.Config; … … 60 59 * constructor for relation member table 61 60 * 62 61 * @param layer the data layer of the relation. Must not be null 63 * @param relation the relation. Can be null62 * @param listener the autocompletion listener 64 63 * @param model the table model 65 64 */ 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()); 68 67 setLayer(layer); 69 68 model.addMemberModelListener(this); 70 69 -
src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableColumnModel.java
6 6 import javax.swing.table.DefaultTableColumnModel; 7 7 import javax.swing.table.TableColumn; 8 8 9 import org.openstreetmap.josm.data.osm.Relation; 10 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager; 9 import org.openstreetmap.josm.gui.tagging.ac.AutoCompListener; 11 10 12 11 /** 13 12 * This is the column model for the {@link MemberTable} … … 16 15 17 16 /** 18 17 * 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 21 19 * @since 13675 22 20 */ 23 public MemberTableColumnModel(AutoComp letionManager autoCompletionManager, Relation relation) {21 public MemberTableColumnModel(AutoCompListener listener) { 24 22 TableColumn col; 25 23 26 24 // column 0 - the member role … … 29 27 col.setResizable(true); 30 28 col.setPreferredWidth(100); 31 29 col.setCellRenderer(new MemberTableRoleCellRenderer()); 32 col.setCellEditor(new MemberRoleCellEditor( autoCompletionManager, relation));30 col.setCellEditor(new MemberRoleCellEditor(listener)); 33 31 addColumn(col); 34 32 35 33 // column 1 - the member -
src/org/openstreetmap/josm/gui/dialogs/relation/actions/IRelationEditorActionAccess.java
3 3 4 4 import javax.swing.Action; 5 5 6 import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem; 6 7 import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor; 7 8 import org.openstreetmap.josm.gui.dialogs.relation.MemberTable; 8 9 import org.openstreetmap.josm.gui.dialogs.relation.MemberTableModel; … … 9 10 import org.openstreetmap.josm.gui.dialogs.relation.SelectionTable; 10 11 import org.openstreetmap.josm.gui.dialogs.relation.SelectionTableModel; 11 12 import org.openstreetmap.josm.gui.tagging.TagEditorModel; 12 import org.openstreetmap.josm.gui.tagging.ac.AutoComp letingTextField;13 import org.openstreetmap.josm.gui.tagging.ac.AutoCompTextField; 13 14 14 15 /** 15 16 * This interface provides access to the relation editor for actions. … … 69 70 * Get the text field that is used to edit the role. 70 71 * @return The role text field. 71 72 */ 72 AutoComp letingTextFieldgetTextFieldRole();73 AutoCompTextField<AutoCompletionItem> getTextFieldRole(); 73 74 74 75 /** 75 76 * 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
20 20 import org.openstreetmap.josm.data.conflict.Conflict; 21 21 import org.openstreetmap.josm.data.osm.DefaultNameFormatter; 22 22 import org.openstreetmap.josm.data.osm.Relation; 23 import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem; 23 24 import org.openstreetmap.josm.gui.HelpAwareOptionPane; 24 25 import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec; 25 26 import org.openstreetmap.josm.gui.MainApplication; … … 27 28 import org.openstreetmap.josm.gui.dialogs.relation.RelationDialogManager; 28 29 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor; 29 30 import org.openstreetmap.josm.gui.tagging.TagEditorModel; 30 import org.openstreetmap.josm.gui.tagging.ac.AutoComp letingTextField;31 import org.openstreetmap.josm.gui.tagging.ac.AutoCompTextField; 31 32 import org.openstreetmap.josm.tools.ImageProvider; 32 33 import org.openstreetmap.josm.tools.Utils; 33 34 … … 38 39 abstract class SavingAction extends AbstractRelationEditorAction { 39 40 private static final long serialVersionUID = 1L; 40 41 41 protected final AutoComp letingTextFieldtfRole;42 protected final AutoCompTextField<AutoCompletionItem> tfRole; 42 43 43 44 protected SavingAction(IRelationEditorActionAccess editorAccess, IRelationEditorUpdateOn... updateOn) { 44 45 super(editorAccess, updateOn); -
src/org/openstreetmap/josm/gui/dialogs/relation/actions/SetRoleAction.java
10 10 import javax.swing.event.DocumentEvent; 11 11 import javax.swing.event.DocumentListener; 12 12 13 import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem; 13 14 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil; 14 15 import org.openstreetmap.josm.gui.MainApplication; 15 import org.openstreetmap.josm.gui.tagging.ac.AutoComp letingTextField;16 import org.openstreetmap.josm.gui.tagging.ac.AutoCompTextField; 16 17 import org.openstreetmap.josm.tools.ImageProvider; 17 18 import org.openstreetmap.josm.tools.Utils; 18 19 … … 23 24 public class SetRoleAction extends AbstractRelationEditorAction implements DocumentListener { 24 25 private static final long serialVersionUID = 1L; 25 26 26 private final transient AutoComp letingTextFieldtfRole;27 private final transient AutoCompTextField<AutoCompletionItem> tfRole; 27 28 28 29 /** 29 30 * Constructs a new {@code SetRoleAction}. -
src/org/openstreetmap/josm/gui/tagging/ac/AutoCompComboBox.java
104 104 * @param elems The string items to set 105 105 * @deprecated Has been moved to the model, where it belongs. Use 106 106 * {@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} and108 * {@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}. 109 109 */ 110 110 @Deprecated 111 111 public void setPossibleItems(Collection<E> elems) { … … 122 122 * @since 15011 123 123 * @deprecated Has been moved to the model, where it belongs. Use 124 124 * {@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} and126 * {@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}. 127 127 */ 128 128 @Deprecated 129 129 public void setPossibleItemsTopDown(Collection<E> elems) { -
src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java
132 132 * only accessed by getRoleCache(), rebuild() and cacheRelationMemberRoles() 133 133 * use getRoleCache() accessor 134 134 */ 135 protected Set<String> roleCache;135 protected final MultiMap<String, String> ROLE_CACHE = new MultiMap<>(); 136 136 137 137 /** 138 138 * the same as roleCache but for the preset roles can be accessed directly … … 159 159 return tagCache; 160 160 } 161 161 162 protected Set<String> getRoleCache() {162 protected MultiMap<String, String> getRoleCache() { 163 163 if (dirty) { 164 164 rebuild(); 165 165 dirty = false; 166 166 } 167 return roleCache;167 return ROLE_CACHE; 168 168 } 169 169 170 170 /** … … 172 172 */ 173 173 protected void rebuild() { 174 174 tagCache = new MultiMap<>(); 175 roleCache = new HashSet<>();175 ROLE_CACHE.clear(); 176 176 cachePrimitives(ds.allNonDeletedCompletePrimitives()); 177 177 } 178 178 … … 201 201 * @param relation the relation 202 202 */ 203 203 protected void cacheRelationMemberRoles(Relation relation) { 204 String type = relation.get("type"); 204 205 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()); 207 208 } 208 209 } 209 210 } … … 264 265 * @return the list of member roles 265 266 */ 266 267 public List<String> getMemberRoles() { 267 return new ArrayList<>(getRoleCache() );268 return new ArrayList<>(getRoleCache().getAllValues()); 268 269 } 269 270 270 271 /** … … 274 275 */ 275 276 public void populateWithMemberRoles(AutoCompletionList list) { 276 277 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); 278 279 } 279 280 280 281 /** … … 303 304 } 304 305 305 306 /** 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 /** 306 351 * Populates the an {@link AutoCompletionList} with the currently cached tag keys 307 352 * 308 353 * @param list the list to populate … … 503 548 MainApplication.getLayerManager().removeLayerChangeListener(this); 504 549 dirty = true; 505 550 tagCache = null; 506 roleCache = null;551 ROLE_CACHE.clear(); 507 552 ds = null; 508 553 } 509 554 } -
src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java
39 39 * @return the items as strings 40 40 * @deprecated Has been moved to the model, where it belongs. Use 41 41 * {@link HistoryComboBoxModel#asStringList} instead. Probably you want to use 42 * {@link org.openstreetmap.josm.gui. tagging.ac.AutoCompComboBoxModel.Preferences#load} and43 * {@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}. 44 44 */ 45 45 @Deprecated 46 46 public List<String> getHistory() { -
src/org/openstreetmap/josm/tools/MultiMap.java
124 124 } 125 125 126 126 /** 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 /** 127 135 * Returns {@code true} if this map contains no key-value mappings. 128 136 * @return {@code true} if this map contains no key-value mappings 129 137 * @see Map#isEmpty() -
test/unit/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditorTest.java
18 18 import org.openstreetmap.josm.data.osm.OsmPrimitive; 19 19 import org.openstreetmap.josm.data.osm.Relation; 20 20 import org.openstreetmap.josm.data.osm.Way; 21 import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem; 21 22 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 22 23 import org.openstreetmap.josm.gui.tagging.TagEditorPanel; 23 import org.openstreetmap.josm.gui.tagging.ac.AutoComp letingTextField;24 import org.openstreetmap.josm.gui.tagging.ac.AutoCompTextField; 24 25 import org.openstreetmap.josm.testutils.JOSMTestRules; 25 26 import org.openstreetmap.josm.testutils.mockers.JOptionPaneSimpleMocker; 26 27 … … 123 124 OsmDataLayer layer = new OsmDataLayer(ds, "test", null); 124 125 IRelationEditor re = newRelationEditor(relation, layer); 125 126 126 AutoComp letingTextField tfRole = GenericRelationEditor.buildRoleTextField(re);127 AutoCompTextField<AutoCompletionItem> tfRole = GenericRelationEditor.buildRoleTextField(); 127 128 assertNotNull(tfRole); 128 129 129 130 TagEditorPanel tagEditorPanel = new TagEditorPanel(relation, null);
