CompoundPropertyMaker (Apache FOP 2.7 API)
Date: 2022-01-12

org.apache.fop.fo.properties

## Class CompoundPropertyMaker

- java.lang.Object
- - org.apache.fop.fo.properties.PropertyMaker
  - - org.apache.fop.fo.properties.CompoundPropertyMaker

- All Implemented Interfaces:
    java.lang.Cloneable
  Direct Known Subclasses:
    CondLengthProperty.Maker, KeepProperty.Maker, LengthPairProperty.Maker, LengthRangeProperty.Maker, SpaceProperty.Maker

      public class CompoundPropertyMaker
      extends PropertyMaker

  This class extends Property.Maker with support for sub-properties.

- - ### Field Summary

    - ### Fields inherited from class org.apache.fop.fo.properties.PropertyMaker

      `contextDep, corresponding, defaultProperty, defaultValue, propId, setByShorthand`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CompoundPropertyMaker(int propId)` Construct an instance of a CompoundPropertyMaker for the given property.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addSubpropMaker(PropertyMaker subproperty)` Add a subproperty to this maker.
    `protected Property` | `checkEnumValues(java.lang.String value)` For compound properties which can take enumerate values.
    `protected Property` | `convertProperty(Property p, PropertyList propertyList, FObj fo)` Return a Property object based on the passed Property object.
    `Property` | `get(int subpropertyId, PropertyList propertyList, boolean tryInherit, boolean tryDefault)` Return the property on the current FlowObject.
    `PropertyMaker` | `getSubpropMaker(int subpropertyId)` Return a Maker object which is used to set the values on components of compound property types, such as "space".
    `Property` | `make(Property baseProperty, int subpropertyId, PropertyList propertyList, java.lang.String value, FObj fo)` Return a property value for a compound property.
    `Property` | `make(PropertyList propertyList)` Make a compound property with default values.
    `Property` | `make(PropertyList propertyList, java.lang.String value, FObj fo)` Create a Property object from an attribute specification.
    `protected Property` | `makeCompound(PropertyList propertyList, FObj parentFO)` Create a empty compound property and fill it with default values for the subproperties.
    `void` | `useGeneric(PropertyMaker generic)` Copy all the values from the generic maker to this maker.

    - ### Methods inherited from class org.apache.fop.fo.properties.PropertyMaker

      `addEnum, addKeyword, addShorthand, checkValueKeywords, clone, compute, convertPropertyDatatype, convertShorthandProperty, findProperty, getName, getPercentBase, getPropId, getShorthand, getSubprop, isInherited, makeNewProperty, setByShorthand, setCorresponding, setDatatypeParser, setDefault, setDefault, setInherited, setPercentBase, setSubprop`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### CompoundPropertyMaker

          public CompoundPropertyMaker(int propId)

      Construct an instance of a CompoundPropertyMaker for the given property.
      Parameters:
        `propId` - The Constant ID of the property to be made.

  - ### Method Detail

    - #### useGeneric

          public void useGeneric(PropertyMaker generic)

      Copy all the values from the generic maker to this maker.
      Overrides:
        `useGeneric` in class `PropertyMaker`
      Parameters:
        `generic` - a generic property maker.

    - #### addSubpropMaker

          public void addSubpropMaker(PropertyMaker subproperty)

      Add a subproperty to this maker.
      Overrides:
        `addSubpropMaker` in class `PropertyMaker`
      Parameters:
        `subproperty` - the sub property

    - #### getSubpropMaker

          public PropertyMaker getSubpropMaker(int subpropertyId)

      Return a Maker object which is used to set the values on components of compound property types, such as "space". Overridden by property maker subclasses which handle compound properties.
      Overrides:
        `getSubpropMaker` in class `PropertyMaker`
      Parameters:
        `subpropertyId` - the id of the component for which a Maker is to returned, for example CP_OPTIMUM, if the FO attribute is space.optimum='10pt'.
      Returns:
        the Maker object specified

    - #### checkEnumValues

          protected Property checkEnumValues(java.lang.String value)

      For compound properties which can take enumerate values. Delegate the enumeration check to one of the subpropeties.
      Overrides:
        `checkEnumValues` in class `PropertyMaker`
      Parameters:
        `value` - the string containing the property value
      Returns:
        the Property encapsulating the enumerated equivalent of the input value

    - #### get

          public Property get(int subpropertyId,
                              PropertyList propertyList,
                              boolean tryInherit,
                              boolean tryDefault)
                       throws PropertyException

      Return the property on the current FlowObject. Depending on the passed flags, this will try to compute it based on other properties, or if it is inheritable, to return the inherited value. If all else fails, it returns the default value.
      Overrides:
        `get` in class `PropertyMaker`
      Parameters:
        `subpropertyId` - The subproperty id of the property being retrieved. Is 0 when retriving a base property.
        `propertyList` - The PropertyList object being built for this FO.
        `tryInherit` - true if inherited properties should be examined.
        `tryDefault` - true if the default value should be returned.
      Returns:
        the property
      Throws:
        `PropertyException` - if a property exception occurs

    - #### convertProperty

          protected Property convertProperty(Property p,
                                             PropertyList propertyList,
                                             FObj fo)
                                      throws PropertyException

      Return a Property object based on the passed Property object. This method is called if the Property object built by the parser isn't the right type for this compound property.
      Overrides:
        `convertProperty` in class `PropertyMaker`
      Parameters:
        `p` - The Property object return by the expression parser
        `propertyList` - The PropertyList object being built for this FO.
        `fo` - The parent FO for the FO whose property is being made.
      Returns:
        A Property of the correct type or null if the parsed value can't be converted to the correct type.
      Throws:
        `PropertyException` - for invalid or inconsistent FO input

    - #### make

          public Property make(PropertyList propertyList)
                        throws PropertyException

      Make a compound property with default values.
      Overrides:
        `make` in class `PropertyMaker`
      Parameters:
        `propertyList` - The PropertyList object being built for this FO.
      Returns:
        the Property object corresponding to the parameters
      Throws:
        `PropertyException` - for invalid or inconsisten FO input

    - #### make

          public Property make(PropertyList propertyList,
                               java.lang.String value,
                               FObj fo)
                        throws PropertyException

      Create a Property object from an attribute specification.
      Overrides:
        `make` in class `PropertyMaker`
      Parameters:
        `propertyList` - The PropertyList object being built for this FO.
        `value` - The attribute value.
        `fo` - The parent FO for the FO whose property is being made.
      Returns:
        The initialized Property object.
      Throws:
        `PropertyException` - for invalid or inconsistent FO input

    - #### make

          public Property make(Property baseProperty,
                               int subpropertyId,
                               PropertyList propertyList,
                               java.lang.String value,
                               FObj fo)
                        throws PropertyException

      Return a property value for a compound property. If the property value is already partially initialized, this method will modify it.
      Overrides:
        `make` in class `PropertyMaker`
      Parameters:
        `baseProperty` - The Property object representing the compound property, for example: SpaceProperty.
        `subpropertyId` - The Constants ID of the subproperty (component) whose value is specified.
        `propertyList` - The propertyList being built.
        `fo` - The parent FO for the FO whose property is being made.
        `value` - the value of the
      Returns:
        baseProperty (or if null, a new compound property object) with the new subproperty added
      Throws:
        `PropertyException` - for invalid or inconsistent FO input

    - #### makeCompound

          protected Property makeCompound(PropertyList propertyList,
                                          FObj parentFO)
                                   throws PropertyException

      Create a empty compound property and fill it with default values for the subproperties.
      Parameters:
        `propertyList` - The propertyList being built.
        `parentFO` - The parent FO for the FO whose property is being made.
      Returns:
        a Property subclass object holding a "compound" property object initialized to the default values for each component.
      Throws:
        `PropertyException` - ...

Copyright 1999-2022 The Apache Software Foundation. All Rights Reserved.