Class CompositeLayer

    • Constructor Detail

      • CompositeLayer

        public CompositeLayer​(int layoutXCount,
                              int layoutYCount)
    • Method Detail

      • dispose

        public void dispose()
        Description copied from interface: ILayer
        Dispose any resource allocated by this layer.
        Specified by:
        dispose in interface ILayer
        Overrides:
        dispose in class AbstractLayer
      • saveState

        public void saveState​(String prefix,
                              Properties properties)
        Description copied from interface: IPersistable
        Saves the state to the given Properties using the specified prefix. Note: The prefix must be prepended to the property key to support multiple states within one Properties instance.
        Specified by:
        saveState in interface IPersistable
        Overrides:
        saveState in class AbstractLayer
        Parameters:
        prefix - The prefix to use for the state keys. Is also used as the state configuration name.
        properties - The Properties instance to save the state to.
      • loadState

        public void loadState​(String prefix,
                              Properties properties)
        Description copied from interface: IPersistable
        Restore the state out of the given Properties identified by the specified prefix. Note: The prefix must be prepended to the property key to support multiple states within one Properties instance.
        Specified by:
        loadState in interface IPersistable
        Overrides:
        loadState in class AbstractLayer
        Parameters:
        prefix - The prefix to use for the state keys. Is also used as the state configuration name.
        properties - The Properties instance to load the state from.
      • doCommand

        public boolean doCommand​(ILayerCommand command)
        Opportunity to respond to a command as it flows down the stack. If the layer is not interested in the command it should allow the command to keep traveling down the stack.

        Note: Before the layer can process a command it must convert the command to its local coordinates using ILayerCommand.convertToTargetLayer(ILayer) Handle commands

        Specified by:
        doCommand in interface ILayer
        Overrides:
        doCommand in class AbstractLayer
        Parameters:
        command - The command to execute.
        Returns:
        true if the command has been handled and was therefore consumed, false otherwise.
      • doCommandOnChildLayers

        protected boolean doCommandOnChildLayers​(ILayerCommand command)
      • getColumnCount

        public int getColumnCount()
        Returns:
        total number of columns being displayed Note: Works off the header layers.
      • getPreferredColumnCount

        public int getPreferredColumnCount()
      • getColumnIndexByPosition

        public int getColumnIndexByPosition​(int compositeColumnPosition)
        Description copied from interface: ILayer
        Gets the underlying non-transformed column index for the given column position on this layer.
        Parameters:
        compositeColumnPosition - Column position in the CompositeLayer
        Returns:
        column index in the underlying layer.
      • localToUnderlyingColumnPosition

        public int localToUnderlyingColumnPosition​(int localColumnPosition)
        Description copied from interface: ILayer
        Convert a column position to the coordinates of the underlying layer. This is possible since each layer is aware of its underlying layer.
        Parameters:
        localColumnPosition - column position in local (the layer's own) coordinates
        Returns:
        column position in the underlying layer's coordinates
      • underlyingToLocalColumnPosition

        public int underlyingToLocalColumnPosition​(ILayer sourceUnderlyingLayer,
                                                   int underlyingColumnPosition)
        Description copied from interface: ILayer
        Transforms the column position relative to the given underlying layer to this layer coordinates.
        Parameters:
        sourceUnderlyingLayer - The underlying layer to which the given column position matches.
        underlyingColumnPosition - The column position in the given underlying layer that should be converted to a local column position.
        Returns:
        The given column position transformed to be local to this layer.
      • underlyingToLocalColumnPositions

        public Collection<Range> underlyingToLocalColumnPositions​(ILayer sourceUnderlyingLayer,
                                                                  Collection<Range> underlyingColumnPositionRanges)
        Description copied from interface: ILayer
        Transforms the column position ranges relative to the given underlying layer to this layer coordinates.
        Parameters:
        sourceUnderlyingLayer - The underlying layer to which the given column positions match.
        underlyingColumnPositionRanges - The column position ranges relative to the given underlying layer that should be converted to local column positions.
        Returns:
        The given column position ranges transformed to this layer.
      • getWidth

        public int getWidth()
        Description copied from interface: ILayer
        Returns the total width in pixels of this layer.
        Returns:
        The total width in pixels of this layer.
      • getPreferredWidth

        public int getPreferredWidth()
      • getColumnWidthByPosition

        public int getColumnWidthByPosition​(int column)
        Description copied from interface: ILayer
        Returns the width in pixels of the given column. The width of invisible and non-existing columns is 0.
        Parameters:
        column - The column position in this layer.
        Returns:
        The width of the column.
      • isColumnPositionResizable

        public boolean isColumnPositionResizable​(int compositeColumnPosition)
        Description copied from interface: ILayer
        Check if the column at the given position is resizable.
        Parameters:
        compositeColumnPosition - The column position to check.
        Returns:
        true if the column is resizable, false if not.
      • getColumnPositionByX

        public int getColumnPositionByX​(int x)
        Description copied from interface: ILayer
        Returns the column position that contains the given x coordinate.
        Parameters:
        x - pixel position - starts from 0
        Returns:
        A column position relative to the associated coordinate system, or -1 if there is no column that contains x.
      • getStartXOfColumnPosition

        public int getStartXOfColumnPosition​(int columnPosition)
        Description copied from interface: ILayer
        Returns the x offset in pixels of the given column.
        Parameters:
        columnPosition - The column position in this layer.
        Returns:
        The x offset of the column, or -1.
      • getUnderlyingLayersByColumnPosition

        public Collection<ILayer> getUnderlyingLayersByColumnPosition​(int columnPosition)
        Description copied from interface: ILayer
        Returns the layers that are directly below this layer for the given column position. For simple layers this collection will typically only have one entry. Layer compositions might return multiple values, e.g. in a default grid there will be 2 layers in the collection as there are two layers involved in a column.
        Parameters:
        columnPosition - The column position for which the underlying layers are requested.
        Returns:
        The layers that are directly below this layer for the given column position or null if this layer has no underlying layers.
      • getRowCount

        public int getRowCount()
        Returns:
        The number of rows in this layer.
      • getPreferredRowCount

        public int getPreferredRowCount()
      • getRowIndexByPosition

        public int getRowIndexByPosition​(int compositeRowPosition)
        Description copied from interface: ILayer
        Gets the underlying non-transformed row index for the given row position on this layer.
        Parameters:
        compositeRowPosition - The row position relative to this layer.
        Returns:
        An underlying non-transformed row index, or -1 if the given row position does not exist within this coordinate system.
      • localToUnderlyingRowPosition

        public int localToUnderlyingRowPosition​(int localRowPosition)
        Description copied from interface: ILayer
        Convert a row position to the coordinates of the underlying layer. This is possible since each layer is aware of its underlying layer.
        Parameters:
        localRowPosition - row position in local (the layer's own) coordinates
        Returns:
        row position in the underlying layer's coordinates
      • underlyingToLocalRowPosition

        public int underlyingToLocalRowPosition​(ILayer sourceUnderlyingLayer,
                                                int underlyingRowPosition)
        Description copied from interface: ILayer
        Transforms the row position relative to the given underlying layer to this layer coordinates.
        Parameters:
        sourceUnderlyingLayer - The underlying layer to which the given row position matches.
        underlyingRowPosition - The row position in the given underlying layer that should be converted to a local row position.
        Returns:
        The given row position transformed to be local to this layer.
      • underlyingToLocalRowPositions

        public Collection<Range> underlyingToLocalRowPositions​(ILayer sourceUnderlyingLayer,
                                                               Collection<Range> underlyingRowPositionRanges)
        Description copied from interface: ILayer
        Transforms the row position ranges relative to the given underlying layer to this layer coordinates.
        Parameters:
        sourceUnderlyingLayer - The underlying layer to which the given row positions match.
        underlyingRowPositionRanges - The row position ranges relative to the given underlying layer that should be converted to local row positions.
        Returns:
        The given row position ranges transformed to this layer.
      • getHeight

        public int getHeight()
        Description copied from interface: ILayer
        Returns the total height in pixels of this layer.
        Returns:
        The total height in pixels of this layer.
      • getPreferredHeight

        public int getPreferredHeight()
      • getRowHeightByPosition

        public int getRowHeightByPosition​(int row)
        Description copied from interface: ILayer
        Returns the height in pixels of the given row. The height of invisible and non-existing rows is 0.
        Parameters:
        row - The row position in this layer.
        Returns:
        The height of the row.
      • isRowPositionResizable

        public boolean isRowPositionResizable​(int compositeRowPosition)
        Description copied from interface: ILayer
        Check if the row at the given position is resizable.
        Parameters:
        compositeRowPosition - The row position to check.
        Returns:
        false if the row position is out of bounds
      • getRowPositionByY

        public int getRowPositionByY​(int y)
        Get the row position relative to the layer the containing coordinate y.
        Parameters:
        y - Mouse event Y position.
        Returns:
        a row position relative to the associated coordinate system, or -1 if there is no row that contains y
      • getStartYOfRowPosition

        public int getStartYOfRowPosition​(int rowPosition)
        Description copied from interface: ILayer
        Returns the y offset in pixels of the given row.
        Parameters:
        rowPosition - the row position in this layer
        Returns:
        the y offset of the row, or -1
      • getUnderlyingLayersByRowPosition

        public Collection<ILayer> getUnderlyingLayersByRowPosition​(int rowPosition)
        Description copied from interface: ILayer
        Returns the layers that are directly below this layer for the given row position. For simple layers this collection will typically only have one entry. Layer compositions might return multiple values, e.g. in a default grid there will be 2 layers in the collection as there are two layers involved in a row.
        Parameters:
        rowPosition - The row position for which the underlying layers are requested.
        Returns:
        The layers that are directly below this layer for the given row position or null if this layer has no underlying layers.
      • getCellByPosition

        public ILayerCell getCellByPosition​(int compositeColumnPosition,
                                            int compositeRowPosition)
        Description copied from interface: ILayer
        Returns the cell for the given coordinates on this layer.
        Specified by:
        getCellByPosition in interface ILayer
        Overrides:
        getCellByPosition in class AbstractLayer
        Parameters:
        compositeColumnPosition - The column position of the requested cell.
        compositeRowPosition - The row position of the requested cell.
        Returns:
        The ILayerCell for the given coordinates in this layer or null if the coordinates are invalid on this layer.
      • getBoundsByPosition

        public org.eclipse.swt.graphics.Rectangle getBoundsByPosition​(int compositeColumnPosition,
                                                                      int compositeRowPosition)
        Description copied from interface: ILayer
        Calculates the bounds in pixel for the given cell position.
        Specified by:
        getBoundsByPosition in interface ILayer
        Overrides:
        getBoundsByPosition in class AbstractLayer
        Parameters:
        compositeColumnPosition - the column position of the cell
        compositeRowPosition - the row position of the cell
        Returns:
        the bounds, or null if there are no valid bounds
      • getDisplayModeByPosition

        public DisplayMode getDisplayModeByPosition​(int compositeColumnPosition,
                                                    int compositeRowPosition)
        Description copied from interface: ILayer
        Returns the active DisplayMode for the cell at the given coordinates. Needed to retrieve the corresponding configurations out of the IConfigRegistry. The default value is DisplayMode.NORMAL. The SelectionLayer for example overrides this to return DisplayMode.SELECT for cells that are currently selected.
        Specified by:
        getDisplayModeByPosition in interface ILayer
        Overrides:
        getDisplayModeByPosition in class AbstractLayer
        Parameters:
        compositeColumnPosition - The column position of the cell.
        compositeRowPosition - The row position of the cell.
        Returns:
        DisplayMode for the cell at the given coordinates.
      • getConfigLabelsByPosition

        public LabelStack getConfigLabelsByPosition​(int compositeColumnPosition,
                                                    int compositeRowPosition)
        Description copied from interface: ILayer
        Returns the config labels for the cell at the given coordinates. Needed to retrieve the corresponding configurations out of the IConfigRegistry.
        Specified by:
        getConfigLabelsByPosition in interface ILayer
        Overrides:
        getConfigLabelsByPosition in class AbstractLayer
        Parameters:
        compositeColumnPosition - The column position of the cell.
        compositeRowPosition - The row position of the cell.
        Returns:
        The LabelStack with the config labels for the cell at the given coordinates.
      • getDataValueByPosition

        public Object getDataValueByPosition​(int compositeColumnPosition,
                                             int compositeRowPosition)
        Description copied from interface: ILayer
        Returns the data value for the cell at the given coordinates.
        Parameters:
        compositeColumnPosition - The column position of the cell.
        compositeRowPosition - The row position of the cell.
        Returns:
        The data value for the cell at the given coordinates.
      • setChildLayer

        public void setChildLayer​(String regionName,
                                  ILayer childLayer,
                                  int layoutX,
                                  int layoutY)
      • setConfigLabelAccumulatorForRegion

        public void setConfigLabelAccumulatorForRegion​(String regionName,
                                                       IConfigLabelAccumulator configLabelAccumulator)
        Sets the IConfigLabelAccumulator for the given named region. Replaces any existing IConfigLabelAccumulator.
        Parameters:
        regionName - the region name.
        configLabelAccumulator - the IConfigLabelAccumulator to set.
      • addConfigLabelAccumulatorForRegion

        public void addConfigLabelAccumulatorForRegion​(String regionName,
                                                       IConfigLabelAccumulator configLabelAccumulator)
        Adds the configLabelAccumulator to the existing label accumulators.
        Parameters:
        regionName - the region name.
        configLabelAccumulator - the IConfigLabelAccumulator to add.
      • getChildLayerByLayoutCoordinate

        public ILayer getChildLayerByLayoutCoordinate​(int layoutX,
                                                      int layoutY)
        Parameters:
        layoutX - col position in the CompositeLayer
        layoutY - row position in the CompositeLayer
        Returns:
        child layer according to the Composite Layer Layout
      • getChildLayerByRegionName

        public ILayer getChildLayerByRegionName​(String regionName)
        Parameters:
        regionName - The region name for which the child layer is requested.
        Returns:
        The child layer that is registered for the given region name.
      • getRegionLabelsByXY

        public LabelStack getRegionLabelsByXY​(int x,
                                              int y)
        Description copied from interface: ILayer
        Return the LabelStack containing the region labels for the cell at the given pixel position.
        Specified by:
        getRegionLabelsByXY in interface ILayer
        Overrides:
        getRegionLabelsByXY in class AbstractLayer
        Parameters:
        x - pixel position
        y - pixel position
        Returns:
        Region which the given position is in
      • getUnderlyingLayerByPosition

        public ILayer getUnderlyingLayerByPosition​(int columnPosition,
                                                   int rowPosition)
        Description copied from interface: ILayer
        Returns the layer that is directly below this layer for the given cell coordinate.
        Parameters:
        columnPosition - The column position for which the underlying layer is requested.
        rowPosition - The row position for which the underlying layer is requested.
        Returns:
        The layer that is directly below this layer for the given cell coordinates or null if this layer has no underlying layers.
      • getLayoutXYByChildLayer

        protected org.eclipse.swt.graphics.Point getLayoutXYByChildLayer​(ILayer childLayer)
      • getLayoutXByPixelX

        protected int getLayoutXByPixelX​(int x)
      • getLayoutYByPixelY

        protected int getLayoutYByPixelY​(int y)
      • getLayoutXYByPixelXY

        protected org.eclipse.swt.graphics.Point getLayoutXYByPixelXY​(int x,
                                                                      int y)
      • getLayoutXByColumnPosition

        protected int getLayoutXByColumnPosition​(int compositeColumnPosition)
      • getLayoutYByRowPosition

        protected int getLayoutYByRowPosition​(int compositeRowPosition)
      • getLayoutXYByPosition

        protected org.eclipse.swt.graphics.Point getLayoutXYByPosition​(int compositeColumnPosition,
                                                                       int compositeRowPosition)
      • getColumnPositionOffset

        protected int getColumnPositionOffset​(int layoutX)
      • getWidthOffset

        protected int getWidthOffset​(int layoutX)
      • getRowPositionOffset

        protected int getRowPositionOffset​(int layoutY)
      • getHeightOffset

        protected int getHeightOffset​(int layoutY)
      • getLayoutXCount

        public int getLayoutXCount()
        Returns:
        The number of column regions in this CompositeLayer.
      • getLayoutYCount

        public int getLayoutYCount()
        Returns:
        The number of row regions in this CompositeLayer.
      • getChildLayerLayout

        protected ILayer[][] getChildLayerLayout()
        Returns:
        The internal data structure of the layer composition.
        Since:
        1.6