Changeset 3302 in josm


Ignore:
Timestamp:
Jun 3, 2010 8:40:04 PM (3 years ago)
Author:
stoecker
Message:

fix #4228 - display relation position in properties

File:
1 edited

Legend:

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

    r3281 r3302  
    5252import javax.swing.table.DefaultTableModel; 
    5353import javax.swing.table.TableModel; 
     54import javax.swing.table.TableColumnModel; 
    5455import javax.swing.text.JTextComponent; 
    5556 
     
    337338                Main.map.mapView.getEditLayer(), 
    338339                relation, 
    339                 (Collection<RelationMember>) membershipData.getValueAt(row, 1) ).setVisible(true); 
     340                ((MemberInfo) membershipData.getValueAt(row, 1)).role).setVisible(true); 
    340341    } 
    341342 
     
    472473    private final JLabel selectSth = new JLabel("<html><p>" 
    473474            + tr("Please select the objects you want to change properties for.") + "</p></html>"); 
     475 
     476    class MemberInfo { 
     477        List<RelationMember> role = new ArrayList<RelationMember>(); 
     478        List<Integer> position = new ArrayList<Integer>(); 
     479        void add(RelationMember r, Integer p) 
     480        { 
     481          role.add(r); 
     482          position.add(p); 
     483        } 
     484    } 
    474485 
    475486    /** 
     
    511522        // setting up the membership table 
    512523 
    513         membershipData.setColumnIdentifiers(new String[]{tr("Member Of"),tr("Role")}); 
     524        membershipData.setColumnIdentifiers(new String[]{tr("Member Of"),tr("Role"),tr("Position")}); 
    514525        membershipTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
    515526        membershipTable.addMouseListener(new PopupMenuLauncher() { 
     
    528539        }); 
    529540 
    530         membershipTable.getColumnModel().getColumn(0).setCellRenderer(new DefaultTableCellRenderer() { 
     541        TableColumnModel mod = membershipTable.getColumnModel(); 
     542        mod.getColumn(0).setCellRenderer(new DefaultTableCellRenderer() { 
    531543            @Override public Component getTableCellRendererComponent(JTable table, Object value, 
    532544                    boolean isSelected, boolean hasFocus, int row, int column) { 
     
    544556        }); 
    545557 
    546         membershipTable.getColumnModel().getColumn(1).setCellRenderer(new DefaultTableCellRenderer() { 
     558        mod.getColumn(1).setCellRenderer(new DefaultTableCellRenderer() { 
    547559            @SuppressWarnings("unchecked") 
    548560            @Override public Component getTableCellRendererComponent(JTable table, Object value, 
     
    552564                if (c instanceof JLabel) { 
    553565                    JLabel label = (JLabel)c; 
    554                     Collection<RelationMember> col = (Collection<RelationMember>) value; 
     566                    MemberInfo col = (MemberInfo) value; 
    555567 
    556568                    String text = null; 
    557                     for (RelationMember r : col) { 
     569                    for (RelationMember r : col.role) { 
    558570                        if (text == null) { 
    559571                            text = r.getRole(); 
     
    573585            } 
    574586        }); 
     587 
     588        mod.getColumn(2).setCellRenderer(new DefaultTableCellRenderer() { 
     589            @SuppressWarnings("unchecked") 
     590            @Override public Component getTableCellRendererComponent(JTable table, Object value, 
     591                    boolean isSelected, boolean hasFocus, int row, int column) { 
     592                Component c = super.getTableCellRendererComponent(table, value, isSelected, false, row, column); 
     593                boolean isFiltered = (((Relation)table.getValueAt(row, 0))).isFiltered(); 
     594                if (c instanceof JLabel) { 
     595                    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) { 
     607                        label.setFont(label.getFont().deriveFont(Font.ITALIC)); 
     608                    } 
     609                } 
     610                return c; 
     611            } 
     612        }); 
     613        mod.getColumn(2).setPreferredWidth(20); 
     614        mod.getColumn(1).setPreferredWidth(40); 
     615        mod.getColumn(0).setPreferredWidth(200); 
    575616 
    576617        // combine both tables and wrap them in a scrollPane 
     
    803844        membershipData.setRowCount(0); 
    804845 
    805         Map<Relation, Collection<RelationMember>> roles = new HashMap<Relation, Collection<RelationMember>>(); 
     846        Map<Relation, MemberInfo> roles = new HashMap<Relation, MemberInfo>(); 
    806847        for (OsmPrimitive primitive: newSelection) { 
    807848            for (OsmPrimitive ref: primitive.getReferrers()) { 
    808849                if (ref instanceof Relation && !ref.isIncomplete() && !ref.isDeleted()) { 
    809850                    Relation r = (Relation) ref; 
    810                     Collection<RelationMember> members = new ArrayList<RelationMember>(); 
    811                     roles.put(r, members); 
     851                    MemberInfo mi = mi = new MemberInfo(); 
     852                    roles.put(r, mi); 
     853                    int i = 1; 
    812854                    for (RelationMember m : r.getMembers()) { 
    813855                        if (m.getMember() == primitive) { 
    814                             members.add(m); 
     856                            mi.add(m, i); 
    815857                        } 
     858                        ++i; 
    816859                    } 
    817860                } 
Note: See TracChangeset for help on using the changeset viewer.