Changeset 3844 in josm


Ignore:
Timestamp:
Feb 2, 2011 4:56:07 PM (2 years ago)
Author:
stoecker
Message:

see #5899 - support different display of closed ways and areas

Location:
trunk
Files:
2 added
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/JoinAreasAction.java

    r3717 r3844  
    12161216 
    12171217        for (Relation r : CombineWayAction.getParentRelations(selectedWays)) { 
    1218             if (r.isDeleted() || 
    1219                     r.get("type") == null || 
    1220                     !r.get("type").equalsIgnoreCase("multipolygon")) { 
     1218            if (r.isDeleted() || !r.isMultipolygon()) { 
    12211219                continue; 
    12221220            } 
     
    13901388 
    13911389        for (RelationRole r : rels) { 
    1392             if (r.rel.get("type") != null && 
    1393                     r.rel.get("type").equalsIgnoreCase("multipolygon") && 
    1394                     r.role.equalsIgnoreCase("outer") 
    1395             ) { 
     1390            if (r.rel.isMultipolygon() && r.role.equalsIgnoreCase("outer")) { 
    13961391                multiouters.add(r); 
    13971392                continue; 
  • trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java

    r3843 r3844  
    560560    public PrimitiveId getPrimitiveId() { 
    561561        return new SimplePrimitiveId(getUniqueId(), getType()); 
     562    } 
     563 
     564    public OsmPrimitiveType getDisplayType() { 
     565        return getType(); 
    562566    } 
    563567 
  • trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitiveType.java

    r3440 r3844  
    1010    NODE (marktr("node"), Node.class, NodeData.class), 
    1111    WAY  (marktr("way"), Way.class, WayData.class), 
    12     RELATION (marktr("relation"), Relation.class, RelationData.class); 
     12    RELATION (marktr("relation"), Relation.class, RelationData.class), 
     13 
     14    /* only for display, no real type */ 
     15    CLOSEDWAY  (marktr("closedway"), Way.class, WayData.class), 
     16    MULTIPOLYGON (marktr("multipolygon"), Relation.class, RelationData.class); 
    1317 
    1418    private final String apiTypeName; 
  • trunk/src/org/openstreetmap/josm/data/osm/Relation.java

    r3719 r3844  
    371371    } 
    372372 
     373    public OsmPrimitiveType getDisplayType() { 
     374        return isMultipolygon() ? OsmPrimitiveType.MULTIPOLYGON 
     375        : OsmPrimitiveType.RELATION; 
     376    } 
     377 
     378    public boolean isMultipolygon() { 
     379        return "multipolygon".equals(get("type")); 
     380    } 
     381 
    373382    @Override 
    374383    public BBox getBBox() { 
  • trunk/src/org/openstreetmap/josm/data/osm/RelationMember.java

    r3719 r3844  
    5454    public boolean isWay() { 
    5555        return member instanceof Way; 
     56    } 
     57 
     58    /** 
     59     * 
     60     * @return type of member for icon display 
     61     * @since 3844 
     62     */ 
     63    public OsmPrimitiveType getDisplayType() { 
     64        return member.getDisplayType(); 
    5665    } 
    5766 
  • trunk/src/org/openstreetmap/josm/data/osm/Way.java

    r3836 r3844  
    429429    } 
    430430 
     431    @Override 
     432    public OsmPrimitiveType getDisplayType() { 
     433        return isClosed() ? OsmPrimitiveType.CLOSEDWAY : OsmPrimitiveType.WAY; 
     434    } 
     435 
    431436    private void checkNodes() { 
    432437        DataSet dataSet = getDataSet(); 
  • trunk/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java

    r3836 r3844  
    128128    public void visit(Relation r) { 
    129129        nonClosedWays.clear(); 
    130         if ("multipolygon".equals(r.get("type"))) { 
     130        if (r.isMultipolygon()) { 
    131131            checkMembersAndRoles(r); 
    132132 
  • trunk/src/org/openstreetmap/josm/data/validation/tests/UnclosedWays.java

    r3674 r3844  
    111111        if (type != null && !w.isClosed()) { 
    112112            for (OsmPrimitive parent: w.getReferrers()) { 
    113                 if (parent instanceof Relation && "multipolygon".equals(parent.get("type"))) 
     113                if (parent instanceof Relation && ((Relation)parent).isMultipolygon()) 
    114114                    return; 
    115115            } 
  • trunk/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java

    r3671 r3844  
    114114        multipolygonways = new LinkedList<Way>(); 
    115115        for (Relation r : Main.main.getCurrentDataSet().getRelations()) { 
    116             if (r.isUsable() && "multipolygon".equals(r.get("type"))) { 
     116            if (r.isUsable() && r.isMultipolygon()) { 
    117117                for (RelationMember m : r.getMembers()) { 
    118118                    if (m.getMember() != null && m.getMember() instanceof Way && 
  • trunk/src/org/openstreetmap/josm/gui/OsmPrimitivRenderer.java

    r2885 r3844  
    6868        if (def != null && value != null && def instanceof JLabel) { 
    6969            ((JLabel)def).setText(getComponentText(value)); 
    70             ((JLabel)def).setIcon(ImageProvider.get(value.getType())); 
     70            ((JLabel)def).setIcon(ImageProvider.get(value.getDisplayType())); 
    7171            ((JLabel)def).setToolTipText(getComponentToolTipText(value)); 
    7272        } 
  • trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTableCellRenderer.java

    r3083 r3844  
    3838    public final static Color BGCOLOR_FROZEN = new Color(234,234,234); 
    3939 
    40     private ImageIcon nodeIcon; 
    41     private ImageIcon wayIcon; 
    42     private ImageIcon relationIcon; 
    4340    private  Border rowNumberBorder = null; 
    44  
    45     /** 
    46      * Load the image icon for an OSM primitive of type node 
    47      * 
    48      * @return the icon; null, if not found 
    49      */ 
    50     protected void loadIcons() { 
    51         nodeIcon = ImageProvider.get("data", "node"); 
    52         wayIcon = ImageProvider.get("data", "way"); 
    53         relationIcon = ImageProvider.get("data", "relation"); 
    54     } 
    5541 
    5642    /** 
     
    6046        setIcon(null); 
    6147        setOpaque(true); 
    62         loadIcons(); 
    6348        rowNumberBorder = BorderFactory.createEmptyBorder(0,4,0,0); 
    6449    } 
     
    156141        setText(displayName); 
    157142        setToolTipText(buildToolTipText(member.getMember())); 
    158         if (member.isNode()) { 
    159             setIcon(nodeIcon); 
    160         } else if (member.isWay()) { 
    161             setIcon(wayIcon); 
    162         } else if (member.isRelation()) { 
    163             setIcon(relationIcon); 
    164         } else { 
    165             // should not happen 
    166             setIcon(null); 
    167         } 
     143        setIcon(ImageProvider.get(member.getDisplayType())); 
    168144    } 
    169145 
  • trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java

    r3843 r3844  
    103103            for (OsmPrimitive referrer : osm.getReferrers()) { 
    104104                Relation r = (Relation) referrer; 
    105                 if (!drawMultipolygon || !"multipolygon".equals(r.get("type"))  || !r.isUsable()) { 
     105                if (!drawMultipolygon || !r.isMultipolygon()  || !r.isUsable()) { 
    106106                    continue; 
    107107                } 
     
    150150            for (OsmPrimitive referrer : osm.getReferrers()) { 
    151151                Relation ref = (Relation) referrer; 
    152                 if (!drawMultipolygon || !"multipolygon".equals(ref.get("type")) || !ref.isUsable()) { 
     152                if (!drawMultipolygon || !ref.isMultipolygon() || !ref.isUsable()) { 
    153153                    continue; 
    154154                } 
     
    184184        { 
    185185            Pair<StyleList, Range> p = generateStyles(osm, scale, null, true); 
    186             if (drawMultipolygon && "multipolygon".equals(osm.get("type"))) { 
     186            if (drawMultipolygon && ((Relation)osm).isMultipolygon()) { 
    187187                if (!Utils.exists(p.a, AreaElemStyle.class)) { 
    188188                    // look at outer ways to find area style 
     
    235235                addIfNotNull(sl, NodeElemStyle.create(c)); 
    236236            } else if (osm instanceof Relation) { 
    237                 if ("multipolygon".equals(osm.get("type"))) { 
     237                if (((Relation)osm).isMultipolygon()) { 
    238238                    addIfNotNull(sl, AreaElemStyle.create(c)); 
    239239                    addIfNotNull(sl, LineElemStyle.createLine(c)); 
  • trunk/src/org/openstreetmap/josm/gui/mappaint/xml/XmlStyleSource.java

    r3843 r3844  
    6767            while(parser.hasNext()) { 
    6868            } 
    69              
     69 
    7070        } catch(IOException e) { 
    7171            System.err.println(tr("Warning: failed to load Mappaint styles from ''{0}''. Exception was: {1}", url, e.toString())); 
     
    278278                } 
    279279            } 
    280         } else if (osm instanceof Way || (osm instanceof Relation && "multipolygon".equals(osm.get("type")))) { 
     280        } else if (osm instanceof Way || (osm instanceof Relation && ((Relation)osm).isMultipolygon())) { 
    281281            WayPrototypesRecord p = new WayPrototypesRecord(); 
    282282            get(osm, pretendWayIsClosed || !(osm instanceof Way) || ((Way) osm).isClosed(), p, (useMinMaxScale ? scale : null), mc); 
Note: See TracChangeset for help on using the changeset viewer.