001 /* 002 * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017 /* $Id: AbstractScriptElement.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ 018 019 package net.sourceforge.jeuclid.elements.presentation.script; 020 021 import net.sourceforge.jeuclid.Constants; 022 import net.sourceforge.jeuclid.LayoutContext; 023 import net.sourceforge.jeuclid.context.InlineLayoutContext; 024 import net.sourceforge.jeuclid.context.RelativeScriptlevelLayoutContext; 025 import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; 026 027 import org.apache.batik.dom.AbstractDocument; 028 029 /** 030 * Base class for msub, msup, msubsup, and mmultiscripts. 031 * 032 * @version $Revision: bc1d5fde7b73 $ 033 */ 034 public abstract class AbstractScriptElement extends AbstractJEuclidElement { 035 036 /** attribute for subscriptshift. */ 037 public static final String ATTR_SUBSCRIPTSHIFT = "subscriptshift"; 038 039 /** attribute for superscriptshift. */ 040 public static final String ATTR_SUPERSCRIPTSHIFT = "superscriptshift"; 041 042 /** 043 * Default constructor. Sets MathML Namespace. 044 * 045 * @param qname 046 * Qualified name. 047 * @param odoc 048 * Owner Document. 049 */ 050 public AbstractScriptElement(final String qname, final AbstractDocument odoc) { 051 super(qname, odoc); 052 053 this.setDefaultMathAttribute(AbstractScriptElement.ATTR_SUBSCRIPTSHIFT, 054 Constants.ZERO); 055 this.setDefaultMathAttribute( 056 AbstractScriptElement.ATTR_SUPERSCRIPTSHIFT, Constants.ZERO); 057 } 058 059 /** 060 * @return attribute subscriptshift. 061 */ 062 public String getSubscriptshift() { 063 return this.getMathAttribute(AbstractScriptElement.ATTR_SUBSCRIPTSHIFT); 064 } 065 066 /** 067 * @param subscriptshift 068 * new value for subscriptshift 069 */ 070 public void setSubscriptshift(final String subscriptshift) { 071 this.setAttribute(AbstractScriptElement.ATTR_SUBSCRIPTSHIFT, 072 subscriptshift); 073 } 074 075 /** 076 * @return attribtue superscriptshift 077 */ 078 public String getSuperscriptshift() { 079 return this 080 .getMathAttribute(AbstractScriptElement.ATTR_SUPERSCRIPTSHIFT); 081 } 082 083 /** 084 * @param superscriptshift 085 * new value for superscriptshift 086 */ 087 public void setSuperscriptshift(final String superscriptshift) { 088 this.setAttribute(AbstractScriptElement.ATTR_SUPERSCRIPTSHIFT, 089 superscriptshift); 090 } 091 092 /** {@inheritDoc} */ 093 @Override 094 public LayoutContext getChildLayoutContext(final int childNum, 095 final LayoutContext context) { 096 final LayoutContext now = this.applyLocalAttributesToContext(context); 097 if (childNum == 0) { 098 return now; 099 } else { 100 return new RelativeScriptlevelLayoutContext( 101 new InlineLayoutContext(now), 1); 102 } 103 } 104 105 }