com.bbn.openmap.proj
Class ProjectionFactory

java.lang.Object
  extended bycom.bbn.openmap.MapHandlerChild
      extended bycom.bbn.openmap.OMComponent
          extended bycom.bbn.openmap.proj.ProjectionFactory
All Implemented Interfaces:
java.beans.beancontext.BeanContextChild, java.beans.beancontext.BeanContextMembershipListener, java.util.EventListener, LightMapHandlerChild, PropertyConsumer

public class ProjectionFactory
extends OMComponent

The ProjectionFactory creates Projections. It used to have Projection classes hard-coded into it which were accessable through static methods, but this paradigm has been changed slightly so the ProjectionFactory is actually a singleton which can be accessed by a ProjectionFactory.getInstance() static method. This was done so that the singleton, when added to the MapHandler, can look for ProjectionLoaders to dynamically add projections to the factory. For convenience, there are still some static methods on the ProjectionFactory class which use the singleton to create and return projection objects. Changes to the available projections can be discovered through property changes.

The ProjectionFactory singleton instance can be added to the MapHandler via the openmap.properties file by adding the ProjectionFactoryLoader to the openmap.components property. If you are using the openmap.properties file to configure your application, you MUST add the ProjectionFactoryLoader, or you won't see any projections.


Field Summary
static java.lang.String AvailableProjectionProperty
          The property name that is fired when the list of available projections has changed.
static java.lang.String CENTER
          Center lat/lon property parameter for new projections passed to ProjectionLoader.
static java.lang.String DATUM
          Datum property parameter for new projections passed to ProjectionLoader.
static java.lang.String HEIGHT
          Projeciton height (pixels) property parameter for new projections passed to ProjectionLoader.
protected static ProjectionFactory instance
          Singleton instance.
protected  java.beans.PropertyChangeSupport pcs
          PropertyChangeSupport for letting listeners know about new projections that are available from the factory.
protected  java.util.Vector projLoaders
           
static java.lang.String SCALE
          Scale property parameter for new projections passed to ProjectionLoader.
static java.lang.String WIDTH
          Projection width (pixels) property parameter for new projections passed to ProjectionLoader.
 
Fields inherited from class com.bbn.openmap.OMComponent
i18n, propertyPrefix
 
Fields inherited from class com.bbn.openmap.MapHandlerChild
beanContextChildSupport
 
Fields inherited from interface com.bbn.openmap.PropertyConsumer
EditorProperty, initPropertiesProperty, LabelEditorProperty, ScopedEditorProperty
 
Method Summary
 void addProjectionLoader(ProjectionLoader loader)
           
 void addPropertyChangeListener(java.beans.PropertyChangeListener pcl)
           
 void addPropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener pcl)
          Method for BeanContextChild interface.
 void clearProjectionLoaders()
           
 void findAndInit(java.lang.Object obj)
          Using the MapHandler to find ProjectionLoaders being added from the application.
 void findAndUndo(java.lang.Object obj)
          Using the MapHandler to find ProjectionLoaders being removed from the application.
protected  void fireLoadersChanged()
           
static java.lang.String[] getAvailableProjections()
          Returns an array of Projection names available from this factory.
static Projection getDefaultProjectionFromEnvironment()
          Looks at the Environment settings for the default projection and returns a Projection suited for those settings.
static Projection getDefaultProjectionFromEnvironment(int width, int height)
          Looks at the Environment settings for the default projection and returns a Projection suited for those settings.
static ProjectionFactory getInstance()
          Get the singleton instance of the ProjectionFactory.
static java.lang.Class getProjClassForName(java.lang.String name)
          Return the Projection Class with the given pretty name.
 java.util.Collection getProjectionLoaders()
           
static int getProjType(java.lang.String projName)
          Deprecated. The notion of a projection type number is going away, use the class of the projection instead.
 java.util.Iterator iterator()
           
static ProjectionFactory loadDefaultProjections()
          Convenience method to load default projections into the shared instance of the ProjectionFactory.
static ProjectionFactory loadDefaultProjections(ProjectionFactory pf)
          Convenience method to load default projections into a ProjectionFactory.
static Projection makeProjection(java.lang.Class projClass, float centerLat, float centerLon, float scale, int width, int height)
          Create a projection.
static Projection makeProjection(int projType, float centerLat, float centerLon, float scale, int width, int height)
          Deprecated. The notion of a projection type number is going away, use the class of the projection instead.
static Projection makeProjection(int newProjType, Projection p)
          Deprecated. The notion of a projection type number is going away, use the class of the projection instead.
 Projection makeProjection(ProjectionLoader loader, float centerLat, float centerLon, float scale, int width, int height)
          Call the provided ProjectionLoader to create the projection with the given parameters.
 Projection makeProjection(ProjectionLoader loader, float centerLat, float centerLon, float scale, int width, int height, java.util.Properties projProps)
          Call the provided ProjectionLoader to create the projection with the given parameters.
