001    /*
002     * Copyright 2002 - 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: Mtd.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */
018    
019    package net.sourceforge.jeuclid.elements.presentation.table;
020    
021    import org.apache.batik.dom.AbstractDocument;
022    import org.w3c.dom.Node;
023    import org.w3c.dom.mathml.MathMLTableCellElement;
024    
025    /**
026     * This class presents a cell of a table.
027     * 
028     * @version $Revision: bc1d5fde7b73 $
029     */
030    public final class Mtd extends AbstractTableElement implements
031            MathMLTableCellElement {
032    
033        /**
034         * The XML element from this class.
035         */
036        public static final String ELEMENT = "mtd";
037    
038        /** attribute for rowspan. */
039        private static final String ATTR_ROWSPAN = "rowspan";
040    
041        /** attribute for columnspan. */
042        private static final String ATTR_COLUMNSPAN = "columnspan";
043    
044        private static final String VALUE_ONE = "1";
045    
046        private static final long serialVersionUID = 1L;
047    
048        /**
049         * Default constructor. Sets MathML Namespace.
050         * 
051         * @param qname
052         *            Qualified name.
053         * @param odoc
054         *            Owner Document.
055         */
056        public Mtd(final String qname, final AbstractDocument odoc) {
057            super(qname, odoc);
058    
059            this.setDefaultMathAttribute(Mtd.ATTR_ROWSPAN, Mtd.VALUE_ONE);
060            this.setDefaultMathAttribute(Mtd.ATTR_COLUMNSPAN, Mtd.VALUE_ONE);
061        }
062    
063        /** {@inheritDoc} */
064        @Override
065        protected Node newNode() {
066            return new Mtd(this.nodeName, this.ownerDocument);
067        }
068    
069        /**
070         * @return Rowspan
071         */
072        public String getRowspan() {
073            return this.getMathAttribute(Mtd.ATTR_ROWSPAN);
074        }
075    
076        /**
077         * @param rowspan
078         *            Rowspan
079         */
080        public void setRowspan(final String rowspan) {
081            this.setAttribute(Mtd.ATTR_ROWSPAN, rowspan);
082        }
083    
084        /**
085         * @return Columnspan
086         */
087        public String getColumnspan() {
088            return this.getMathAttribute(Mtd.ATTR_COLUMNSPAN);
089        }
090    
091        /**
092         * @param columnspan
093         *            Columnspan
094         */
095        public void setColumnspan(final String columnspan) {
096            this.setAttribute(Mtd.ATTR_COLUMNSPAN, columnspan);
097        }
098    
099        /** {@inheritDoc} */
100        public String getCellindex() {
101            return Integer.toString(this.getParent().getIndexOfMathElement(this));
102        }
103    
104        /** {@inheritDoc} */
105        public boolean getHasaligngroups() {
106            return this.getGroupalign() != null;
107        }
108    
109    }