| /******************************************************************************* |
| * Copyright (c) 1998, 2008 IBM Corporation and Others |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Goh KONDOH - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.actf.model.internal.dom.html.impl; |
| |
| import org.w3c.dom.Node; |
| import org.w3c.dom.html.HTMLCollection; |
| import org.w3c.dom.html.HTMLElement; |
| import org.w3c.dom.html.HTMLTableCaptionElement; |
| import org.w3c.dom.html.HTMLTableElement; |
| import org.w3c.dom.html.HTMLTableRowElement; |
| import org.w3c.dom.html.HTMLTableSectionElement; |
| |
| public class SHTableElement extends SHElement implements HTMLTableElement { |
| protected SHTableElement(String name, SHDocument doc) { |
| super(name, doc); |
| } |
| |
| public HTMLTableCaptionElement getCaption() { |
| for (Node ret = getFirstChild(); ret != null; ret = ret |
| .getNextSibling()) { |
| if (ret instanceof HTMLTableCaptionElement) { |
| return (HTMLTableCaptionElement) ret; |
| } |
| } |
| return null; |
| } |
| |
| public void setCaption(HTMLTableCaptionElement caption) { |
| insertBefore(caption, getFirstChild()); |
| } |
| |
| public HTMLTableSectionElement getTHead() { |
| for (Node ret = getFirstChild(); ret != null; ret = ret |
| .getNextSibling()) { |
| if (ret instanceof HTMLTableSectionElement |
| && ret.getNodeName().equalsIgnoreCase("THEAD")) { |
| return (HTMLTableSectionElement) ret; |
| } |
| } |
| return null; |
| } |
| |
| public void setTHead(HTMLTableSectionElement tHead) { |
| for (Node after = getFirstChild(); after != null; after = after |
| .getNextSibling()) { |
| if (after instanceof HTMLTableSectionElement) { |
| insertBefore(tHead, after); |
| } |
| } |
| insertBefore(tHead, getLastChild()); |
| } |
| |
| public HTMLTableSectionElement getTFoot() { |
| for (Node ret = getFirstChild(); ret != null; ret = ret |
| .getNextSibling()) { |
| if (ret instanceof HTMLTableSectionElement |
| && ret.getNodeName().equalsIgnoreCase("TFOOT")) { |
| return (HTMLTableSectionElement) ret; |
| } |
| } |
| return null; |
| } |
| |
| public void setTFoot(HTMLTableSectionElement tFoot) { |
| for (Node after = getFirstChild(); after != null; after = after |
| .getNextSibling()) { |
| if (after instanceof HTMLTableSectionElement |
| && after.getNodeName().equalsIgnoreCase("TBODY")) { |
| insertBefore(tFoot, after); |
| } |
| } |
| insertBefore(tFoot, getLastChild()); |
| } |
| |
| public HTMLCollection getRows() { |
| int len = 0; |
| HTMLTableRowElement rows[] = new HTMLTableRowElement[16]; |
| for (Node child = getFirstChild(); child != null; child = child |
| .getNextSibling()) { |
| if (child instanceof HTMLTableSectionElement) { |
| for (Node row = child.getFirstChild(); row != null; row = row |
| .getNextSibling()) { |
| if (row instanceof HTMLTableRowElement) { |
| if (rows.length == len) { |
| HTMLTableRowElement buf[] = new HTMLTableRowElement[len * 2]; |
| System.arraycopy(rows, 0, buf, 0, len); |
| rows = buf; |
| } |
| rows[len++] = (HTMLTableRowElement) row; |
| } |
| } |
| } else if (child instanceof HTMLTableRowElement) { |
| if (rows.length == len) { |
| HTMLTableRowElement buf[] = new HTMLTableRowElement[len * 2]; |
| System.arraycopy(rows, 0, buf, 0, len); |
| rows = buf; |
| } |
| rows[len++] = (HTMLTableRowElement) child; |
| } |
| } |
| return ((SHDocument) getOwnerDocument()).createCollection(rows, len); |
| } |
| |
| public HTMLCollection getTBodies() { |
| int len = 0; |
| HTMLTableSectionElement tbodies[] = new HTMLTableSectionElement[16]; |
| for (Node child = getFirstChild(); child != null; child = child |
| .getNextSibling()) { |
| if (child instanceof HTMLTableSectionElement |
| && child.getNodeName().equalsIgnoreCase("TBODY")) { |
| if (tbodies.length == len) { |
| HTMLTableSectionElement buf[] = new HTMLTableSectionElement[len * 2]; |
| System.arraycopy(tbodies, 0, buf, 0, len); |
| tbodies = buf; |
| } |
| tbodies[len++] = (HTMLTableSectionElement) child; |
| } |
| } |
| return ((SHDocument) getOwnerDocument()).createCollection(tbodies, len); |
| } |
| |
| public String getAlign() { |
| return getAttribute("align"); |
| } |
| |
| public void setAlign(String align) { |
| setAttribute("align", align); |
| } |
| |
| public String getBgColor() { |
| return getAttribute("bgcolor"); |
| } |
| |
| public void setBgColor(String bgColor) { |
| setAttribute("bgcolor", bgColor); |
| } |
| |
| public String getBorder() { |
| return getAttribute("border"); |
| } |
| |
| public void setBorder(String border) { |
| setAttribute("border", border); |
| } |
| |
| public String getCellPadding() { |
| return getAttribute("cellpadding"); |
| } |
| |
| public void setCellPadding(String cellPadding) { |
| setAttribute("cellpadding", cellPadding); |
| } |
| |
| public String getCellSpacing() { |
| return getAttribute("cellspacing"); |
| } |
| |
| public void setCellSpacing(String cellSpacing) { |
| setAttribute("cellspacing", cellSpacing); |
| } |
| |
| public String getFrame() { |
| return getAttribute("frame"); |
| } |
| |
| public void setFrame(String frame) { |
| setAttribute("frame", frame); |
| } |
| |
| public String getRules() { |
| return getAttribute("rules"); |
| } |
| |
| public void setRules(String rules) { |
| setAttribute("rules", rules); |
| } |
| |
| public String getSummary() { |
| return getAttribute("summary"); |
| } |
| |
| public void setSummary(String summary) { |
| setAttribute("summary", summary); |
| } |
| |
| public String getWidth() { |
| return getAttribute("width"); |
| } |
| |
| public void setWidth(String width) { |
| setAttribute("width", width); |
| } |
| |
| /** |
| * creates a THEAD element whose tagname is uppercased. |
| */ |
| public HTMLElement createTHead() { |
| return (HTMLElement) getOwnerDocument().createElement("THEAD"); |
| } |
| |
| public void deleteTHead() { |
| for (Node tHead = getFirstChild(); tHead != null; tHead = tHead |
| .getNextSibling()) { |
| if (tHead instanceof HTMLTableSectionElement |
| && tHead.getNodeName().equalsIgnoreCase("THEAD")) { |
| removeChild(tHead); |
| return; |
| } |
| } |
| } |
| |
| /** |
| * creates a TFOOT element whose tagname is uppercased. |
| */ |
| public HTMLElement createTFoot() { |
| return (HTMLElement) getOwnerDocument().createElement("TFOOT"); |
| } |
| |
| public void deleteTFoot() { |
| for (Node tFoot = getFirstChild(); tFoot != null; tFoot = tFoot |
| .getNextSibling()) { |
| if (tFoot instanceof HTMLTableSectionElement |
| && tFoot.getNodeName().equalsIgnoreCase("TFOOT")) { |
| removeChild(tFoot); |
| return; |
| } |
| } |
| } |
| |
| /** |
| * creates a CAPTION element whose tagname is uppercased. |
| */ |
| public HTMLElement createCaption() { |
| return (HTMLElement) getOwnerDocument().createElement("CAPTION"); |
| } |
| |
| public void deleteCaption() { |
| for (Node caption = getFirstChild(); caption != null; caption = caption |
| .getNextSibling()) { |
| if (caption instanceof HTMLTableSectionElement |
| && caption.getNodeName().equalsIgnoreCase("CAPTION")) { |
| removeChild(caption); |
| return; |
| } |
| } |
| } |
| |
| /** |
| * inserts a new empty row whose tagname is uppercased. |
| */ |
| public HTMLElement insertRow(int index) { |
| if (index < 0) |
| return null; |
| HTMLCollection rows = getRows(); |
| if (rows.getLength() <= index) { |
| return null; |
| } else { |
| Node after = rows.item(index); |
| Node parent = after.getParentNode(); |
| HTMLElement ret = (HTMLElement) getOwnerDocument().createElement( |
| "TR"); |
| parent.insertBefore(ret, after); |
| return ret; |
| } |
| } |
| |
| public void deleteRow(int index) { |
| if (index < 0) |
| return; |
| HTMLCollection rows = getRows(); |
| if (rows.getLength() <= index) |
| return; |
| Node row = rows.item(index); |
| row.getParentNode().removeChild(row); |
| } |
| } |