Changeset 3306 in josm for trunk


Ignore:
Timestamp:
2010-06-04T07:55:25+02:00 (14 years ago)
Author:
stoecker
Message:

improve member position display in properties

File:
1 edited

Legend:

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

    r3302 r3306  
    477477        List<RelationMember> role = new ArrayList<RelationMember>();
    478478        List<Integer> position = new ArrayList<Integer>();
     479        private String positionString = null;
    479480        void add(RelationMember r, Integer p)
    480481        {
    481482          role.add(r);
    482483          position.add(p);
     484        }
     485        String getPositionString()
     486        {
     487            if(positionString == null)
     488            {
     489                Collections.sort(position);
     490                positionString = String.valueOf(position.get(0));
     491                int cnt = 0;
     492                int last = position.get(0);
     493                for(int i = 1; i < position.size(); ++i) {
     494                    int cur = position.get(i);
     495                    if(cur == last+1) {
     496                        ++cnt;
     497                    } else {
     498                        if(cnt == 1)
     499                            positionString += ","+String.valueOf(last);
     500                        else if(cnt > 1)
     501                            positionString += "-"+String.valueOf(last);
     502                        positionString += "-"+String.valueOf(cur);
     503                        cnt = 0;
     504                    }
     505                    last = cur;
     506                }
     507                if(cnt == 1)
     508                    positionString += ","+String.valueOf(last);
     509                else if(cnt > 1)
     510                    positionString += "-"+String.valueOf(last);
     511            }
     512            if(positionString.length() > 20)
     513              positionString = positionString.substring(0,17)+"...";
     514            return positionString;
    483515        }
    484516    }
     
    548580                    Relation r = (Relation)value;
    549581                    label.setText(r.getDisplayName(DefaultNameFormatter.getInstance()));
    550                     if (r.isFiltered()) {
     582                    if (r.isDisabledAndHidden()) {
    551583                        label.setFont(label.getFont().deriveFont(Font.ITALIC));
    552584                    }
     
    561593                    boolean isSelected, boolean hasFocus, int row, int column) {
    562594                Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column);
    563                 boolean isFiltered = (((Relation)table.getValueAt(row, 0))).isFiltered();
     595                boolean isDisabledAndHidden = (((Relation)table.getValueAt(row, 0))).isDisabledAndHidden();
    564596                if (c instanceof JLabel) {
    565597                    JLabel label = (JLabel)c;
     
    578610
    579611                    label.setText(text);
    580                     if (isFiltered) {
     612                    if (isDisabledAndHidden) {
    581613                        label.setFont(label.getFont().deriveFont(Font.ITALIC));
    582614                    }
     
    591623                    boolean isSelected, boolean hasFocus, int row, int column) {
    592624                Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column);
    593                 boolean isFiltered = (((Relation)table.getValueAt(row, 0))).isFiltered();
     625                boolean isDisabledAndHidden = (((Relation)table.getValueAt(row, 0))).isDisabledAndHidden();
    594626                if (c instanceof JLabel) {
    595627                    JLabel label = (JLabel)c;
    596                     MemberInfo col = (MemberInfo) table.getValueAt(row, 1);
    597 
    598                     String text = "";
    599                     for (Integer p : col.position) {
    600                         if (text.length() != 0)
    601                             text += ",";
    602                         text += String.valueOf(p);
    603                     }
    604 
    605                     label.setText(text);
    606                     if (isFiltered) {
     628                    label.setText(((MemberInfo) table.getValueAt(row, 1)).getPositionString());
     629                    if (isDisabledAndHidden) {
    607630                        label.setFont(label.getFont().deriveFont(Font.ITALIC));
    608631                    }
     
    849872                if (ref instanceof Relation && !ref.isIncomplete() && !ref.isDeleted()) {
    850873                    Relation r = (Relation) ref;
    851                     MemberInfo mi = mi = new MemberInfo();
     874                    MemberInfo mi = roles.get(r);
     875                    if(mi == null)
     876                        mi = new MemberInfo();
    852877                    roles.put(r, mi);
    853878                    int i = 1;
     
    865890        Collections.sort(sortedRelations, new Comparator<Relation>() {
    866891            public int compare(Relation o1, Relation o2) {
    867                 int comp = Boolean.valueOf(o1.isFiltered()).compareTo(o2.isFiltered());
     892                int comp = Boolean.valueOf(o1.isDisabledAndHidden()).compareTo(o2.isDisabledAndHidden());
    868893                if (comp == 0) {
    869894                    comp = o1.getDisplayName(DefaultNameFormatter.getInstance()).compareTo(o2.getDisplayName(DefaultNameFormatter.getInstance()));
Note: See TracChangeset for help on using the changeset viewer.