Ignore:
Timestamp:
10.09.2010 07:45:16 (21 months ago)
Author:
jttt
Message:
  • add New relation button to Preset dialog
  • add required attribute to tagging preset (allows to specify what tags has to filled for osm primitive to qualify as having preset)
  • show list of preset also in relation dialog
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java

    r3508 r3518  
    2424import java.util.Collection; 
    2525import java.util.Collections; 
     26import java.util.HashMap; 
    2627import java.util.HashSet; 
    2728import java.util.Iterator; 
    2829import java.util.List; 
     30import java.util.Map; 
    2931import java.util.Set; 
    3032import java.util.logging.Logger; 
     
    6163import org.openstreetmap.josm.data.osm.Relation; 
    6264import org.openstreetmap.josm.data.osm.RelationMember; 
     65import org.openstreetmap.josm.data.osm.Tag; 
    6366import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil; 
    6467import org.openstreetmap.josm.gui.DefaultNameFormatter; 
     
    6669import org.openstreetmap.josm.gui.SideButton; 
    6770import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec; 
     71import org.openstreetmap.josm.gui.dialogs.properties.PresetListPanel.PresetHandler; 
    6872import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction; 
    6973import org.openstreetmap.josm.gui.help.HelpUtil; 
    7074import org.openstreetmap.josm.gui.layer.OsmDataLayer; 
    7175import org.openstreetmap.josm.gui.tagging.TagEditorPanel; 
     76import org.openstreetmap.josm.gui.tagging.TagModel; 
    7277import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField; 
    7378import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList; 
     
    123128        referrerModel = new ReferringRelationsBrowserModel(relation); 
    124129 
    125         tagEditorPanel = new TagEditorPanel(); 
     130        tagEditorPanel = new TagEditorPanel(new PresetHandler() { 
     131 
     132            @Override 
     133            public void updateTags(List<Tag> tags) { 
     134                Map<String, TagModel> modelTags = new HashMap<String, TagModel>(); 
     135                for (int i=0; i<tagEditorPanel.getModel().getRowCount(); i++) { 
     136                    TagModel tagModel = tagEditorPanel.getModel().get(i); 
     137                    modelTags.put(tagModel.getName(), tagModel); 
     138                } 
     139                for (Tag tag: tags) { 
     140                    TagModel existing = modelTags.get(tag.getKey()); 
     141 
     142                    if (tag.getValue().isEmpty()) { 
     143                        if (existing != null) { 
     144                            tagEditorPanel.getModel().delete(tag.getKey()); 
     145                        } 
     146                    } else { 
     147                        if (existing != null) { 
     148                            tagEditorPanel.getModel().updateTagValue(existing, tag.getValue()); 
     149                        } else { 
     150                            tagEditorPanel.getModel().add(tag.getKey(), tag.getValue()); 
     151                        } 
     152                    } 
     153 
     154                } 
     155            } 
     156 
     157            @Override 
     158            public Collection<OsmPrimitive> getSelection() { 
     159                Relation relation = new Relation(); 
     160                tagEditorPanel.getModel().applyToPrimitive(relation); 
     161                return Collections.<OsmPrimitive>singletonList(relation); 
     162            } 
     163        }); 
     164 
    126165        // populate the models 
    127166        // 
Note: See TracChangeset for help on using the changeset viewer.