/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2002-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.styling;
import java.util.List;
/**
* Indicates how geographical content should be displayed (we call this a style for simplicity; in the spec it is called a UserStyle (user-defined style)).
* <p>
* The details of this object are taken from the
* <a href="https://portal.opengeospatial.org/files/?artifact_id=1188">
* OGC Styled-Layer Descriptor Report (OGC 02-070) version 1.0.0.</a>:
* <pre><code>
* <xsd:element name="UserStyle">
* <xsd:annotation>
* <xsd:documentation>
* A UserStyle allows user-defined styling and is semantically
* equivalent to a WMS named style.
* </xsd:documentation>
* </xsd:annotation>
* <xsd:complexType>
* <xsd:sequence>
* <xsd:element ref="sld:Name" minOccurs="0"/>
* <xsd:element ref="sld:Title" minOccurs="0"/>
* <xsd:element ref="sld:Abstract" minOccurs="0"/>
* <xsd:element ref="sld:IsDefault" minOccurs="0"/>
* <xsd:element ref="sld:FeatureTypeStyle" maxOccurs="unbounded"/>
* </xsd:sequence>
* </xsd:complexType>
* </xsd:element>
* </code></pre>
*
* @source $URL$
* @version $Id$
* @author James Macgill
*/
public interface Style extends org.opengis.style.Style {
void setName(String name);
/**
* Description for this style.
* @return Human readable description for use in user interfaces
* @since 2.5.x
*/
Description getDescription();
/**
* Style Title (human readable name for user interfaces)
*
* @deprecated use getDescription().getTitle().toString()
*/
String getTitle();
/**
* @param title
* @deprecated please use getDescription().setTitle( new SimpleInternationalString( text ) );
*/
void setTitle(String title);
/**
* Description of this style
*
* @deprecated use getDesciption().getAbstract().toString()
*/
String getAbstract();
/**
* @deprecated use getDescription().setAbstract( new SimpleInternationalString( text ) );
*/
void setAbstract(String abstractStr);
/**
* Indicates that this is the default style.
* <p>
* Assume this is kept for GeoServer enabling a WMS to track
* which style is considered the default. May consider providing a
* clientProperties mechanism similar to Swing JComponent allowing
* applications to mark up the Style content for custom uses.
* </p>
* @param isDefault
*/
void setDefault(boolean isDefault);
/**
* FeatureTypeStyles rendered in order of appearance in this list.
*/
public List<FeatureTypeStyle> featureTypeStyles();
/**
* This functionality is from an ISO specificaiton; and conflicts with the idea of an
* else rule presented by SLD.
* <p>
* Implementations may choose to look up the first symbolizer of an elseFilter or allow
* this to be provided?
*
* @return Symbolizer to use if no rules work out.
*/
public Symbolizer getDefaultSpecification();
/**
* @param defaultSymbolizer To be used if a feature is not rendered by any of the rules
*/
public void setDefaultSpecification( Symbolizer defaultSymbolizer );
/**
* Array of FeatureTypeStyles in portrayal order.
* <p>
* FeatureTypeStyle entries are rendered in order of appearance in this list.
* </p>
* <p>
* <i>Note: We are using a Array here to continue with Java 1.4 deployment.</i>
* </p>
* @deprecated use featureTypeStyles().toArray( new FeatureTypeStyle[0] )
*/
FeatureTypeStyle[] getFeatureTypeStyles();
/**
* @deprecated Use featureTypeStyles().clear(); featureTypeStyles.addAll( ... )
*/
void setFeatureTypeStyles(FeatureTypeStyle[] types);
/**
* @deprecated Use featureTypeStyles().add( type )
*/
void addFeatureTypeStyle(FeatureTypeStyle type);
/**
* Used to navigate Style information during portrayal.
*
* @param visitor
*/
void accept(org.geotools.styling.StyleVisitor visitor);
}