static Projection makeProjection(java.lang.String projClassName, float centerLat, float centerLon, float scale, int width, int height)
          Create a projection.
static Projection makeProjection(java.lang.String projClassName, Projection p)
          Makes a new projection based on the given projection class name and parameters from the given projection.
 int numProjections()
           
 boolean removeProjectionLoader(ProjectionLoader loader)
           
 void removePropertyChangeListener(java.beans.PropertyChangeListener pcl)
           
 void removePropertyChangeListener(java.lang.String propertyName, java.beans.PropertyChangeListener pcl)
          Method for BeanContextChild interface.
 
Methods inherited from class com.bbn.openmap.OMComponent
getProperties, getPropertyInfo, getPropertyPrefix, setProperties, setProperties, setPropertyPrefix
 
Methods inherited from class com.bbn.openmap.MapHandlerChild
addVetoableChangeListener, childrenAdded, childrenRemoved, findAndInit, firePropertyChange, fireVetoableChange, getBeanContext, removeVetoableChangeListener, setBeanContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CENTER

public static final java.lang.String CENTER
Center lat/lon property parameter for new projections passed to ProjectionLoader.

See Also:
Constant Field Values

SCALE

public static final java.lang.String SCALE
Scale property parameter for new projections passed to ProjectionLoader.

See Also:
Constant Field Values

HEIGHT

public static final java.lang.String HEIGHT
Projeciton height (pixels) property parameter for new projections passed to ProjectionLoader.

See Also:
Constant Field Values

WIDTH

public static final java.lang.String WIDTH
Projection width (pixels) property parameter for new projections passed to ProjectionLoader.

See Also:
Constant Field Values

DATUM

public static final java.lang.String DATUM
Datum property parameter for new projections passed to ProjectionLoader.

See Also:
Constant Field Values

AvailableProjectionProperty

public static final java.lang.String AvailableProjectionProperty
The property name that is fired when the list of available projections has changed.

See Also:
Constant Field Values

pcs

protected java.beans.PropertyChangeSupport pcs
PropertyChangeSupport for letting listeners know about new projections that are available from the factory.


instance

protected static ProjectionFactory instance
Singleton instance.


projLoaders

protected java.util.Vector projLoaders
Method Detail

getInstance

public static ProjectionFactory getInstance()
Get the singleton instance of the ProjectionFactory.


getAvailableProjections

public static java.lang.String[] getAvailableProjections()
Returns an array of Projection names available from this factory.


getProjClassForName

public static java.lang.Class getProjClassForName(java.lang.String name)
Return the Projection Class with the given pretty name.

Parameters:
name - the name of the projection, set in the pretty name of it's ProjectionLoader.
Returns:
Class of Projection, or null if not found.

getProjType

public static int getProjType(java.lang.String projName)
Deprecated. The notion of a projection type number is going away, use the class of the projection instead.

Return an int representing the OpenMap projection, given the name of the projection. Useful for setting a projection based on the name stated in a properties file.

Parameters:
projName - the projection name from the Projection class.
Returns:
the projection type number for that name.

makeProjection

public static Projection makeProjection(int newProjType,
                                        Projection p)
Deprecated. The notion of a projection type number is going away, use the class of the projection instead.

Makes a new projection based on the given projection and given type.

The centerLat,centerLon, scale,width, and height parameters are taken from the given projection, and the type is taken from the type argument.

Parameters:
newProjType - the type for the resulting projection
p - the projection from which to copy other parameters

makeProjection

public static Projection makeProjection(int projType,
                                        float centerLat,
                                        float centerLon,
                                        float scale,
                                        int width,
                                        int height)
Deprecated. The notion of a projection type number is going away, use the class of the projection instead.

Create a projection.

Parameters:
projType - projection type
centerLat - center latitude in decimal degrees
centerLon - center latitude in decimal degrees
scale - float scale
width - pixel width of projection
height - pixel height of projection
Returns:
Projection

makeProjection

public static Projection makeProjection(java.lang.String projClassName,
                                        Projection p)
Makes a new projection based on the given projection class name and parameters from the given projection.


makeProjection

public static Projection makeProjection(java.lang.String projClassName,
                                        float centerLat,
                                        float centerLon,
                                        float scale,
                                        int width,
                                        int height)
Create a projection. If the Class for the classname can't be found, a Mercator projection will be returned.

Parameters:
projClassName - the classname of the projection.
centerLat - center latitude in decimal degrees.
centerLon - center latitude in decimal degrees.
scale - float scale.
width - pixel width of projection.
height - pixel height of projection.
Returns:
Projection

makeProjection

public static Projection makeProjection(java.lang.Class projClass,
                                        float centerLat,
                                        float centerLon,
                                        float scale,
                                        int width,
                                        int height)
Create a projection. If the class can't be found, a Mercator projection will be returned.

Parameters:
projClass - the class of the projection.
centerLat - center latitude in decimal degrees.
centerLon - center latitude in decimal degrees.
scale - float scale.
width - pixel width of projection.
height - pixel height of projection.
Returns:
Projection

