org.openstreetmap.josm.data.osm.visitor.paint
Class MapRendererFactory

java.lang.Object
  extended by org.openstreetmap.josm.data.osm.visitor.paint.MapRendererFactory

public class MapRendererFactory
extends java.lang.Object

MapRendererFactory manages a list of map renderer classes and associated meta data (display name, description).

Plugins can implement and supply their own map renderers.

Sample code in a plugin
 public class MyMapRenderer extends AbstractMapRenderer {
    // ....
 }
 
 // to be called when the plugin is created
 MapRendererFactory factory = MapRendererFactory.getInstance();
 factory.register(MyMapRenderer.class, "My map renderer", "This is is a fast map renderer");
 factory.activate(MyMapRenderer.class);
 
 


Nested Class Summary
static class MapRendererFactory.Descriptor
           
static class MapRendererFactory.MapRendererFactoryException
           
 
Field Summary
private  java.lang.Class<? extends AbstractMapRenderer> activeRenderer
           
private  java.util.List<MapRendererFactory.Descriptor> descriptors
           
private static MapRendererFactory instance
           
static java.lang.String PREF_KEY_RENDERER_CLASS_NAME
          preference key for the renderer class name.
 
Constructor Summary
private MapRendererFactory()
           
 
Method Summary
 void activate(java.lang.Class<? extends AbstractMapRenderer> renderer)
          Activates a map renderer class.
 void activateDefault()
          Activates the default map renderer.
private  void activateMapRenderer(java.lang.String rendererClassName)
           
 AbstractMapRenderer createActiveRenderer(java.awt.Graphics2D g, NavigatableComponent viewport, boolean isInactiveMode)
          Creates an instance of the currently active renderer.
static MapRendererFactory getInstance()
          Replies the unique instance
 java.util.List<MapRendererFactory.Descriptor> getMapRendererDescriptors()
          Replies the (unmodifiable) list of map renderer descriptors.
 boolean isRegistered(java.lang.Class<? extends AbstractMapRenderer> renderer)
          Replies true, if Renderer is already a registered map renderer class.
 boolean isWireframeMapRendererActive()
          Replies true, if currently the wireframe map renderer is active.
private static java.lang.Class<?> loadRendererClass(java.lang.String className)
           
 void register(java.lang.Class<? extends AbstractMapRenderer> renderer, java.lang.String displayName, java.lang.String description)
          Registers a map renderer class.
private  void registerDefaultRenderers()
           
 void unregister(java.lang.Class<? extends AbstractMapRenderer> renderer)
          Unregisters a map renderer class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PREF_KEY_RENDERER_CLASS_NAME

public static final java.lang.String PREF_KEY_RENDERER_CLASS_NAME
preference key for the renderer class name. Default: class name for StyledMapRenderer

See Also:
Constant Field Values

instance

private static MapRendererFactory instance

descriptors

private final java.util.List<MapRendererFactory.Descriptor> descriptors

activeRenderer

private java.lang.Class<? extends AbstractMapRenderer> activeRenderer
Constructor Detail

MapRendererFactory

private MapRendererFactory()
Method Detail

getInstance

public static MapRendererFactory getInstance()
Replies the unique instance

Returns:

loadRendererClass

private static java.lang.Class<?> loadRendererClass(java.lang.String className)

activateMapRenderer

private void activateMapRenderer(java.lang.String rendererClassName)

registerDefaultRenderers

private void registerDefaultRenderers()

isRegistered

public boolean isRegistered(java.lang.Class<? extends AbstractMapRenderer> renderer)
                     throws java.lang.IllegalArgumentException

Replies true, if Renderer is already a registered map renderer class.

Parameters:
renderer - the map renderer class. Must not be null.
Returns:
true, if Renderer is already a registered map renderer class
Throws:
java.lang.IllegalArgumentException - thrown if renderer is null

register

public void register(java.lang.Class<? extends AbstractMapRenderer> renderer,
                     java.lang.String displayName,
                     java.lang.String description)
              throws java.lang.IllegalArgumentException,
                     java.lang.IllegalStateException

Registers a map renderer class.

Parameters:
renderer - the map renderer class. Must not be null.
displayName - the display name to be displayed in UIs (i.e. in the preference dialog)
description - the description
Throws:
java.lang.IllegalArgumentException - thrown if renderer is null
java.lang.IllegalStateException - thrown if renderer is already registered

unregister

public void unregister(java.lang.Class<? extends AbstractMapRenderer> renderer)

Unregisters a map renderer class.

If the respective class is also the active renderer, the renderer is reset to the default renderer.

Parameters:
renderer - the map renderer class. Must not be null.

activate

public void activate(java.lang.Class<? extends AbstractMapRenderer> renderer)
              throws java.lang.IllegalArgumentException,
                     java.lang.IllegalStateException

Activates a map renderer class.

The renderer class must already be registered.

Parameters:
renderer - the map renderer class. Must not be null.
Throws:
java.lang.IllegalArgumentException - thrown if renderer is null
java.lang.IllegalStateException - thrown if renderer isn't registered yet

activateDefault

public void activateDefault()
                     throws java.lang.IllegalStateException

Activates the default map renderer.

Throws:
java.lang.IllegalStateException - thrown if the default renderer StyledMapRenderer isn't registered

createActiveRenderer

public AbstractMapRenderer createActiveRenderer(java.awt.Graphics2D g,
                                                NavigatableComponent viewport,
                                                boolean isInactiveMode)
                                         throws MapRendererFactory.MapRendererFactoryException

Creates an instance of the currently active renderer.

Throws:
MapRendererFactory.MapRendererFactoryException - thrown if creating an instance fails
See Also:
AbstractMapRenderer.AbstractMapRenderer(Graphics2D, NavigatableComponent, boolean)

getMapRendererDescriptors

public java.util.List<MapRendererFactory.Descriptor> getMapRendererDescriptors()

Replies the (unmodifiable) list of map renderer descriptors.

Returns:
the descriptors

isWireframeMapRendererActive

public boolean isWireframeMapRendererActive()

Replies true, if currently the wireframe map renderer is active. Otherwise, false.

There is a specific method for WireframeMapRenderer for legacy support. Until 03/2011 there were only two possible map renderers in JOSM: the wireframe renderer and the styled renderer. For the time being there are still UI elements (menu entries, etc.) which toggle between these two renderers only.

Returns:
true, if currently the wireframe map renderer is active. Otherwise, false


JOSM