net.sourceforge.jeuclid.elements.presentation.script
Class AbstractUnderOver

java.lang.Object
  extended by org.apache.batik.dom.AbstractNode
      extended by org.apache.batik.dom.AbstractParentNode
          extended by org.apache.batik.dom.AbstractParentChildNode
              extended by org.apache.batik.dom.AbstractElement
                  extended by org.apache.batik.dom.AbstractElementNS
                      extended by org.apache.batik.dom.GenericElementNS
                          extended by net.sourceforge.jeuclid.elements.AbstractJEuclidElement
                              extended by net.sourceforge.jeuclid.elements.presentation.script.AbstractUnderOver
All Implemented Interfaces:
Serializable, JEuclidElement, JEuclidNode, LayoutableNode, NodeEventTarget, ExtendedNode, NodeXBL, XBLManagerData, Element, ElementTraversal, 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:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.batik.dom.AbstractElement
AbstractElement.ElementTypeInfo, AbstractElement.Entry, AbstractElement.NamedNodeHashMap
 
Nested classes/interfaces inherited from class org.apache.batik.dom.AbstractParentNode
AbstractParentNode.ChildNodes, AbstractParentNode.ElementsByTagName, AbstractParentNode.ElementsByTagNameNS
 
Field Summary
static String ATTR_ACCENT
          attribute for accent property.
static String ATTR_ACCENTUNDER
          attribute for accentunder property.
static float NON_ACCENT_MULTIPLIER
          Space for non-accents multiplied by this value.
static String UNDER_OVER_SPACE
          Space between base and under/over for accents.
 
Fields inherited from class net.sourceforge.jeuclid.elements.AbstractJEuclidElement
ATTR_CLASS, ATTR_DEPRECATED_BACKGROUND, ATTR_DEPRECATED_COLOR, ATTR_DEPRECATED_FONTFAMILY, ATTR_DEPRECATED_FONTSIZE, ATTR_DEPRECATED_FONTSTYLE, ATTR_DEPRECATED_FONTWEIGHT, ATTR_HREF, ATTR_ID, ATTR_MATHBACKGROUND, ATTR_MATHCOLOR, ATTR_MATHSIZE, ATTR_MATHVARIANT, ATTR_STYLE, ATTR_XREF, TRIVIAL_SPACE_MAX, URI
 
Fields inherited from class org.apache.batik.dom.GenericElementNS
nodeName, readonly
 
Fields inherited from class org.apache.batik.dom.AbstractElementNS
namespaceURI
 
Fields inherited from class org.apache.batik.dom.AbstractElement
attributes, typeInfo
 
Fields inherited from class org.apache.batik.dom.AbstractParentChildNode
nextSibling, parentNode, previousSibling
 
Fields inherited from class org.apache.batik.dom.AbstractParentNode
childNodes
 
Fields inherited from class org.apache.batik.dom.AbstractNode
DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, EMPTY_NODE_LIST, eventSupport, managerData, ownerDocument, userData, userDataHandlers
 
Fields inherited from interface org.w3c.dom.Node
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
 
Constructor Summary
AbstractUnderOver(String qname, AbstractDocument odoc)
          Default constructor.
 
Method Summary
 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.
protected  boolean getAccentAsBoolean()
          returns the accent property as boolean.
 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.
protected  boolean getAccentunderAsBoolean()
          returns the accentunder property as boolean.
 JEuclidElement getBase()
          A MathMLElement representing the base of the script.
 LayoutContext getChildLayoutContext(int childNum, LayoutContext context)
          get the layout context for the given child.
abstract  JEuclidElement getOverscript()
          A MathMLElement representing the overscript of the script.
abstract  JEuclidElement getUnderscript()
          A MathMLElement representing the underscript of the script.
 boolean hasChildPostscripts(JEuclidElement child, LayoutContext context)
          returns true is the child has postscripts attached to it.
protected  void layoutStageInvariant(LayoutView view, LayoutInfo info, LayoutStage stage, LayoutContext context)
          Layout for elements which are stage independent.
 void setAccent(String accent)
          setter for the accent attribute.
 void setAccentunder(String accentunder)
          setter for the accentunder attribute.
 void setBase(MathMLElement base)
          setter for the base attribute.
 
Methods inherited from class net.sourceforge.jeuclid.elements.AbstractJEuclidElement
addMathElement, applyLocalAttributesToContext, changeHook, dispatchEvent, getChildrenToDraw, getChildrenToLayout, getClassName, getContents, getFont, getFontMetrics, getHref, getId, getIndexOfMathElement, getMathAttribute, getMathAttribute, getMathbackground, getMathcolor, getMathElement, getMathElementCount, getMathElementStyle, getMathsize, getMathvariant, getMathvariantAsVariant, getMiddleShift, getOwnerMathElement, getParent, getText, getXref, hasChildPrescripts, layoutStage1, layoutStage2, setClassName, setDefaultMathAttribute, setFakeParent, setHref, setId, setMathbackground, setMathcolor, setMathElement, setMathElementStyle, setMathsize, setMathvariant, setXref
 
