Changeset 3219 in josm for trunk


Ignore:
Timestamp:
2010-05-08T14:05:33+02:00 (9 years ago)
Author:
jttt
Message:

Fix #4976 filter : membership not shown in tag-list

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java

    r3214 r3219  
    2525import java.util.Comparator;
    2626import java.util.HashMap;
    27 import java.util.HashSet;
    2827import java.util.Iterator;
    2928import java.util.List;
     
    8281import org.openstreetmap.josm.gui.tagging.TaggingPreset;
    8382import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
    84 import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
    8583import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionListItem;
    8684import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionManager;
     
    199197        List<AutoCompletionListItem> keyList = autocomplete.getKeys();
    200198        Collections.sort(keyList, defaultACItemComparator);
    201        
     199
    202200        final AutoCompletingComboBox keys = new AutoCompletingComboBox();
    203201        keys.setPossibleACItems(keyList);
     
    231229        });
    232230        values.setEditable(true);
    233        
     231
    234232        List<AutoCompletionListItem> valueList = autocomplete.getValues(key);
    235233        Collections.sort(valueList, defaultACItemComparator);
    236        
     234
    237235        values.setPossibleACItems(valueList);
    238236        Map<String, Integer> m=(Map<String, Integer>)propertyData.getValueAt(row, 1);
     
    419417            @Override public void focusGained(FocusEvent e) {
    420418                String key = keys.getEditor().getItem().toString();
    421                
     419
    422420                List<AutoCompletionListItem> valueList = autocomplete.getValues(key);
    423421                Collections.sort(valueList, defaultACItemComparator);
     
    535533                Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column);
    536534                if (c instanceof JLabel) {
    537                     ((JLabel)c).setText(((Relation)value).getDisplayName(DefaultNameFormatter.getInstance()));
     535                    JLabel label = (JLabel)c;
     536                    Relation r = (Relation)value;
     537                    label.setText(r.getDisplayName(DefaultNameFormatter.getInstance()));
     538                    if (r.isFiltered()) {
     539                        label.setFont(label.getFont().deriveFont(Font.ITALIC));
     540                    }
    538541                }
    539542                return c;
     
    546549                    boolean isSelected, boolean hasFocus, int row, int column) {
    547550                Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column);
     551                boolean isFiltered = (((Relation)table.getValueAt(row, 0))).isFiltered();
    548552                if (c instanceof JLabel) {
     553                    JLabel label = (JLabel)c;
    549554                    Collection<RelationMember> col = (Collection<RelationMember>) value;
    550555
     
    560565                    }
    561566
    562                     ((JLabel)c).setText(text);
     567                    label.setText(text);
     568                    if (isFiltered) {
     569                        label.setFont(label.getFont().deriveFont(Font.ITALIC));
     570                    }
    563571                }
    564572                return c;
     
    800808        for (OsmPrimitive primitive: newSelection) {
    801809            for (OsmPrimitive ref: primitive.getReferrers()) {
    802                 if (ref instanceof Relation && !ref.isFiltered() && !ref.isIncomplete() && !ref.isDeleted()) {
     810                if (ref instanceof Relation && !ref.isIncomplete() && !ref.isDeleted()) {
    803811                    Relation r = (Relation) ref;
     812                    Collection<RelationMember> members = new ArrayList<RelationMember>();
     813                    roles.put(r, members);
    804814                    for (RelationMember m : r.getMembers()) {
    805815                        if (m.getMember() == primitive) {
    806                             Collection<RelationMember> value = roles.get(r);
    807                             if (value == null) {
    808                                 value = new HashSet<RelationMember>();
    809                                 roles.put(r, value);
    810                             }
    811                             value.add(m);
     816                            members.add(m);
    812817                        }
    813818                    }
     
    816821        }
    817822
    818         for (Entry<Relation, Collection<RelationMember>> e : roles.entrySet()) {
    819             membershipData.addRow(new Object[]{e.getKey(), e.getValue()});
     823        List<Relation> sortedRelations = new ArrayList<Relation>(roles.keySet());
     824        Collections.sort(sortedRelations, new Comparator<Relation>() {
     825            public int compare(Relation o1, Relation o2) {
     826                int comp = Boolean.valueOf(o1.isFiltered()).compareTo(o2.isFiltered());
     827                if (comp == 0) {
     828                    comp = o1.getDisplayName(DefaultNameFormatter.getInstance()).compareTo(o2.getDisplayName(DefaultNameFormatter.getInstance()));
     829                }
     830                return comp;
     831            }}
     832        );
     833
     834        for (Relation r: sortedRelations) {
     835            membershipData.addRow(new Object[]{r, roles.get(r)});
    820836        }
    821837
Note: See TracChangeset for help on using the changeset viewer.