001    //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.3_testing/src/org/deegree/portal/context/GUIArea.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    import java.util.HashMap;
040    import java.util.List;
041    
042    /**
043     * this interface describes the content of an area of a GUI. a GUI area contains zero ... n modules
044     * described by the <tt>Module</tt> interface. A GUI area may be can be switched to be invisible.
045     * indicated by the hidden attribute.
046     *
047     * @version $Revision: 18195 $
048     * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
049     */
050    public class GUIArea {
051    
052        /**
053         * A constant defining a 'west' direction.
054         */
055        public static final int WEST = 0;
056    
057        /**
058         * A constant defining a 'EAST' direction.
059         */
060        public static final int EAST = 1;
061    
062        /**
063         * A constant defining a 'SOUTH' direction.
064         */
065        public static final int SOUTH = 2;
066    
067        /**
068         * A constant defining a 'NORTH' direction.
069         */
070        public static final int NORTH = 3;
071    
072        /**
073         * A constant defining a 'CENTER' direction.
074         */
075        public static final int CENTER = 4;
076    
077        private HashMap<String, Module> modules = new HashMap<String, Module>();
078    
079        private boolean hidden = false;
080    
081        private int area = 0;
082    
083        private int width;
084    
085        private int height;
086    
087        private int left;
088    
089        private int top;
090    
091        private int right;
092    
093        private int bottom;
094    
095        private boolean overlay;
096    
097        private boolean header;
098    
099        private boolean closable;
100    
101        private List<Module> list = new ArrayList<Module>();
102    
103        /**
104         * Creates a new GUIArea instance
105         *
106         * @param area
107         * @param hidden
108         * @param width
109         * @param height
110         * @param left
111         * @param top
112         * @param right
113         * @param bottom
114         * @param overlay
115         * @param header
116         * @param closable
117         * @param modules
118         */
119        public GUIArea( int area, boolean hidden, int width, int height, int left, int top, int right, int bottom,
120                        boolean overlay, boolean header, boolean closable, Module[] modules ) {
121            setArea( area );
122            setHidden( hidden );
123            setWidth( width );
124            setHeight( height );
125            setLeft( left );
126            setTop( top );
127            setRight( right );
128            setBottom( bottom );
129            setOverlay( overlay );
130            setHeader( header );
131            setClosable( closable );
132            setModules( modules );
133        }
134    
135        /**
136         * returns area (north, west, east ...) assigned to an instance
137         *
138         * @return area
139         */
140        public int getArea() {
141            return area;
142        }
143    
144        /**
145         * sets the name of a module
146         *
147         * @param area
148         */
149        public void setArea( int area ) {
150            this.area = area;
151        }
152    
153        /**
154         * returns true if the GUIArea is hidden.
155         *
156         * @return true if area is hidden
157         */
158        public boolean isHidden() {
159            return hidden;
160        }
161    
162        /**
163         * sets the GUIArea to be hidden or visible.
164         *
165         * @param hidden
166         */
167        public void setHidden( boolean hidden ) {
168            this.hidden = hidden;
169        }
170    
171        /**
172         * @return the bottom
173         */
174        public int getBottom() {
175            return bottom;
176        }
177    
178        /**
179         * @param bottom
180         *            the bottom to set
181         */
182        public void setBottom( int bottom ) {
183            this.bottom = bottom;
184        }
185    
186        /**
187         * @return the left
188         */
189        public int getLeft() {
190            return left;
191        }
192    
193        /**
194         * @param left
195         *            the left to set
196         */
197        public void setLeft( int left ) {
198            this.left = left;
199        }
200    
201        /**
202         * @return the right
203         */
204        public int getRight() {
205            return right;
206        }
207    
208        /**
209         * @param right
210         *            the right to set
211         */
212        public void setRight( int right ) {
213            this.right = right;
214        }
215    
216        /**
217         * @return the top
218         */
219        public int getTop() {
220            return top;
221        }
222    
223        /**
224         * @param top
225         *            the top to set
226         */
227        public void setTop( int top ) {
228            this.top = top;
229        }
230    
231        /**
232         * @return the overlay
233         */
234        public boolean isOverlay() {
235            return overlay;
236        }
237    
238        /**
239         * @param overlay
240         *            the overlay to set
241         */
242        public void setOverlay( boolean overlay ) {
243            this.overlay = overlay;
244        }
245    
246        /**
247         * @return the closable
248         */
249        public boolean isClosable() {
250            return closable;
251        }
252    
253        /**
254         * @param closable
255         *            the closable to set
256         */
257        public void setClosable( boolean closable ) {
258            this.closable = closable;
259        }
260    
261        /**
262         * @return the header
263         */
264        public boolean hasHeader() {
265            return header;
266        }
267    
268        /**
269         * @param header
270         *            the header to set
271         */
272        public void setHeader( boolean header ) {
273            this.header = header;
274        }
275    
276        /**
277         * @return the height
278         */
279        public int getHeight() {
280            return height;
281        }
282    
283        /**
284         * @param height
285         *            the height to set
286         */
287        public void setHeight( int height ) {
288            this.height = height;
289        }
290    
291        /**
292         * @return the width
293         */
294        public int getWidth() {
295            return width;
296        }
297    
298        /**
299         * @param width
300         *            the width to set
301         */
302        public void setWidth( int width ) {
303            this.width = width;
304        }
305    
306        /**
307         * returns a module identified by its name
308         *
309         * @param name
310         *
311         * @return named module
312         */
313        public Module getModule( String name ) {
314            return modules.get( name );
315        }
316    
317        /**
318         * returns all modules of a GUIArea
319         *
320         * @return all modules
321         */
322        public Module[] getModules() {
323            Module[] cl = new Module[list.size()];
324            return list.toArray( cl );
325    
326        }
327    
328        /**
329         * sets the modules of a GUIArea
330         *
331         * @param modules
332         */
333        public void setModules( Module[] modules ) {
334            this.modules.clear();
335            this.list.clear();
336    
337            if ( modules != null ) {
338                for ( int i = 0; i < modules.length; i++ ) {
339                    this.modules.put( modules[i].getName(), modules[i] );
340                    list.add( modules[i] );
341                }
342            }
343        }
344    
345        /**
346         * adds a module to a GUIArea
347         *
348         * @param module
349         */
350        public void addModul( Module module ) {
351            modules.put( module.getName(), module );
352            list.add( module );
353        }
354    
355        /**
356         * reomes a module identified by its name from the GUIArea
357         *
358         * @param name
359         *
360         * @return removed module
361         */
362        public Module removeModule( String name ) {
363            Module module = modules.remove( name );
364            list.remove( module );
365            return module;
366        }
367    
368    }