Changeset 3219 in josm


Ignore:
Timestamp:
May 8, 2010 2:05:33 PM (3 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.