/[schmitzm]/trunk/src/skrueger/geotools/StyledLayerInterface.java
ViewVC logotype

Contents of /trunk/src/skrueger/geotools/StyledLayerInterface.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1203 - (show annotations)
Tue Nov 2 22:53:55 2010 UTC (14 years, 4 months ago) by alfonx
File size: 5574 byte(s)
When adding a layer to a map, the AtlasMapView stops if it's outside of the allowed max map extend.
1 /*******************************************************************************
2 * Copyright (c) 2009 Martin O. J. Schmitz.
3 *
4 * This file is part of the SCHMITZM library - a collection of utility
5 * classes based on Java 1.6, focusing (not only) on Java Swing
6 * and the Geotools library.
7 *
8 * The SCHMITZM project is hosted at:
9 * http://wald.intevation.org/projects/schmitzm/
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Lesser General Public License
13 * as published by the Free Software Foundation; either version 3
14 * of the License, or (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public License (license.txt)
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24 * or try this link: http://www.gnu.org/licenses/lgpl.html
25 *
26 * Contributors:
27 * Martin O. J. Schmitz - initial API and implementation
28 * Stefan A. Tzeggai - additional utility classes
29 ******************************************************************************/
30 package skrueger.geotools;
31
32 import java.net.URL;
33
34 import javax.swing.ImageIcon;
35
36 import org.geotools.feature.FeatureCollection;
37 import org.geotools.geometry.jts.ReferencedEnvelope;
38 import org.geotools.styling.Style;
39 import org.opengis.referencing.crs.CoordinateReferenceSystem;
40
41 import skrueger.AttributeMetadataImpl;
42 import skrueger.RasterLegendData;
43 import skrueger.i8n.Translation;
44
45 import com.vividsolutions.jts.geom.Envelope;
46
47 /**
48 * This class is the top interface for styled objects to be managed in
49 * {@link MapContextManagerInterface}. The (rough) classe structure is the
50 * following:
51 * <ul>
52 * <li><b>{@link StyledLayerInterface StyledLayerInterface<E>}</b>
53 * <ul>
54 * <li>{@link #getId()} -> String</li>
55 * <li>{@link #getKeywords() get/setKeywords()} -> {@link Translation}</li>
56 * <li>{@link #getTitle() set/getTitle()} -> {@link Translation} (short
57 * description for layer list)</li>
58 * <li>{@link #getDesc() set/getDesc()} -> {@link Translation} (long description
59 * for details)</li>
60 * <li>{@link #getCrs()} -> {@link CoordinateReferenceSystem}</li>
61 * <li>{@link #getCRSString()} -> String (readable description of CRS)</li>
62 * <li>{@link #getEnvelope()} -> {@link Envelope} (JTS-Envelope)</li>
63 * <li>{@link #getGeoObject()} -> E (GridCoverage/FeatureCollection/...)</li>
64 * <li>{@link #getStyle() set/getStyle()} -> {@link Style}</li>
65 * <li>{@link #uncache()}</li>
66 * <li>{@link #dispose()}</li>
67 * </ul>
68 * </li>
69 * <li><b>{@link StyledFeatureCollectionInterface} extends
70 * {@link StyledLayerInterface StyledLayerInterface<FeatureCollection>}</b>
71 * <ul>
72 * <li>{@link StyledFeatureCollectionInterface#getAttributeMetaDataMap()} ->
73 * Map<Integer,AttributeMetaData></li>
74 * </ul>
75 * </li>
76 * <li><b>{@link StyledRasterInterface} extends {@link StyledLayerInterface
77 * StyledLayerInterface<GridCoverage2D>}</b>
78 * <ul>
79 * <li>{@link StyledRasterInterface#getLegendMetaData()} ->
80 * {@link RasterLegendData}</li>
81 * </ul>
82 * </li>
83 * </ul>
84 * <br>
85 * <b>Restrictions:</b>
86 * <ul>
87 * <li>layer list only depends on {@link StyledLayerInterface}</li>
88 * <li>methods returning {@link Translation} must not return {@code null}</li>
89 * <li>methods returning {@link AttributeMetadataImpl}-Map must not return {@code
90 * null}</li>
91 * <li>static helper method to get a new {@link AttributeMetadataImpl}-map withe the
92 * visible attributes only</li>
93 * <li>static helper method to create a "default" {@link AttributeMetadataImpl}-map
94 * for a {@link FeatureCollection} with all attributes visible and without real
95 * translations, but the attribute name as description.</li>
96 * </ul>
97 */
98 public interface StyledLayerInterface<E> {
99 public String getId();
100
101 public Translation getTitle();
102
103 public void setTitle(Translation title);
104
105 public Translation getDesc();
106
107 public void setDesc(Translation dec);
108
109 public Translation getKeywords();
110
111 public void setKeywords(Translation keywords);
112
113 public CoordinateReferenceSystem getCrs();
114
115 public String getCRSString();
116
117 public Envelope getEnvelope();
118
119 /**
120 * @return <code>null</code> is no CRS is available
121 */
122 public ReferencedEnvelope getReferencedEnvelope();
123
124
125 /**
126 * @return return an ImageIcon - <code>null</code> is valid and no icon or a
127 * default icon will then be shown
128 */
129 public ImageIcon getImageIcon();
130
131 public void setImageIcon(ImageIcon icon);
132
133 /**
134 * Returns the underlying GeoTools Object
135 *
136 * @throws RuntimeException
137 */
138 public E getGeoObject();
139
140 public Style getStyle();
141
142 public void setStyle(Style style);
143
144 /**
145 * Returns the {@link URL} to a (HTML) file that provides more information
146 * about this layer. If no HTML if associated with this
147 * {@link StyledLayerInterface}, then <code>null</code> will be returned.
148 *
149 * @return null or an {@link URL}
150 */
151 public URL getInfoURL();
152
153 /**
154 * Should be called when this Object is not needed anymore.
155 */
156 public void dispose();
157
158 /** Is the object already disposed? * */
159 public boolean isDisposed();
160
161 /**
162 * Clears any caches. For example the GeoObject could be released, and
163 * reread on next call of getGeoObject()
164 */
165 public void uncache();
166 // public String getLegendHtml();
167 }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26