001// License: GPL. For details, see Readme.txt file.
002package org.openstreetmap.gui.jmapviewer;
003
004import java.util.ArrayList;
005import java.util.List;
006
007public class AbstractLayer {
008    private LayerGroup parent;
009    private String name;
010    private String description;
011    private Style style;
012    private Boolean visible;
013    private Boolean visibleTexts=true;
014
015    public AbstractLayer(String name){
016        this(name, (String)null);
017    }
018    public AbstractLayer(String name, String description){
019        this(name, description, MapMarkerCircle.getDefaultStyle());
020    }
021    public AbstractLayer(String name, Style style){
022        this(name, null, style);
023    }
024    public AbstractLayer(String name, String description, Style style){
025        this(null, name, description, style);
026    }
027    public AbstractLayer(LayerGroup parent, String name){
028        this(parent, name, MapMarkerCircle.getDefaultStyle());
029    }
030    public AbstractLayer(LayerGroup parent, String name, Style style){
031        this(parent, name, null, style);
032    }
033    public AbstractLayer(LayerGroup parent, String name, String description, Style style){
034        setParent(parent);
035        setName(name);
036        setDescription(description);
037        setStyle(style);
038        setVisible(true);
039
040        if(parent!=null) parent.add(this);
041    }
042    public LayerGroup getParent() {
043        return parent;
044    }
045    public void setParent(LayerGroup parent) {
046        this.parent = parent;
047    }
048    public String getName() {
049        return name;
050    }
051    public void setName(String name) {
052        this.name = name;
053    }
054    public String getDescription() {
055        return description;
056    }
057    public void setDescription(String description) {
058        this.description = description;
059    }
060    public Style getStyle() {
061        return style;
062    }
063    public void setStyle(Style style) {
064        this.style = style;
065    }
066    public Boolean isVisible() {
067        return visible;
068    }
069    public void setVisible(Boolean visible) {
070        this.visible = visible;
071    }
072    public static <E> List<E> add(List<E> list, E element) {
073        if(element!=null){
074            if(list==null) list = new ArrayList<>();
075            if(!list.contains(element)) list.add(element);
076        }
077        return list;
078    }
079    public Boolean isVisibleTexts() {
080        return visibleTexts;
081    }
082    public void setVisibleTexts(Boolean visibleTexts) {
083        this.visibleTexts = visibleTexts;
084    }
085    public String toString(){
086        return name;
087    }
088}