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:
016: package org.itsnat.feashow.features.core.domutils;
017:
018: import java.text.DateFormat;
019: import java.util.Date;
020: import java.util.Locale;
021: import org.itsnat.core.ItsNatDocument;
022: import org.itsnat.core.ItsNatVariableResolver;
023: import org.itsnat.core.domutil.ElementLabel;
024: import org.itsnat.core.domutil.ElementLabelRenderer;
025: import org.itsnat.core.event.NodePropertyTransport;
026: import org.itsnat.core.event.ParamTransport;
027: import org.itsnat.feashow.FeatureTreeNode;
028: import org.w3c.dom.Document;
029: import org.w3c.dom.Element;
030: import org.w3c.dom.events.Event;
031: import org.w3c.dom.events.EventListener;
032: import org.w3c.dom.events.EventTarget;
033: import org.w3c.dom.html.HTMLInputElement;
034:
035: public class VariableResolverTreeNode extends FeatureTreeNode implements
036: EventListener {
037: protected Element linkToResolve;
038: protected HTMLInputElement inputElem;
039: protected ElementLabel label;
040:
041: public VariableResolverTreeNode() {
042: }
043:
044: public void startExamplePanel() {
045: final ItsNatDocument itsNatDoc = getItsNatDocument();
046: Document doc = itsNatDoc.getDocument();
047:
048: this .linkToResolve = doc.getElementById("linkToResolveId");
049: itsNatDoc.addEventListener((EventTarget) linkToResolve,
050: "click", this , false);
051:
052: this .inputElem = (HTMLInputElement) doc
053: .getElementById("inputElemId");
054: ParamTransport prop = new NodePropertyTransport("value");
055: itsNatDoc.addEventListener((EventTarget) inputElem, "change",
056: this , false, prop);
057:
058: ElementLabelRenderer renderer = new ElementLabelRenderer() {
059: protected ItsNatVariableResolver resolver = itsNatDoc
060: .createItsNatVariableResolver();
061:
062: public void renderLabel(ElementLabel label, Object value,
063: Element elem, boolean isNew) {
064: resolver.setLocalVariable("variable_to_resolve", value);
065: resolver.resolve(elem);
066: }
067:
068: public void unrenderLabel(ElementLabel label, Element elem) {
069: }
070: };
071: this .label = itsNatDoc.createElementLabel(doc
072: .getElementById("elementId"), false, renderer);
073: label.setUsePatternMarkupToRender(true);
074:
075: example2();
076:
077: example3();
078: }
079:
080: public void example2() {
081: ItsNatDocument itsNatDoc = getItsNatDocument();
082:
083: Object value = new Date();
084:
085: DateFormat format = DateFormat.getDateInstance(DateFormat.LONG,
086: Locale.US);
087: // Format: June 8,2007
088: String date = format.format(value);
089: int pos = date.indexOf(' ');
090: String month = date.substring(0, pos);
091: int pos2 = date.indexOf(',');
092: String day = date.substring(pos + 1, pos2);
093: String year = date.substring(pos2 + 1);
094:
095: ItsNatVariableResolver resolver = itsNatDoc
096: .createItsNatVariableResolver();
097: resolver.setLocalVariable("year", year);
098: resolver.setLocalVariable("month", month);
099: resolver.setLocalVariable("day", day);
100:
101: Document doc = itsNatDoc.getDocument();
102: Element elem = doc.getElementById("elementId2");
103: resolver.resolve(elem);
104: }
105:
106: public void example3() {
107: ItsNatDocument itsNatDoc = getItsNatDocument();
108:
109: Object value = new PersonExtended("John", "Smith", 30, true);
110:
111: Document doc = itsNatDoc.getDocument();
112: ItsNatVariableResolver resolver = itsNatDoc
113: .createItsNatVariableResolver();
114: resolver.introspect("person", value);
115:
116: Element elem = doc.getElementById("elementId3");
117: resolver.resolve(elem);
118: }
119:
120: public void endExamplePanel() {
121: ItsNatDocument itsNatDoc = getItsNatDocument();
122:
123: this .label = null;
124:
125: itsNatDoc.removeEventListener((EventTarget) linkToResolve,
126: "click", this , false);
127: this .linkToResolve = null;
128:
129: itsNatDoc.removeEventListener((EventTarget) inputElem,
130: "change", this , false);
131: this .inputElem = null;
132: }
133:
134: public void handleEvent(Event evt) {
135: label.setLabelValue(inputElem.getValue());
136: }
137:
138: }
|