Interface ILcdTreeLayered

All Superinterfaces:
ILcdLayered, Serializable
All Known Subinterfaces:
ILcdGXYView, ILcdRotationCapableGXYView, ILcdTreeLayeredSupport, ILspAWTView, ILspView
All Known Implementing Classes:
ALspAWTView, TLcdGXYViewBufferedImage, TLcdGXYViewCanvas, TLcdGXYViewJPanel, TLcdGXYViewJPanelLightWeight, TLcdGXYViewPanel, TLcdGXYViewPlanarImage, TLcdIndependentOrderTreeLayeredSupport, TLcdMapBufferedImage, TLcdMapCanvas, TLcdMapJPanel, TLcdMapJPanelLightWeight, TLcdMapPanel, TLcdTreeLayeredSupport, TLspAWTView, TLspExternalView, TLspFXView, TLspOffscreenView, TLspSwingView

public interface ILcdTreeLayered extends ILcdLayered

An extension of ILcdLayered, to access a flat list of layers as a hierarchical structure. The hierarchical structure can be accessed directly by calling getRootNode(). This is illustrated in the figure below.

ILcdTreeLayered layer hierarchy

The figure shows that the ILcdTreeLayered exposes a root node for the hierarchical layer structure through the getRootNode() method.

Flat list representation

At the same time, ILcdTreeLayered is linked to all the layers of the hierarchical structure, and provides a flat list representation of this hierarchical layer structure. The root node is not included in the flat list representation.

All the operations, defined in the ILcdLayered interface, can now be performed on the hierarchical structure.

Adding and/or removing layers from the hierarchical structure will also remove them from the flat list representation, and vice versa.

Two support classes allow for an easy concrete implementation of this interface in GXY views: TLcdTreeLayeredSupport and TLcdIndependentOrderTreeLayeredSupport. TLcdTreeLayeredSupport is the default. It derives the flat list from the hierarchical layer structure, and keeps them both synchronized. Moving a layer in the hierarchical structure will move the layer in the flat list representation and vice versa. The TLcdIndependentOrderTreeLayeredSupport allows having an independent layer order in the flat list representation and in the hierarchical structure.

The following assumptions are made:

  • Layers or layer nodes may only occur once in the hierarchical structure.
  • No loops are created in the hierarchical structure. This means a layernode must not be inserted into one of the layernodes contained in his subtree.

The class TLcdLayerTree is available to visualise the hierarchical layer structure.

