001 //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.3_testing/src/org/deegree/portal/context/LayerGroup.java $
002 /*----------------------------------------------------------------------------
003 This file is part of deegree, http://deegree.org/
004 Copyright (C) 2001-2009 by:
005 - Department of Geography, University of Bonn -
006 and
007 - lat/lon GmbH -
008
009 This library is free software; you can redistribute it and/or modify it under
010 the terms of the GNU Lesser General Public License as published by the Free
011 Software Foundation; either version 2.1 of the License, or (at your option)
012 any later version.
013 This library is distributed in the hope that it will be useful, but WITHOUT
014 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
015 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
016 details.
017 You should have received a copy of the GNU Lesser General Public License
018 along with this library; if not, write to the Free Software Foundation, Inc.,
019 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020
021 Contact information:
022
023 lat/lon GmbH
024 Aennchenstr. 19, 53177 Bonn
025 Germany
026 http://lat-lon.de/
027
028 Department of Geography, University of Bonn
029 Prof. Dr. Klaus Greve
030 Postfach 1147, 53001 Bonn
031 Germany
032 http://www.geographie.uni-bonn.de/deegree/
033
034 e-mail: info@deegree.org
035 ----------------------------------------------------------------------------*/
036 package org.deegree.portal.context;
037
038 import java.util.ArrayList;
039
040 import java.util.Collections;
041 import java.util.List;
042
043 /**
044 * TODO add class documentation here
045 *
046 * @author <a href="mailto:name@deegree.org">Andreas Poth</a>
047 * @author last edited by: $Author: apoth $
048 *
049 * @version $Revision: 20771 $, $Date: 2009-11-12 18:37:45 +0100 (Do, 12. Nov 2009) $
050 */
051 public class LayerGroup extends MapModelEntry {
052
053 private boolean expanded;
054
055 private List<MMLayer> layers;
056
057 private List<LayerGroup> layerGroups;
058
059 private List<MapModelEntry> entries;
060
061 /**
062 *
063 * @param identifier
064 * @param title
065 * @param hidden
066 * @param expanded
067 * @param parent
068 * @param owner
069 */
070 public LayerGroup( String identifier, String title, boolean hidden, boolean expanded, LayerGroup parent,
071 MapModel owner ) {
072 super( identifier, title, hidden, parent, owner );
073 layers = new ArrayList<MMLayer>();
074 layerGroups = new ArrayList<LayerGroup>();
075 entries = new ArrayList<MapModelEntry>();
076 this.expanded = expanded;
077 }
078
079 /**
080 *
081 * @param layer
082 * @param antecessor
083 * @param first
084 */
085 public void insert( MMLayer layer, MapModelEntry antecessor, boolean first ) {
086 if ( layer.getParent() == null || !layer.getParent().equals( parent ) ) {
087 layers.remove( layer );
088 layers.add( layer );
089 layer.setParent( this );
090 int i = 0;
091 while ( i < entries.size() && !entries.get( i ).equals( antecessor ) ) {
092 i++;
093 }
094 if ( i >= entries.size() - 1 ) {
095 if ( first && antecessor == null ) {
096 entries.add( 0, layer );
097 } else {
098 entries.add( layer );
099 }
100 } else {
101 if ( first && antecessor == null ) {
102 entries.add( 0, layer );
103 } else {
104 entries.add( i + 1, layer );
105 }
106 }
107 }
108 }
109
110 /**
111 *
112 * @param layerGroup
113 * @param antecessor
114 * @param first
115 */
116 public void insert( LayerGroup layerGroup, MapModelEntry antecessor, boolean first ) {
117 if ( layerGroup.getParent() == null || !layerGroup.getParent().equals( parent ) ) {
118 // register as child
119 layerGroups.add( layerGroup );
120 // that this a parent
121 layerGroup.setParent( this );
122
123 int i = 0;
124 if ( entries.size() > 0 ) {
125 while ( i < entries.size() && !entries.get( i ).equals( antecessor ) ) {
126 i++;
127 }
128 }
129 if ( i >= entries.size() - 1 ) {
130 if ( first && antecessor == null ) {
131 entries.add( 0, layerGroup );
132 } else {
133 entries.add( layerGroup );
134 }
135 } else {
136 if ( first && antecessor == null ) {
137 entries.add( 0, layerGroup );
138 } else {
139 entries.add( i + 1, layerGroup );
140 }
141 }
142 }
143 }
144
145 /**
146 *
147 * @param layer
148 */
149 public void addLayer( MMLayer layer ) {
150 if ( !layers.contains( layer ) ) {
151 layers.add( layer );
152 entries.add( layer );
153 }
154 }
155
156 /**
157 *
158 * @param layerGroup
159 */
160 public void addLayerGroup( LayerGroup layerGroup ) {
161 layerGroups.add( layerGroup );
162 entries.add( layerGroup );
163 }
164
165 /**
166 * @return the layerGroups
167 */
168 public List<LayerGroup> getLayerGroups() {
169 return Collections.unmodifiableList( layerGroups );
170 }
171
172 /**
173 * @return the layers
174 */
175 public List<MMLayer> getLayers() {
176 return Collections.unmodifiableList( layers );
177 }
178
179 /**
180 * @return the entries
181 */
182 public List<MapModelEntry> getMapModelEntries() {
183 return Collections.unmodifiableList( entries );
184 }
185
186 /**
187 * @return the expanded
188 */
189 public boolean isExpanded() {
190 return expanded;
191 }
192
193 /**
194 * @param expanded
195 * the expanded to set
196 */
197 public void setExpanded( boolean expanded ) {
198 this.expanded = expanded;
199 }
200
201 }