Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[udig-devel] new documentation page interceptors

One of the things I have been doing is updating the documentation associated with each of the extension points;  and one of the fields I get to fill in is that of "supplied implementation" which I am pointing to a wiki page.

Thanks to Jim for supplying the example used on that page.

Title: layerInterceptor

layerInterceptor

Identifier:
net.refractions.udig.project.layerInterceptor

Since:
[Enter the first release in which this extension point appears.]

Description:
Layer Interceptors allow customized actions to be executed at certain points in a Layer's life cycle. The points available are: Layer creation, Layer being added to a Map and layer being removed from a map.

Configuration Markup:

<!ELEMENT extension (layerCreated* , layerAdded* , layerRemoved*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED

>


<!ELEMENT layerCreated EMPTY>

<!ATTLIST layerCreated

id    CDATA #REQUIRED

name  CDATA #IMPLIED

class CDATA #REQUIRED

>

An interceptor that will be ran when a layer is created. This is only ran if the layer is created by a Map's LayerFactory class. Not ProjectPackage's createLayer() methods.


  • id - an id for the extension
  • name - A name for the interceptor
  • class - The interceptor class.

<!ELEMENT layerAdded EMPTY>

<!ATTLIST layerAdded

id    CDATA #REQUIRED

name  CDATA #IMPLIED

class CDATA #REQUIRED

>

An interceptor that will be ran when a layer is added to a map.


  • id - an id for the extension
  • name - A name for the interceptor
  • class - The interceptor class.

<!ELEMENT layerRemoved EMPTY>

<!ATTLIST layerRemoved

id    CDATA #REQUIRED

name  CDATA #IMPLIED

class CDATA #REQUIRED

>

An interceptor that will be ran when a layer is about to be removed from a map. The method is called before the layer has been removed.


  • id - an id for the extension
  • name - A name for the interceptor
  • class - The interceptor class.

Examples:
An example use is:

<layerCreated
  class="net.refractions.udig.project.internal.impl.SetStyleInterceptor"
  id="net.refractions.udig.project.setStyleInterceptor"
  name="Set Layer Style"/>
This entry is used to advertise the SetStyleInterceptor to uDig so that it can be used to configure a layer as it is created. A layer interceptor is free to change more then just the layer under observation; as an example a layer interceptor is used to expand or set the bounds of a map when it is added.

public class InitMapBoundsInterceptor implements LayerInterceptor {
    public void run( Layer layer ) {
        if(layer.getMap()==null ){
            return; // this check is here because we could be doing a copy            
        }
        Map map = layer.getMapInternal();
        ReferencedEnvelope bounds = map.getViewportModelInternal().getBounds();
        
        //  If first layer or if the crs has been unchanged from the original BBox
  if( map.getMapLayers().size()==1 || bounds==ViewportModel.NIL_BBOX){
            bounds = map.getBounds(ProgressManager.instance().get());
            map.getViewportModelInternal().setBounds(bounds);
        }
    }
}

API Information:
Implementors are responsible for providing an implementation of LayerInterceptor.

Supplied Implementation:
The developers guide has a page on Interceptors.



Back to the top