Class ALspStyleCollectorWrapper

java.lang.Object
com.luciad.view.lightspeed.style.styler.ALspStyleCollector
com.luciad.view.lightspeed.style.styler.ALspStyleCollectorWrapper

public class ALspStyleCollectorWrapper extends ALspStyleCollector
A wrapper for a style collector to allow easy creation of wrappers that will even remain compatible if additional abstract methods are added to ALspStyleCollector.

By default, wrapping a style collector in this wrapper does not have any effect at all. Users of this class have to extend it to achieve the desired behavior.

As an example, this class can be used to filter out all TLspFillStyle instances before passing the styles on to the delegate. This allows you to implement a fill toggle action.

The following example shows a styler that uses a wrapper that changes the opacity of the icon styles:


 public void style( Collection<?> aObjects, ALspStyleCollector aStyleCollector, TLspContext aContext ) {
    ALspStyleCollectorWrapper myWrapper = new ALspStyleCollectorWrapper(aStyleCollector) {
      &#064;Override
      public ALspStyleCollector styles(List<? extends ALspStyle> aStyles) {
        List<ALspStyle> opacityStyles = new ArrayList<ALspStyle>();
          for (ALspStyle style : aStyles) {
            if (style instanceof TLspIconStyle) {
              style = ((TLspIconStyle) style).asBuilder().opacity(.2f).build();
            }
            opacityStyles.add(style);
          }
        return super.styles(opacityStyles);
      }
     };
   fDelegateStyler.style( aObjects, myWrapper, aContext );
 }
 
