001: /*
002: * This file is not part of the ItsNat framework.
003: *
004: * Original source code use and closed source derivatives are authorized
005: * to third parties with no restriction or fee.
006: * The original source code is owned by the author.
007: *
008: * This program is distributed AS IS in the hope that it will be useful,
009: * but WITHOUT ANY WARRANTY; without even the implied warranty of
010: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
011: *
012: * Author: Jose Maria Arranz Santamaria
013: * (C) Innowhere Software Services S.L., Spanish company, year 2007
014: */
015: package org.itsnat.feashow.features.core.domutils;
016:
017: import java.text.DateFormat;
018: import java.util.Date;
019: import java.util.Locale;
020: import org.itsnat.core.ItsNatDocument;
021: import org.itsnat.core.domutil.ElementRenderer;
022: import org.itsnat.core.domutil.ItsNatDOMUtil;
023: import org.itsnat.core.domutil.ItsNatTreeWalker;
024: import org.itsnat.feashow.FeatureTreeNode;
025: import org.w3c.dom.Document;
026: import org.w3c.dom.Element;
027: import org.w3c.dom.html.HTMLTableCellElement;
028: import org.w3c.dom.html.HTMLTableElement;
029: import org.w3c.dom.html.HTMLTableRowElement;
030: import org.w3c.dom.html.HTMLTableSectionElement;
031:
032: public class DOMRendererTreeNode extends FeatureTreeNode {
033: public DOMRendererTreeNode() {
034: }
035:
036: public void startExamplePanel() {
037: Date value = new Date();
038:
039: ItsNatDocument itsNatDoc = getItsNatDocument();
040: Document doc = itsNatDoc.getDocument();
041:
042: ElementRenderer renderer = itsNatDoc
043: .createDefaultElementRenderer();
044: renderer.render(null, value, doc.getElementById("elementId"),
045: true);
046:
047: ElementRenderer customRenderer = new ElementRenderer() {
048: public void render(Object userObj, Object value,
049: Element elem, boolean isNew) {
050: /*
051: <table id="elementId2">
052: <tbody>
053: <tr><td>Year:</td><td>(year)</td></tr>
054: <tr><td>Month:</td><td>(month)</td></tr>
055: <tr><td>Day:</td><td>(day)</td></tr>
056: </tbody>
057: </table>
058: */
059: DateFormat format = DateFormat.getDateInstance(
060: DateFormat.LONG, Locale.US);
061: // Format: June 8,2007
062: String date = format.format(value);
063: int pos = date.indexOf(' ');
064: String month = date.substring(0, pos);
065: int pos2 = date.indexOf(',');
066: String day = date.substring(pos + 1, pos2);
067: String year = date.substring(pos2 + 1);
068:
069: HTMLTableElement table = (HTMLTableElement) elem;
070: HTMLTableSectionElement tbody = (HTMLTableSectionElement) ItsNatTreeWalker
071: .getFirstChildElement(table);
072:
073: HTMLTableRowElement yearRow = (HTMLTableRowElement) ItsNatTreeWalker
074: .getFirstChildElement(tbody);
075: HTMLTableCellElement yearCell = (HTMLTableCellElement) yearRow
076: .getCells().item(1);
077: ItsNatDOMUtil.setTextContent(yearCell, year);
078:
079: HTMLTableRowElement monthRow = (HTMLTableRowElement) ItsNatTreeWalker
080: .getNextSiblingElement(yearRow);
081: HTMLTableCellElement monthCell = (HTMLTableCellElement) monthRow
082: .getCells().item(1);
083: ItsNatDOMUtil.setTextContent(monthCell, month);
084:
085: HTMLTableRowElement dayRow = (HTMLTableRowElement) ItsNatTreeWalker
086: .getNextSiblingElement(monthRow);
087: HTMLTableCellElement dayCell = (HTMLTableCellElement) dayRow
088: .getCells().item(1);
089: ItsNatDOMUtil.setTextContent(dayCell, day);
090: }
091:
092: public void unrender(Object userObj, Element elem) {
093: }
094: };
095:
096: customRenderer.render(null, value, doc
097: .getElementById("elementId2"), true);
098: }
099:
100: public void endExamplePanel() {
101: }
102:
103: }
|