001    //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.3_testing/src/org/deegree/portal/context/Module.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 org.deegree.framework.util.Parameter;
039    import org.deegree.framework.util.ParameterList;
040    
041    /**
042     * this class encapsulates the basic informations of a module that is part of an area of the GUI.
043     * Other classes may extent this class by adding special attributes for more specialazied GUIs.
044     *
045     * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
046     * @author last edited by: $Author: mschneider $
047     *
048     * @version $Revision: 18195 $, $Date: 2009-06-18 17:55:39 +0200 (Do, 18. Jun 2009) $
049     */
050    public class Module {
051        private ModuleConfiguration moduleConfiguration = null;
052    
053        private String content = null;
054    
055        private String name = null;
056    
057        private boolean hidden = false;
058    
059        private ParameterList parameterList = null;
060    
061        private String type = "content";
062    
063        private int width = 0;
064    
065        private int height = 0;
066    
067        private int left = 0;
068    
069        private int right = 0;
070    
071        private int top = 0;
072    
073        private int bottom = 0;
074    
075        private boolean header;
076    
077        private boolean closable;
078    
079        private boolean overlay;
080    
081        private String[] moduleJSList = new String[0];
082    
083        private String scrolling = "auto";
084    
085        /**
086         * Creates a new Module_Impl object.
087         *
088         * @param name
089         *            name of the module
090         * @param content
091         *            the name of the page/class/file etc. containing the content of the module
092         * @param hidden
093         *            indicates if the module is visible or not
094         * @param type
095         * @param left
096         * @param top
097         * @param right
098         * @param bottom
099         * @param width
100         * @param height
101         * @param overlay
102         * @param header
103         * @param closable
104         * @param scrolling
105         * @param moduleJSList
106         * @param moduleConfiguration
107         *            encapsulates the access to the modules configuration (may be <tt>null</tt>)
108         * @param parameterList
109         */
110        public Module( String name, String content, boolean hidden, String type, int left, int top, int right, int bottom,
111                       int width, int height, boolean overlay, boolean header, boolean closable, String scrolling,
112                       String[] moduleJSList, ModuleConfiguration moduleConfiguration, ParameterList parameterList ) {
113            setName( name );
114            setContent( content );
115            setHidden( hidden );
116            setModuleConfiguration( moduleConfiguration );
117            setParameter( parameterList );
118            setType( type );
119            setWidth( width );
120            setHeight( height );
121            setLeft( left );
122            setTop( top );
123            setRight( right );
124            setHeader( header );
125            setClosable( closable );
126            setOverlay( overlay );
127            setBottom( bottom );
128            setModuleJSList( moduleJSList );
129            setScrolling( scrolling );
130        }
131    
132        /**
133         * returns the name of a module
134         *
135         * @return the name of a module
136         */
137        public String getName() {
138            return name;
139        }
140    
141        /**
142         * sets the name of a module
143         *
144         * @param name
145         */
146        public void setName( String name ) {
147            this.name = name;
148        }
149    
150        /**
151         * returns the name of the page/class/file etc. containing the content of the module
152         *
153         * @return the name of the page/class/file etc. containing the content of the module
154         */
155        public String getContent() {
156            return content;
157        }
158    
159        /**
160         * sets the name of the page/class/file etc. containing the content of the module
161         *
162         * @param content
163         */
164        public void setContent( String content ) {
165            this.content = content;
166        }
167    
168        /**
169         * returns true if the module is hidden. this will always be the case for modules that just
170         * offers functions to the context. visible modules may offere the capability to be turned to
171         * visible or not.
172         *
173         * @return <code>true</code> if the module is hidden.
174         */
175        public boolean isHidden() {
176            return hidden;
177        }
178    
179        /**
180         * sets the module to be hidden or visible. modules that only adds functions to a context will
181         * ignore this because they are always hidden
182         *
183         * @param hidden
184         */
185        public void setHidden( boolean hidden ) {
186            this.hidden = hidden;
187        }
188    
189        /**
190         * returns the a specific confguration for a module. This may be <tt>null</tt> if the module
191         * doesn't need to be configured.
192         *
193         * @return the a specific confguration for a module. This may be <code>null</code>if the
194         *         module doesn't need to be configured.
195         */
196        public ModuleConfiguration getModuleConfiguration() {
197            return moduleConfiguration;
198        }
199    
200        /**
201         * sets the specific configuration for a module.
202         *
203         * @param configuration
204         */
205        public void setModuleConfiguration( ModuleConfiguration configuration ) {
206            this.moduleConfiguration = configuration;
207        }
208    
209        /**
210         * returns a list of parameters that will be passed to a class/object etc. that represents a
211         * module
212         *
213         * @return parameters
214         */
215        public ParameterList getParameter() {
216            return parameterList;
217        }
218    
219        /**
220         * sets a list of parameters that will be passed to a class/object etc. that represents a module
221         *
222         * @param parameterList
223         */
224        public void setParameter( ParameterList parameterList ) {
225            this.parameterList = parameterList;
226        }
227    
228        /**
229         * adds a parameter to the list of parameters that will be passed to a class/object etc. that
230         * represents a module
231         *
232         * @param parameter
233         */
234        public void addParameter( Parameter parameter ) {
235            parameterList.addParameter( parameter );
236        }
237    
238        /**
239         * removes a parameter to the list of parameters that will be passed to a class/object etc. that
240         * represents a module
241         *
242         * @param name
243         */
244        public void removeParameter( String name ) {
245            parameterList.removeParameter( name );
246        }
247    
248        /**
249         * see also org.deegree.clients.context.Module#setType(java.lang.String)
250         *
251         * @param type
252         *            to set
253         */
254        public void setType( String type ) {
255            if ( type != null ) {
256                this.type = type.toLowerCase();
257            }
258        }
259    
260        /**
261         * see also org.deegree.clients.context.Module#getType()
262         *
263         * @return the type.
264         */
265        public String getType() {
266            return type;
267        }
268    
269        /**
270         * returns the width of the module in the GUI. If '0' will be returned the GUI can set the with
271         * like it is best
272         *
273         * @return the width of the module in the GUI. If '0' will be returned the GUI can set the with
274         *         like it is best
275         */
276        public int getWidth() {
277            return this.width;
278        }
279    
280        /**
281         * sets the desired width of the module in the GUI. If '0' ist passed the GUI can set the with
282         * like it is best
283         *
284         * @param width
285         *            desired width of the module
286         */
287        public void setWidth( int width ) {
288            this.width = width;
289        }
290    
291        /**
292         * returns the height of the module in the GUI. If '0' will be returned the GUI can set the with
293         * like it is best
294         *
295         * @return the height of the module in the GUI. If '0' will be returned the GUI can set the with
296         *         like it is best
297         */
298        public int getHeight() {
299            return this.height;
300        }
301    
302        /**
303         * sets the desired height of the module in the GUI. If '0' ist passed the GUI can set the with
304         * like it is best
305         *
306         * @param height
307         *            desired width of the module
308         */
309        public void setHeight( int height ) {
310            this.height = height;
311        }
312    
313        /**
314         * @return the bottom
315         */
316        public int getBottom() {
317            return bottom;
318        }
319    
320        /**
321         * @param bottom
322         *            the bottom to set
323         */
324        public void setBottom( int bottom ) {
325            this.bottom = bottom;
326        }
327    
328        /**
329         * @return the left
330         */
331        public int getLeft() {
332            return left;
333        }
334    
335        /**
336         * @param left
337         *            the left to set
338         */
339        public void setLeft( int left ) {
340            this.left = left;
341        }
342    
343        /**
344         * @return the right
345         */
346        public int getRight() {
347            return right;
348        }
349    
350        /**
351         * @param right
352         *            the right to set
353         */
354        public void setRight( int right ) {
355            this.right = right;
356        }
357    
358        /**
359         * @return the top
360         */
361        public int getTop() {
362            return top;
363        }
364    
365        /**
366         * @param top
367         *            the top to set
368         */
369        public void setTop( int top ) {
370            this.top = top;
371        }
372    
373        /**
374         * @return the closable
375         */
376        public boolean isClosable() {
377            return closable;
378        }
379    
380        /**
381         * @param closable
382         *            the closable to set
383         */
384        public void setClosable( boolean closable ) {
385            this.closable = closable;
386        }
387    
388        /**
389         * @return the header
390         */
391        public boolean hasHeader() {
392            return header;
393        }
394    
395        /**
396         * @param header
397         *            the header to set
398         */
399        public void setHeader( boolean header ) {
400            this.header = header;
401        }
402    
403        /**
404         * @return the overlay
405         */
406        public boolean isOverlay() {
407            return overlay;
408        }
409    
410        /**
411         * @param overlay
412         *            the overlay to set
413         */
414        public void setOverlay( boolean overlay ) {
415            this.overlay = overlay;
416        }
417    
418        /**
419         * @return moduleJSList
420         */
421        public String[] getModuleJSList() {
422            return moduleJSList;
423        }
424    
425        /**
426         * @param list
427         */
428        public void setModuleJSList( String[] list ) {
429            this.moduleJSList = list;
430        }
431    
432        /**
433         * return true is the module should has scrollbars in the GUI<br>
434         * possible values are
435         * <UL>
436         * <li>no
437         * <li>yes
438         * <li>auto
439         * </UL>
440         * default is auto
441         *
442         * @return <code>true</code> is the module should has scrollbars in the GUI possible values
443         *         are
444         */
445        public String getScrolling() {
446            return scrolling;
447        }
448    
449        /**
450         * @see #getScrolling()
451         * @param scrollable
452         */
453        public void setScrolling( String scrollable ) {
454            this.scrolling = scrollable;
455        }
456    }