Since:
2012.0
  • Constructor Details

    • ALspStyleCollectorWrapper

      public ALspStyleCollectorWrapper(ALspStyleCollector aDelegate)
      Wrapper constructor.
      Parameters:
      aDelegate - The collector to which all calls will be delegated.
  • Method Details

    • destroy

      public void destroy()
      Description copied from class: ALspStyleCollector
      Cleanup method for style collector. Specific implementations are encouraged to call this method when styling is done. This allows to check whether the style collector was used correctly by the ILspStyler.
      Overrides:
      destroy in class ALspStyleCollector
    • getObjects

      public Collection<? extends Object> getObjects()
      Description copied from class: ALspStyleCollector
      Returns the objects that have already been provided. Can be called from within ALspStyleCollector.submitImpl(). This Collection is reset after each call to ALspStyleCollector.submit().
      Overrides:
      getObjects in class ALspStyleCollector
      Returns:
      The collection of objects for which style has been specified.
    • getStyleTargetProvider

      public ALspStyleTargetProvider getStyleTargetProvider()
      Description copied from class: ALspStyleCollector

      Returns the style target provider that has been provided together with the current set of objects. Can be called from within ALspStyleCollector.submitImpl(). This will be cleared after every call to ALspStyleCollector.submit().

      It is possible that this method returns null. In that case the domain object itself is used as the style target.

      Null by default.

      Overrides:
      getStyleTargetProvider in class ALspStyleCollector
      Returns:
      The current style target provider or null.
    • getStyles

      public List<ALspStyle> getStyles()
      Description copied from class: ALspStyleCollector
      Returns the styles that have been specified for the current set of objects. Can be called from within ALspStyleCollector.submitImpl(). This List is reset after each call to ALspStyleCollector.submit().
      Overrides:
      getStyles in class ALspStyleCollector
      Returns:
      A list of styles, can be empty if the given objects should not be visualized.
    • hide

      public final ALspStyleCollector hide()
      Hides the specified objects. A call to this method has to be preceded by a call that specifies objects such as ALspStyleCollector.object(Object) or ALspStyleCollector.objects(Collection).

      Example usage:
      myCollector.object(myObject).hide().submit()

      This method forwards the call to the styles(java.util.List) method with an empty style list. Override that method if you want to customize the behavior.

      Overrides:
      hide in class ALspStyleCollector
      Returns:
      This style collector
    • object

      public final ALspStyleCollector object(Object aObject)
      Specifies a single Object to be styled. Preferably, this method should only be used if the given object uses a unique style, that is different from the style of all other objects.

      Example usage:
      myCollector.object(myILcdPoint).style(myIconStyle).submit()

      The object must be an object that is part of the collection that has been passed as an argument in ILspStyler.style(Collection, ALspStyleCollector, TLspContext).

      Specifying other objects after a call to this method will invalidate the result of this call.

      This method forwards the call to the objects(java.util.Collection) method. Override that method if you want to customize the behavior.

      Overrides:
      object in class ALspStyleCollector
      Parameters:
      aObject - The object to style.
      Returns:
      this style collector
    • objects

      public ALspStyleCollector objects(Collection<? extends Object> aObjects)
      Description copied from class: ALspStyleCollector
      Specifies a collection of objects to be styled. This method can be used if multiple objects share the same style.

      Example usage:
      myCollector.objects(Arrays.asList(myILcdPoint1,myILcdPoint2)).style(myIconStyle).submit()

      The objects must all be contained in the collection that has been passed as an argument in ILspStyler.style(Collection, ALspStyleCollector, TLspContext).

      Specifying other objects after a call to this method will invalidate the result of this call.

      Overrides:
      objects in class ALspStyleCollector
      Parameters:
      aObjects - The objects to style.
      Returns:
      this style collector
    • geometry

      public final ALspStyleCollector geometry(ILcdShape aGeometry)
      Specifies the geometry on which the style should be applied. Preferably, this method should only be used if the domain object uses a unique style, that is different from the style of all other objects.

      The aGeometry argument allows you to specify a particular geometry to which the styling should be applied, that is different from the object itself.

      Example usage:
      myCollector.object(myObject).geometry(myObjectAsILcdPoint).style(myIconStyle).submit()

      This method forwards the call to the geometry(ALspStyleTargetProvider) method. Override that method if you want to customize the behavior.

      Overrides:
      geometry in class ALspStyleCollector
      Parameters:
      aGeometry - The geometry to which the styling should be applied
      Returns:
      this style collector
    • geometry

      public ALspStyleCollector geometry(ALspStyleTargetProvider aStyleTargetProvider)
      Description copied from class: ALspStyleCollector
      Specifies an ALspStyleTargetProvider that should be used to convert objects into a collection of objects on which the style can be applied. This method can be used if multiple objects share the same style.

      The ALspStyleTargetProvider can be used in a number of cases:

      • Styling of objects that do not implement a known interface
      • Styling of particular parts of an object, such as a specific shape in an ILcdShapeList, or a point of a point list.
      • Conversion of the geometry of the object into a geometry that is more appropriate to achieve the desired visualization.

      Example usage:
      myCollector.objects(Arrays.asList(myObject1,myObject2)).geometry(myObjectToPointConverter).style(myIconStyle).submit()

      Overrides:
      geometry in class ALspStyleCollector
      Parameters:
      aStyleTargetProvider - The target provider.
      Returns:
      this style collector
    • style

      public final ALspStyleCollector style(ALspStyle aStyle)
      Applies the given style to the specified objects. A call to this method has to be preceded by a call that specifies objects such as ALspStyleCollector.object(Object) or ALspStyleCollector.objects(Collection).

      Example usage:
      myCollector.object(myILcdPoint).style(myIconStyle).submit()

      Specifying other styles after a call to this method will invalidate the result of this call.

      This method forwards the call to the styles(java.util.List) method. Override that method if you want to customize the behavior.

      Overrides:
      style in class ALspStyleCollector
      Parameters:
      aStyle - The style to apply.
      Returns:
      This style collector.
    • styles

      public ALspStyleCollector styles(List<? extends ALspStyle> aStyles)
      Description copied from class: ALspStyleCollector
      Applies the given list of styles to the specified objects. A call to this method has to be preceded by a call that specifies objects such as ALspStyleCollector.object(Object) or ALspStyleCollector.objects(Collection).

      Example usage:
      myCollector.object(myILcdPoint).styles(Arrays.asList(myIconStyle,myVerticalLineStyle)).submit()

      Specifying other styles after a call to this method will invalidate the result of this call.

      Overrides:
      styles in class ALspStyleCollector
      Parameters:
      aStyles - The styles to apply. This list should not be modified after using it as an argument in this method.
      Returns:
      This style collector.
    • styles

      public final ALspStyleCollector styles(ALspStyle... aStyles)
      Applies the given list of styles to the specified objects. A call to this method has to be preceded by a call that specifies objects such as ALspStyleCollector.object(Object) or ALspStyleCollector.objects(Collection).

      Example usage:
      myCollector.object(myILcdPoint).styles(myIconStyle,myVerticalLineStyle).submit()

      Specifying other styles after a call to this method will invalidate the result of this call.

      This method forwards the call to the styles(java.util.List) method. Override that method if you want to customize the behavior.

      Overrides:
      styles in class ALspStyleCollector
      Parameters:
      aStyles - The style to apply.
      Returns:
      This style collector.
    • submit

      public void submit()
      Description copied from class: ALspStyleCollector
      Submits the currently specified objects and styles. A call to this method has to be preceded by a call that specifies styles such as ALspStyleCollector.style(ALspStyle) or ALspStyleCollector.hide(). This mandatory method submits a part of the styling before specifying new objects and styles.

      Example usage:
      myCollector.object(myILcdPoint1).style(myIconStyle1).submit();
      myCollector.object(myILcdPoint2).style(myIconStyle2).submit();

      When this method is called multiple times for the same objects, all specified styles from the different calls will be applied.

      Example to apply a line style to all objects and an additional fill style to one specific object:
      myCollector.objects(myObjects).style(myLineStyle).submit();
      myCollector.object(myFirstObject).style(myFillStyle).submit();

      Not calling this method will result in no styles being specified at all. Calling any other method after already having provided objects and/or styles will result in invalidating those previous calls.

      Overrides:
      submit in class ALspStyleCollector
    • submitImpl

      public void submitImpl()
      This method is not called by the submit() method. By default this call is delegated to the wrapped ALspStyleCollector.
      Specified by:
      submitImpl in class ALspStyleCollector
      See Also: