Changeset 3844 in josm


Ignore:
Timestamp:
2011-02-02T16:56:07+01:00 (13 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.