Since:
9.0
See Also:
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Registers the given ILcdLayeredListener to be notified when layers are added, removed or moved in the flat list.
    boolean
    Returns whether the flat list representation of the hierarchical layer structure contains the given layer.
    getLayer(int aIndex)
    Returns the ILcdLayer with index aIndex in the flat list representation of the hierarchical layer structure.
    Returns the root node of the tree structure.
    int
    Returns the index of the given layer aLayer in the flat list representation of the hierarchical structure.
    int
    Returns the number of layers in the flat list representation of the hierarchical layer structure.
    Returns the ILcdLayer of the flat list that contains the given ILcdModel.
    Returns an Enumeration of all the ILcdLayers currently in the flat list representation of the hierarchical layer structure, starting from the bottom layer to the top layer.
    Returns an Enumeration of all the ILcdLayers currently in the flat list representation of the hierarchical layer structure, starting from the top layer to the bottom layer.
    void
    Remove all the layers from the hierarchical layer structure and the flat list representation.
    void
    Removes a layer from both the hierarchical layer structure and the flat list representation.
    void
    Unregisters the given ILcdLayeredListener from receiving layered events for the flat list.

    Methods inherited from interface com.luciad.view.ILcdLayered

    addLayeredListener, getLayers, moveLayerAt, removeLayeredListener
  • Method Details

    • getRootNode

      ILcdLayerTreeNode getRootNode()

      Returns the root node of the tree structure.

      Returns:
      the root node of the tree structure
    • layerCount

      int layerCount()

      Returns the number of layers in the flat list representation of the hierarchical layer structure. This does not include the root node.

      Specified by:
      layerCount in interface ILcdLayered
      Returns:
      the number of layers in the flat list. Does not include the root node.
    • layers

      Enumeration layers()

      Returns an Enumeration of all the ILcdLayers currently in the flat list representation of the hierarchical layer structure, starting from the bottom layer to the top layer. This does not include the root node.

      Specified by:
      layers in interface ILcdLayered
      Returns:
      an Enumeration of all the ILcdLayers currently in the flat list, starting from the bottom layer to the top layer. Does not include the root node.
    • layersBackwards

      Enumeration layersBackwards()

      Returns an Enumeration of all the ILcdLayers currently in the flat list representation of the hierarchical layer structure, starting from the top layer to the bottom layer. This does not include the root node.

      Specified by:
      layersBackwards in interface ILcdLayered
      Returns:
      an Enumeration of all the ILcdLayers currently in the flat list, starting from the top layer to the bottom layer. Does not include the root node.
    • getLayer

      ILcdLayer getLayer(int aIndex) throws ArrayIndexOutOfBoundsException

      Returns the ILcdLayer with index aIndex in the flat list representation of the hierarchical layer structure.

      Specified by:
      getLayer in interface ILcdLayered
      Parameters:
      aIndex - the position of the layer to retrieve in the flat list representation.
      Returns:
      the ILcdLayer with index aIndex in the flat list representation
      Throws:
      ArrayIndexOutOfBoundsException - if the given index is invalid
    • indexOf

      int indexOf(ILcdLayer aLayer) throws NoSuchElementException

      Returns the index of the given layer aLayer in the flat list representation of the hierarchical structure.

      Specified by:
      indexOf in interface ILcdLayered
      Parameters:
      aLayer - the layer whose index to return
      Returns:
      the index of aLayer in the flat list representation
      Throws:
      NoSuchElementException - if aLayer is not in the flat list
    • removeLayer

      void removeLayer(ILcdLayer aLayer)

      Removes a layer from both the hierarchical layer structure and the flat list representation. When removing an ILcdLayerTreeNode all of its children will also be removed. An event will then be generated for every layer that has been removed (one for the node and one for each of its child layers).

      It is not possible to remove the root node

      Specified by:
      removeLayer in interface ILcdLayered
      Parameters:
      aLayer - the layer to remove. If the layer is not in the flat list, this method has no effect.
    • containsLayer

      boolean containsLayer(ILcdLayer aLayer)

      Returns whether the flat list representation of the hierarchical layer structure contains the given layer. More formally, returns true if and only if the flat list representation contains at least one layer l such that (aLayer==null ? l==null : aLayer.equals(l)).

      Calling this method with the root node will return false, since the root node is not a part of the flat list representation.

      Specified by:
      containsLayer in interface ILcdLayered
      Parameters:
      aLayer - the layer to check whether it is in the flat list representation
      Returns:
      true when the flat list representation contains the given layer, false otherwise
    • removeAllLayers

      void removeAllLayers()

      Remove all the layers from the hierarchical layer structure and the flat list representation. An event will be fired for every layer that has been removed. This will not remove the root node.

      Specified by:
      removeAllLayers in interface ILcdLayered
    • addLayeredListener

      void addLayeredListener(ILcdLayeredListener aLayeredListener)
      Registers the given ILcdLayeredListener to be notified when layers are added, removed or moved in the flat list.
      Specified by:
      addLayeredListener in interface ILcdLayered
      Parameters:
      aLayeredListener - the listener that from now on will be notified of all changes to the flat list.
      See Also:
    • removeLayeredListener

      void removeLayeredListener(ILcdLayeredListener aLayeredListener)
      Unregisters the given ILcdLayeredListener from receiving layered events for the flat list.
      Specified by:
      removeLayeredListener in interface ILcdLayered
      Parameters:
      aLayeredListener - the listener that will no longer be notified of changes in the flat list.
      See Also:
    • layerOf

      ILcdLayer layerOf(ILcdModel aModel) throws NoSuchElementException
      Returns the ILcdLayer of the flat list that contains the given ILcdModel.
      Specified by:
      layerOf in interface ILcdLayered
      Parameters:
      aModel - the model to check for in the flat list
      Returns:
      the ILcdLayer of the flat list that contains the given ILcdModel.
      Throws:
      NoSuchElementException - if there is no layer containing the given model