getDefaultProjectionFromEnvironment

public static Projection getDefaultProjectionFromEnvironment()
Looks at the Environment settings for the default projection and returns a Projection suited for those settings. If there is a problem creating the projection, the default projection of the MapBean will be returned. The ProjectionFactory needs to be loaded with the Projection class described in the properties before this will return an expected projection.

Returns:
Projection from Environment settings.

getDefaultProjectionFromEnvironment

public static Projection getDefaultProjectionFromEnvironment(int width,
                                                             int height)
Looks at the Environment settings for the default projection and returns a Projection suited for those settings. If there is a problem creating the projection, the default projection of the MapBean will be returned. The ProjectionFactory needs to be loaded with the Projection class described in the properties before this will return an expected projection.

Parameters:
width - pixel height of projection. If 0 or less, the Environment.Width value will be used.
height - pixel height of projection. If 0 or less, the Environment.Height value will be used.
Returns:
Projection from Environment settings, fit for the pixel height and width provided.

makeProjection

public Projection makeProjection(ProjectionLoader loader,
                                 float centerLat,
                                 float centerLon,
                                 float scale,
                                 int width,
                                 int height)
Call the provided ProjectionLoader to create the projection with the given parameters. The parameters are converted to Properties before being passed to the ProjectionLoader.

Parameters:
centerLat - center latitude in decimal degrees.
centerLon - center latitude in decimal degrees.
scale - float scale.
width - pixel width of projection.
height - pixel height of projection.

makeProjection

public Projection makeProjection(ProjectionLoader loader,
                                 float centerLat,
                                 float centerLon,
                                 float scale,
                                 int width,
                                 int height,
                                 java.util.Properties projProps)
Call the provided ProjectionLoader to create the projection with the given parameters. The parameters are converted to Properties before being passed to the ProjectionLoader. The ProjectionLoader should throw a ProjectionException from here if it has a problem creating the projection with the provided parameters.

Parameters:
loader - projection loader to use.
centerLat - center latitude in decimal degrees.
centerLon - center latitude in decimal degrees.
scale - float scale.
width - pixel width of projection.
height - pixel height of projection.
projProps - a Properties object to add the parameters to, which can include extra parameters that are needed by this particular projection loader. If null, a Properties object will be created.
Returns:
projection, or null if the projection can't be created.

addProjectionLoader

public void addProjectionLoader(ProjectionLoader loader)

removeProjectionLoader

public boolean removeProjectionLoader(ProjectionLoader loader)

clearProjectionLoaders

public void clearProjectionLoaders()

iterator

public java.util.Iterator iterator()

numProjections

public int numProjections()

getProjectionLoaders

public java.util.Collection getProjectionLoaders()

fireLoadersChanged

protected void fireLoadersChanged()

addPropertyChangeListener

public void addPropertyChangeListener(java.beans.PropertyChangeListener pcl)

addPropertyChangeListener

public void addPropertyChangeListener(java.lang.String propertyName,
                                      java.beans.PropertyChangeListener pcl)
Description copied from class: MapHandlerChild
Method for BeanContextChild interface. Uses the BeanContextChildSupport to add a listener to this object's property. You don't need this function for objects that extend java.awt.Component.

Specified by:
addPropertyChangeListener in interface java.beans.beancontext.BeanContextChild
Overrides:
addPropertyChangeListener in class MapHandlerChild

removePropertyChangeListener

public void removePropertyChangeListener(java.beans.PropertyChangeListener pcl)

removePropertyChangeListener

public void removePropertyChangeListener(java.lang.String propertyName,
                                         java.beans.PropertyChangeListener pcl)
Description copied from class: MapHandlerChild
Method for BeanContextChild interface. Uses the BeanContextChildSupport to remove a listener to this object's property. You don't need this function for objects that extend java.awt.Component.

Specified by:
removePropertyChangeListener in interface java.beans.beancontext.BeanContextChild
Overrides:
removePropertyChangeListener in class MapHandlerChild

findAndInit

public void findAndInit(java.lang.Object obj)
Using the MapHandler to find ProjectionLoaders being added from the application.

Specified by:
findAndInit in interface LightMapHandlerChild
Overrides:
findAndInit in class MapHandlerChild

findAndUndo

public void findAndUndo(java.lang.Object obj)
Using the MapHandler to find ProjectionLoaders being removed from the application.

Specified by:
findAndUndo in interface LightMapHandlerChild
Overrides:
findAndUndo in class MapHandlerChild

loadDefaultProjections

public static ProjectionFactory loadDefaultProjections()
Convenience method to load default projections into the shared instance of the ProjectionFactory.

Returns:
ProjectionFactory shared instance.

loadDefaultProjections

public static ProjectionFactory loadDefaultProjections(ProjectionFactory pf)
Convenience method to load default projections into a ProjectionFactory.

Parameters:
pf -
Returns:
ProjectionFactory


Copyright (C) BBNT Solutions LLC; See http://openmap.bbn.com/ for details