001    //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/tags/2.1/src/org/deegree/graphics/Layer.java $
002    /*----------------    FILE HEADER  ------------------------------------------
003    
004    This file is part of deegree.
005    Copyright (C) 2001-2006 by:
006    EXSE, Department of Geography, University of Bonn
007    http://www.giub.uni-bonn.de/deegree/
008    lat/lon GmbH
009    http://www.lat-lon.de
010    
011    This library is free software; you can redistribute it and/or
012    modify it under the terms of the GNU Lesser General Public
013    License as published by the Free Software Foundation; either
014    version 2.1 of the License, or (at your option) any later version.
015    
016    This library is distributed in the hope that it will be useful,
017    but WITHOUT ANY WARRANTY; without even the implied warranty of
018    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
019    Lesser General Public License for more details.
020    
021    You should have received a copy of the GNU Lesser General Public
022    License along with this library; if not, write to the Free Software
023    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
024    
025    Contact:
026    
027    Andreas Poth
028    lat/lon GmbH
029    Aennchenstr. 19
030    53115 Bonn
031    Germany
032    E-Mail: poth@lat-lon.de
033    
034    Prof. Dr. Klaus Greve
035    Department of Geography
036    University of Bonn
037    Meckenheimer Allee 166
038    53115 Bonn
039    Germany
040    E-Mail: greve@giub.uni-bonn.de
041    
042                     
043     ---------------------------------------------------------------------------*/
044    package org.deegree.graphics;
045    
046    import org.deegree.model.crs.CoordinateSystem;
047    import org.deegree.model.spatialschema.Envelope;
048    
049    /**
050     * A Layer is a collection of <tt>Feature</tt>s or rasters building a thematic
051     * 'unit' waterways or country borders for example. <tt>Feature</tt>s or raster
052     * can be added or removed from the layer. A <tt>Feature</tt> or raster can e 
053     * changed by a modul of the application using the layer because only references 
054     * to <tt>Feature</tt>s or rasters are stored within a layer.
055     * 
056     * <p>------------------------------------------------------------------------</p>
057     * 
058     * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
059     * @version $Revision: 6259 $ $Date: 2007-03-20 10:15:15 +0100 (Di, 20 Mär 2007) $
060     */
061    
062    public interface Layer {
063        /**
064         * returns the name of the layer
065         */
066        String getName();
067              
068        /**
069         * returns the BoundingBox (Envelope) of Layer. This is the BoundingBox of
070         * the layers data. The BoundingBox of the View maybe larger or smaler
071         */
072        Envelope getBoundingBox();
073    
074        /**
075         * returns the coordinate reference system of the MapView
076         * 
077         */
078        CoordinateSystem getCoordinatesSystem();
079    
080        /**
081         * sets the coordinate reference system of the MapView. If a new crs is set
082         * all geometries of GeometryFeatures will be transformed to the 
083         * new coordinate reference system.
084         * 
085         */
086        void setCoordinatesSystem(CoordinateSystem crs) throws Exception;
087    
088        /**
089         * adds an eventcontroller to the MapView that's reponsible for handling
090         * events that targets the map. E.g.: zooming, panning, selecting a feature etc.
091         */
092        void addEventController( LayerEventController obj );
093    
094        /**
095         * @see Layer#addEventController(LayerEventController)
096         */
097        void removeEventController( LayerEventController obj );
098    }
099    /* ********************************************************************
100    Changes to this class. What the people have been up to:
101    $Log$
102    Revision 1.7  2006/07/04 18:30:04  poth
103    footer added
104    
105    
106    ********************************************************************** */