Class AbstractUnderOver

java.lang.Object
org.apache.batik.dom.AbstractNode
org.apache.batik.dom.AbstractParentNode
org.apache.batik.dom.AbstractParentChildNode
org.apache.batik.dom.AbstractElement
org.apache.batik.dom.AbstractElementNS
org.apache.batik.dom.GenericElementNS
net.sourceforge.jeuclid.elements.AbstractJEuclidElement
net.sourceforge.jeuclid.elements.presentation.script.AbstractUnderOver
All Implemented Interfaces:
Serializable, JEuclidElement, JEuclidNode, LayoutableNode, org.apache.batik.dom.events.NodeEventTarget, org.apache.batik.dom.ExtendedNode, org.apache.batik.dom.xbl.NodeXBL, org.apache.batik.dom.xbl.XBLManagerData, org.apache.batik.w3c.dom.ElementTraversal, Element, EventTarget, MathMLElement, MathMLPresentationElement, MathMLUnderOverElement, Node
Direct Known Subclasses:
Mover, Munder, Munderover

public abstract class AbstractUnderOver extends AbstractJEuclidElement implements MathMLUnderOverElement
Implementation and helper methods for munder, mover, and munderover.

TODO: some operators should "default" to being an accent, but currently they don't

Version:
$Revision: 2986a8eeaebc $
See Also:
  • Field Details

    • UNDER_OVER_SPACE

      public static final String UNDER_OVER_SPACE
      Space between base and under/over for accents.
      See Also:
    • NON_ACCENT_MULTIPLIER

      public static final float NON_ACCENT_MULTIPLIER
      Space for non-accents multiplied by this value.
      See Also:
    • ATTR_ACCENT

      public static final String ATTR_ACCENT
      attribute for accent property.
      See Also:
    • ATTR_ACCENTUNDER

      public static final String ATTR_ACCENTUNDER
      attribute for accentunder property.
      See Also:
  • Constructor Details

    • AbstractUnderOver

      public AbstractUnderOver(String qname, org.apache.batik.dom.AbstractDocument odoc)
      Default constructor. Sets MathML Namespace.
      Parameters:
      qname - Qualified name.
      odoc - Owner Document.
  • Method Details

    • getAccent

      public String getAccent()
      Either true or false if present; a string controlling whether overscript is drawn as an accent or as a limit, if specified; this is the element's accent attribute. This must return null for an munder.
      Specified by:
      getAccent in interface MathMLUnderOverElement
      Returns:
      value of the accent attribute.
    • getAccentAsBoolean

      protected boolean getAccentAsBoolean()
      returns the accent property as boolean.
      Returns:
      accent
    • getAccentunder

      public String getAccentunder()
      Either true or false if present; a string controlling whether underscript is drawn as an accent or as a limit, if specified; this is the element's accentunder attribute. This must return null for an mover.
      Specified by:
      getAccentunder in interface MathMLUnderOverElement
      Returns:
      value of the accentunder attribute.
    • getChildLayoutContext

      public LayoutContext getChildLayoutContext(int childNum, LayoutContext context)
      get the layout context for the given child.
      Specified by:
      getChildLayoutContext in interface JEuclidNode
      Overrides:
      getChildLayoutContext in class AbstractJEuclidElement
      Parameters:
      childNum - 0-based number of the child to check.
      context - external context.
      Returns:
      layout context to use.
    • getAccentunderAsBoolean

      protected boolean getAccentunderAsBoolean()
      returns the accentunder property as boolean.
      Returns:
      accentunder
    • getBase

      public JEuclidElement getBase()
      A MathMLElement representing the base of the script. This is the first child of the element.
      Specified by:
      getBase in interface MathMLUnderOverElement
      Returns:
      value of the base attribute.
    • getOverscript

      public abstract JEuclidElement getOverscript()
      A MathMLElement representing the overscript of the script. This is the second child of a mover or the third child of a munderover; retrieval must return null for an munder.
      Specified by:
      getOverscript in interface MathMLUnderOverElement
      Returns:
      value of the overscript attribute.
    • getUnderscript

      public abstract JEuclidElement getUnderscript()
      A MathMLElement representing the underscript of the script. This is the second child of a munder or munderover; retrieval must return null for an mover.
      Specified by:
      getUnderscript in interface MathMLUnderOverElement
      Returns:
      value of the underscript attribute.
    • setAccent

      public void setAccent(String accent)
      setter for the accent attribute.
      Specified by:
      setAccent in interface MathMLUnderOverElement
      Parameters:
      accent - new value for accent.
      See Also:
    • setAccentunder

      public void setAccentunder(String accentunder)
      setter for the accentunder attribute.
      Specified by:
      setAccentunder in interface MathMLUnderOverElement
      Parameters:
      accentunder - new value for accentunder.
      See Also:
    • setBase

      public void setBase(MathMLElement base)
      setter for the base attribute.
      Specified by:
      setBase in interface MathMLUnderOverElement
      Parameters:
      base - new value for base.
      See Also:
    • hasChildPostscripts

      public boolean hasChildPostscripts(JEuclidElement child, LayoutContext context)
      returns true is the child has postscripts attached to it. In this case, there should be no extra space on the left.
      Specified by:
      hasChildPostscripts in interface JEuclidElement
      Overrides:
      hasChildPostscripts in class AbstractJEuclidElement
      Parameters:
      child - child to test
      context - current layout context.
      Returns:
      true if there are attached postscripts
    • layoutStageInvariant

      protected void layoutStageInvariant(LayoutView view, LayoutInfo info, LayoutStage stage, LayoutContext context)
      Layout for elements which are stage independent.

      This function will layout an element which is layed out the same no matter what stage it is in. This is the case for most elements.

      Notable exceptions are mo and tables.

      Overrides:
      layoutStageInvariant in class AbstractJEuclidElement
      Parameters:
      view - View Object for this layout.
      info - An info object which will be filled during layout.
      stage - current layout stage.
      context - current LayoutContext.