001// License: GPL. For details, see Readme.txt file.
002package org.openstreetmap.gui.jmapviewer;
003
004import java.util.List;
005
006public class LayerGroup extends AbstractLayer{
007    private List<AbstractLayer> layers;
008    
009    public LayerGroup(String name){
010        super(name);
011    }
012    public LayerGroup(String name, String description){
013        super(name, description);
014    }
015    public LayerGroup(String name, Style style){
016        super(name, style);
017    }
018    public LayerGroup(String name, String description, Style style){
019        super(name, description, style);
020    }
021    public LayerGroup(LayerGroup parent, String name){
022        super(parent, name);
023    }
024    public LayerGroup(LayerGroup parent, String name, String description, Style style){
025        super(name, description, style);
026    }
027    public List<AbstractLayer> getLayers() {
028        return layers;
029    }
030    public void setElements(List<AbstractLayer> layers) {
031        this.layers = layers;
032    }
033    public Layer addLayer(String name) {
034        Layer layer = new Layer(this, name);
035        layers = add(layers, layer);
036        return layer;
037    }
038    public LayerGroup add(AbstractLayer layer) {
039        layer.setParent(this);
040        layers = add(layers, layer);
041        return this;
042    }
043    public void calculateVisibleTexts(){
044        Boolean calculate=null;
045        if(layers!=null&&layers.size()>0){
046            calculate=layers.get(0).isVisibleTexts();
047            for(int i=1;i<layers.size(); i++){
048                calculate = resultOf(calculate, layers.get(i).isVisibleTexts());
049            }
050        }
051        setVisibleTexts(calculate);
052        if(getParent()!=null) getParent().calculateVisibleTexts();
053    }
054    public Boolean resultOf(Boolean b1, Boolean b2){
055        if(b1==null||b2==null) return null;
056        else if(b1.booleanValue() == b2.booleanValue()) return b1.booleanValue();
057        else return null;
058    }
059}