001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.gui.mappaint.xml;
003
004 import java.awt.Color;
005 import java.util.List;
006
007 import org.openstreetmap.josm.data.osm.visitor.paint.MapPaintSettings;
008 import org.openstreetmap.josm.data.osm.visitor.paint.PaintColors;
009 import org.openstreetmap.josm.gui.mappaint.Range;
010 import org.openstreetmap.josm.tools.I18n;
011
012 public class LinePrototype extends Prototype {
013
014 protected int width;
015 public Integer realWidth; // the real width of this line in meter
016 public Color color;
017 protected List<Float> dashed;
018 public Color dashedColor;
019
020 public LinePrototype(LinePrototype s, Range range) {
021 super(range);
022 this.width = s.width;
023 this.realWidth = s.realWidth;
024 this.color = s.color;
025 this.dashed = s.dashed;
026 this.dashedColor = s.dashedColor;
027 this.priority = s.priority;
028 this.conditions = s.conditions;
029 }
030
031 public LinePrototype() { init(); }
032
033 public void init()
034 {
035 priority = 0;
036 range = new Range();
037 width = -1;
038 realWidth = null;
039 dashed = null;
040 dashedColor = null;
041 color = PaintColors.UNTAGGED.get();
042 }
043
044 public List<Float> getDashed() {
045 return dashed;
046 }
047
048 public void setDashed(List<Float> dashed) {
049 if (dashed == null || dashed.isEmpty()) {
050 this.dashed = null;
051 return;
052 }
053
054 boolean found = false;
055 for (Float f : dashed) {
056 if (f == null) {
057 this.dashed = null;
058 return;
059 }
060 if (f > 0) {
061 found = true;
062 }
063 if (f < 0) {
064 System.err.println(I18n.tr("Illegal dash pattern, values must be positive"));
065 this.dashed = null;
066 return;
067 }
068 }
069 if (found) {
070 this.dashed = dashed;
071 } else {
072 System.err.println(I18n.tr("Illegal dash pattern, at least one value must be > 0"));
073 }
074 }
075
076 public int getWidth() {
077 if (width == -1)
078 return MapPaintSettings.INSTANCE.getDefaultSegmentWidth();
079 return width;
080 }
081
082 public void setWidth(int width) {
083 this.width = width;
084 }
085 }