Methods inherited from class org.apache.batik.dom.GenericElementNS
copyInto, deepCopyInto, deepExport, export, getNodeName, isReadonly, newNode, setNodeName, setReadonly
 
Methods inherited from class org.apache.batik.dom.AbstractElementNS
getNamespaceURI
 
Methods inherited from class org.apache.batik.dom.AbstractElement
attrAdded, attrModified, attrRemoved, checkChildType, createAttributes, fireDOMAttrModifiedEvent, getAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getAttributes, getChildElementCount, getFirstElementChild, getIdAttribute, getLastElementChild, getNextElementSibling, getNodeType, getPreviousElementSibling, getSchemaTypeInfo, getTagName, hasAttribute, hasAttributeNS, hasAttributes, nodeAdded, nodeToBeRemoved, normalize, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS, setIdAttribute, setIdAttributeNode, setIdAttributeNS
 
Methods inherited from class org.apache.batik.dom.AbstractParentChildNode
getNextSibling, getParentNode, getPreviousSibling, setNextSibling, setParentNode, setPreviousSibling
 
Methods inherited from class org.apache.batik.dom.AbstractParentNode
appendChild, checkAndRemove, fireDOMNodeInsertedEvent, fireDOMNodeInsertedIntoDocumentEvent, fireDOMNodeRemovedEvent, fireDOMNodeRemovedFromDocumentEvent, fireDOMSubtreeModifiedEvent, getChildNodes, getElementsByTagName, getElementsByTagNameNS, getFirstChild, getLastChild, getTextContent, hasChildNodes, insertBefore, removeChild, replaceChild
 
Methods inherited from class org.apache.batik.dom.AbstractNode
addEventListener, addEventListenerNS, cloneNode, compareDocumentPosition, compareNamedNodeMaps, compareStrings, createDOMException, fireDOMCharacterDataModifiedEvent, fireUserDataHandlers, getBaseURI, getBaseURI, getCascadedXMLBase, getCurrentDocument, getEventSupport, getFeature, getLocalName, getManagerData, getNodeValue, getOwnerDocument, getParentNodeEventTarget, getPrefix, getUserData, getXblBoundElement, getXblChildNodes, getXblDefinitions, getXblFirstChild, getXblFirstElementChild, getXblLastChild, getXblLastElementChild, getXblNextElementSibling, getXblNextSibling, getXblParentNode, getXblPreviousElementSibling, getXblPreviousSibling, getXblScopedChildNodes, getXblShadowTree, hasEventListenerNS, initializeEventSupport, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespacePrefix, lookupNamespaceURI, lookupPrefix, removeEventListener, removeEventListenerNS, setManagerData, setNodeValue, setOwnerDocument, setPrefix, setSpecified, setTextContent, setUserData, willTriggerNS
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.w3c.dom.mathml.MathMLUnderOverElement
setOverscript, setUnderscript
 
Methods inherited from interface org.w3c.dom.mathml.MathMLElement
getClassName, getHref, getId, getMathElementStyle, getOwnerMathElement, getXref, setClassName, setHref, setId, setMathElementStyle, setXref
 
Methods inherited from interface org.w3c.dom.Element
getAttribute, getAttributeNode, getAttributeNodeNS, getAttributeNS, getElementsByTagName, getElementsByTagNameNS, getSchemaTypeInfo, getTagName, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNode, removeAttributeNS, setAttribute, setAttributeNode, setAttributeNodeNS, setAttributeNS, setIdAttribute, setIdAttributeNode, setIdAttributeNS
 
Methods inherited from interface org.w3c.dom.Node
appendChild, cloneNode, compareDocumentPosition, getAttributes, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasAttributes, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setNodeValue, setPrefix, setTextContent, setUserData
 

Field Detail

UNDER_OVER_SPACE

public static final String UNDER_OVER_SPACE
Space between base and under/over for accents.

See Also:
Constant Field Values

NON_ACCENT_MULTIPLIER

public static final float NON_ACCENT_MULTIPLIER
Space for non-accents multiplied by this value.

See Also:
Constant Field Values

ATTR_ACCENT

public static final String ATTR_ACCENT
attribute for accent property.

See Also:
Constant Field Values

ATTR_ACCENTUNDER

public static final String ATTR_ACCENTUNDER
attribute for accentunder property.

See Also:
Constant Field Values
Constructor Detail

AbstractUnderOver

public AbstractUnderOver(String qname,
                         AbstractDocument odoc)
Default constructor. Sets MathML Namespace.

Parameters:
qname - Qualified name.
odoc - Owner Document.
Method Detail

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:
MathMLUnderOverElement.getAccent()

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:
MathMLUnderOverElement.getAccentunder()

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:
MathMLUnderOverElement.getBase()

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.


Copyright © 2002-2010 The JEuclid project. All Rights Reserved.