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;
017:
018: import java.util.HashMap;
019: import java.util.Map;
020: import javax.swing.event.TreeSelectionEvent;
021: import javax.swing.event.TreeSelectionListener;
022: import javax.swing.tree.DefaultMutableTreeNode;
023: import javax.swing.tree.DefaultTreeModel;
024: import javax.swing.tree.TreePath;
025: import javax.swing.tree.TreeSelectionModel;
026: import org.itsnat.comp.ItsNatComponentManager;
027: import org.itsnat.comp.free.ItsNatFreeInclude;
028: import org.itsnat.comp.free.ItsNatFreeTree;
029: import org.itsnat.comp.ItsNatListStructure;
030: import org.itsnat.core.ItsNatDocument;
031: import org.itsnat.core.html.ItsNatHTMLDocument;
032: import org.itsnat.feashow.features.components.AutomaticComponentBuildTreeNode;
033: import org.itsnat.feashow.features.components.custom.CustomComponentTreeNode;
034: import org.itsnat.feashow.features.components.FreeIncludeTreeNode;
035: import org.itsnat.feashow.features.components.FormTreeNode;
036: import org.itsnat.feashow.features.components.functest.FuncTestUsingBrowserTreeNode;
037: import org.itsnat.feashow.features.components.buttons.normal.AnchorTreeNode;
038: import org.itsnat.feashow.features.components.buttons.normal.ButtonTreeNode;
039: import org.itsnat.feashow.features.components.buttons.normal.FreeButtonNormalTreeNode;
040: import org.itsnat.feashow.features.components.buttons.normal.InputButtonTreeNode;
041: import org.itsnat.feashow.features.components.buttons.normal.InputImageTreeNode;
042: import org.itsnat.feashow.features.components.buttons.normal.InputResetTreeNode;
043: import org.itsnat.feashow.features.components.buttons.normal.InputSubmitFormTreeNode;
044: import org.itsnat.feashow.features.components.buttons.normal.InputSubmitTreeNode;
045: import org.itsnat.feashow.features.components.buttons.normal.MouseMoveTreeNode;
046: import org.itsnat.feashow.features.components.buttons.normal.MouseOverOutTreeNode;
047: import org.itsnat.feashow.features.components.buttons.normal.MouseUpDownTreeNode;
048: import org.itsnat.feashow.features.components.buttons.toggle.FreeCheckBoxTreeNode;
049: import org.itsnat.feashow.features.components.buttons.toggle.FreeRadioButtonTreeNode;
050: import org.itsnat.feashow.features.components.buttons.toggle.InputCheckBoxTreeNode;
051: import org.itsnat.feashow.features.components.buttons.toggle.InputRadioButtonTreeNode;
052: import org.itsnat.feashow.features.components.functest.FuncTestNotBrowserTreeNode;
053: import org.itsnat.feashow.features.components.labels.FreeLabelCustomEditorTreeNode;
054: import org.itsnat.feashow.features.components.labels.FreeLabelCustomRendererTreeNode;
055: import org.itsnat.feashow.features.components.labels.FreeLabelTreeNode;
056: import org.itsnat.feashow.features.components.labels.LabelTreeNode;
057: import org.itsnat.feashow.features.components.lists.CityListCustomStructure;
058: import org.itsnat.feashow.features.components.lists.FreeComboBoxTreeNode;
059: import org.itsnat.feashow.features.components.lists.FreeListCompoundTreeNode;
060: import org.itsnat.feashow.features.components.lists.FreeListCustomStructureTreeNode;
061: import org.itsnat.feashow.features.components.lists.FreeListTreeNode;
062: import org.itsnat.feashow.features.components.lists.SelectComboBoxTreeNode;
063: import org.itsnat.feashow.features.components.lists.SelectListTreeNode;
064: import org.itsnat.feashow.features.components.tables.FreeTableTreeNode;
065: import org.itsnat.feashow.features.components.tables.TableRowSpanTreeNode;
066: import org.itsnat.feashow.features.components.tables.TableTreeNode;
067: import org.itsnat.feashow.features.components.text.TextAreaTreeNode;
068: import org.itsnat.feashow.features.components.text.fields.InputFileTreeNode;
069: import org.itsnat.feashow.features.components.text.fields.InputHiddenTreeNode;
070: import org.itsnat.feashow.features.components.text.fields.InputPasswordTreeNode;
071: import org.itsnat.feashow.features.components.text.fields.InputTextKeyUpDownTreeNode;
072: import org.itsnat.feashow.features.components.text.fields.InputTextFormattedTreeNode;
073: import org.itsnat.feashow.features.components.text.fields.InputTextFormattedWithFactoryTreeNode;
074: import org.itsnat.feashow.features.components.text.fields.InputTextTreeNode;
075: import org.itsnat.feashow.features.components.trees.FreeTreeRootlessTreeNode;
076: import org.itsnat.feashow.features.components.trees.FreeTreeTreeNode;
077: import org.itsnat.feashow.features.components.trees.FreeTreeTableTreeNode;
078: import org.itsnat.feashow.features.core.listeners.AsynchronousTaskTreeNode;
079: import org.itsnat.feashow.features.core.listeners.AutoSyncAttributesOnServerTreeNode;
080: import org.itsnat.feashow.features.core.listeners.AutoSyncPropertiesOnServerTreeNode;
081: import org.itsnat.feashow.features.core.domutils.ElementCSSInlineStyleTreeNode;
082: import org.itsnat.feashow.features.core.EventMonitorTreeNode;
083: import org.itsnat.feashow.features.core.JavaToJavaScriptGenTreeNode;
084: import org.itsnat.feashow.features.core.MarkupFragmentsTreeNode;
085: import org.itsnat.feashow.features.core.domutils.DOMRendererTreeNode;
086: import org.itsnat.feashow.features.core.domutils.PatternBasedElementListTreeNode;
087: import org.itsnat.feashow.features.core.domutils.PatternBasedElementTableTreeNode;
088: import org.itsnat.feashow.features.core.domutils.PatternBasedElementTreeTreeNode;
089: import org.itsnat.feashow.features.core.listeners.CometNotifierTreeNode;
090: import org.itsnat.feashow.features.core.listeners.ContinueEventListenerTreeNode;
091: import org.itsnat.feashow.features.core.RemoteControlTreeNode;
092: import org.itsnat.feashow.features.core.listeners.DOMEventListenerTreeNode;
093: import org.itsnat.feashow.features.core.serverevts.ServerEventsUsingBrowserTreeNode;
094: import org.itsnat.feashow.features.core.domutils.FreeElementListTreeNode;
095: import org.itsnat.feashow.features.core.domutils.FreeElementTableTreeNode;
096: import org.itsnat.feashow.features.core.domutils.PatternBasedElementLabelTreeNode;
097: import org.itsnat.feashow.features.core.listeners.MutationEventListenerTreeNode;
098: import org.itsnat.feashow.features.core.listeners.UserEventListenerTreeNode;
099: import org.itsnat.feashow.features.core.listeners.SyncModesTreeNode;
100: import org.itsnat.feashow.features.core.listeners.TimersTreeNode;
101: import org.itsnat.feashow.features.core.domutils.VariableResolverTreeNode;
102: import org.itsnat.feashow.features.core.listeners.AJAXTimeoutTreeNode;
103: import org.itsnat.feashow.features.core.listeners.AutoSyncNodeCompleteOnServerTreeNode;
104: import org.itsnat.feashow.features.core.listeners.AutoSyncNodeInnerOnServerTreeNode;
105: import org.itsnat.feashow.features.core.serverevts.ServerEventsNotBrowserTreeNode;
106: import org.w3c.dom.Document;
107: import org.w3c.dom.Element;
108: import org.w3c.dom.events.Event;
109: import org.w3c.dom.events.EventListener;
110: import org.w3c.dom.events.EventTarget;
111: import org.w3c.dom.html.HTMLAnchorElement;
112:
113: public class FeatureTreeBuilder implements TreeSelectionListener,
114: EventListener {
115: protected ItsNatHTMLDocument itsNatDoc;
116: protected Element featureTitleElement;
117: protected ItsNatFreeTree tree;
118: protected ItsNatFreeInclude include;
119: protected Element exampleTab;
120: protected Element docTab;
121: protected Element codeTab;
122: protected HTMLAnchorElement exampleTabLink;
123: protected HTMLAnchorElement docTabLink;
124: protected HTMLAnchorElement codeTabLink;
125: protected FeatureTreeNode selectedExample;
126: protected Map features = new HashMap();
127:
128: public FeatureTreeBuilder(ItsNatHTMLDocument itsNatDoc) {
129: this .itsNatDoc = itsNatDoc;
130:
131: registerArtifacts();
132:
133: Document doc = itsNatDoc.getDocument();
134: ItsNatComponentManager componentMgr = itsNatDoc
135: .getItsNatComponentManager();
136: this .tree = componentMgr.createItsNatFreeTree(doc
137: .getElementById("examplesTreeId"), null);
138:
139: this .featureTitleElement = doc.getElementById("titleId");
140:
141: this .exampleTab = doc.getElementById("exampleTabId");
142: this .codeTab = doc.getElementById("codeTabId");
143: this .docTab = doc.getElementById("docTabId");
144:
145: this .exampleTabLink = (HTMLAnchorElement) doc
146: .getElementById("exampleTabLinkId");
147: this .codeTabLink = (HTMLAnchorElement) doc
148: .getElementById("codeTabLinkId");
149: this .docTabLink = (HTMLAnchorElement) doc
150: .getElementById("docTabLinkId");
151:
152: itsNatDoc.addEventListener((EventTarget) exampleTab, "click",
153: this , false);
154: itsNatDoc.addEventListener((EventTarget) codeTab, "click",
155: this , false);
156: itsNatDoc.addEventListener((EventTarget) docTab, "click", this ,
157: false);
158:
159: this .include = componentMgr.createItsNatFreeInclude(doc
160: .getElementById("featureBoxId"), null);
161:
162: tree.setItsNatTreeCellRenderer(new MainTreeRenderer(tree
163: .getItsNatTreeCellRenderer()));
164:
165: DefaultMutableTreeNode rootNode = createRoot();
166: DefaultTreeModel dataModel = new DefaultTreeModel(rootNode);
167: tree.setTreeModel(dataModel);
168:
169: new FreeTreeDecorator(tree).bind();
170:
171: registerNodes(rootNode);
172:
173: tree.setItsNatTreeCellEditor(null); // to avoid edition
174:
175: TreeSelectionModel selModel = tree.getTreeSelectionModel();
176: selModel
177: .setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
178: selModel.addTreeSelectionListener(this );
179: }
180:
181: public ItsNatDocument getItsNatDocument() {
182: return itsNatDoc;
183: }
184:
185: public Element getFeatureBoxElement() {
186: return include.getElement();
187: }
188:
189: public ItsNatFreeTree getItsNatFreeTree() {
190: return tree;
191: }
192:
193: public Element getFeatureTitleElement() {
194: return featureTitleElement;
195: }
196:
197: public Element getExampleTabElement() {
198: return exampleTab;
199: }
200:
201: public Element getDocTabElement() {
202: return docTab;
203: }
204:
205: public Element getCodeTabElement() {
206: return codeTab;
207: }
208:
209: public HTMLAnchorElement getExampleTabPermalinkElement() {
210: return exampleTabLink;
211: }
212:
213: public HTMLAnchorElement getDocTabPermalinkElement() {
214: return docTabLink;
215: }
216:
217: public HTMLAnchorElement getCodeTabPermalinkElement() {
218: return codeTabLink;
219: }
220:
221: public ItsNatFreeInclude getItsNatFreeInclude() {
222: return include;
223: }
224:
225: public DefaultMutableTreeNode getDefaultMutableTreeNode(
226: String featureName) {
227: return (DefaultMutableTreeNode) features.get(featureName);
228: }
229:
230: public DefaultMutableTreeNode createRoot() {
231: String featureName = "feashow.root";
232: FeatureTreeNode featureRoot = new NoCodeTreeNode();
233: featureRoot.init(this , false, true, false, featureName,
234: "ItsNat", "ItsNat");
235:
236: DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(
237: featureRoot);
238: features.put(featureName, rootNode);
239: return rootNode;
240: }
241:
242: public DefaultMutableTreeNode addNode(boolean hasExample,
243: boolean hasExplanation, boolean hasSourceCode,
244: String featureName, String treeNodeText, String title,
245: FeatureTreeNode feature, DefaultMutableTreeNode parentNode) {
246: feature.init(this , hasExample, hasExplanation, hasSourceCode,
247: featureName, treeNodeText, title);
248:
249: DefaultTreeModel dataModel = (DefaultTreeModel) tree
250: .getTreeModel();
251: DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(
252: feature);
253: int count = dataModel.getChildCount(parentNode);
254: dataModel.insertNodeInto(childNode, parentNode, count);
255:
256: features.put(featureName, childNode);
257:
258: return childNode;
259: }
260:
261: public void valueChanged(TreeSelectionEvent e) {
262: //TreeSelectionModel selModel = (TreeSelectionModel)e.getSource();
263:
264: TreePath[] paths = e.getPaths();
265:
266: DefaultMutableTreeNode dataNode = (DefaultMutableTreeNode) paths[0]
267: .getLastPathComponent();
268: FeatureTreeNode example = (FeatureTreeNode) dataNode
269: .getUserObject();
270:
271: if (selectedExample == example)
272: return;
273: if (selectedExample != null)
274: selectedExample.endPanels();
275:
276: this .selectedExample = example;
277:
278: selectedExample.selectFeature();
279: }
280:
281: public void handleEvent(Event evt) {
282: int panelToLoad = 0;
283: EventTarget currTarget = evt.getCurrentTarget();
284: if (currTarget == exampleTab)
285: panelToLoad = FeatureTreeNode.EXAMPLE_PANEL;
286: else if (currTarget == codeTab)
287: panelToLoad = FeatureTreeNode.CODE_PANEL;
288: else if (currTarget == docTab)
289: panelToLoad = FeatureTreeNode.DOC_PANEL;
290:
291: selectedExample.selectPanel(panelToLoad);
292: }
293:
294: public void registerNodes(DefaultMutableTreeNode rootNode) {
295: DefaultMutableTreeNode childNodeL1;
296: DefaultMutableTreeNode childNodeL2;
297: DefaultMutableTreeNode childNodeL3;
298: DefaultMutableTreeNode childNodeL4;
299: FeatureTreeNode feature;
300:
301: childNodeL1 = addNode(false, true, true,
302: "feashow.featShowcase", "Feature Showcase Overview",
303: "Feature Showcase Overview", new NoCodeTreeNode(),
304: rootNode);
305:
306: childNodeL1 = addNode(false, true, false, "feashow.core",
307: "Core", "Core", new NoCodeTreeNode(), rootNode);
308:
309: childNodeL2 = addNode(true, true, true,
310: "feashow.core.htmlExampleInManual",
311: "HTML Example in Manual", "HTML Example in Manual",
312: new NoCodeTreeNode(), childNodeL1);
313:
314: childNodeL2 = addNode(true, true, true,
315: "feashow.core.xmlExampleInManual",
316: "XML Example in Manual", "XML Example in Manual",
317: new NoCodeTreeNode(), childNodeL1);
318:
319: childNodeL2 = addNode(false, true, false,
320: "feashow.core.listeners", "Listeners", "Listeners",
321: new NoCodeTreeNode(), childNodeL1);
322:
323: childNodeL3 = addNode(true, true, true,
324: "feashow.core.listeners.domEventListener",
325: "DOM Event Listeners", "DOM Event Listeners",
326: new DOMEventListenerTreeNode(), childNodeL2);
327:
328: childNodeL3 = addNode(true, true, true,
329: "feashow.core.listeners.syncModes", "Sync Modes",
330: "Sync Modes communicating with the Server",
331: new SyncModesTreeNode(), childNodeL2);
332:
333: childNodeL3 = addNode(true, true, true,
334: "feashow.core.listeners.mutationEventListener",
335: "Mutation Event Listeners", "Mutation Event Listeners",
336: new MutationEventListenerTreeNode(), childNodeL2);
337:
338: childNodeL3 = addNode(true, true, true,
339: "feashow.core.listeners.autoSyncAttributesOnServer",
340: "Auto Sync Attributes on Server",
341: "Auto Sync Attributes on Server",
342: new AutoSyncAttributesOnServerTreeNode(), childNodeL2);
343:
344: childNodeL3 = addNode(true, true, true,
345: "feashow.core.listeners.autoSyncNodeInnerOnServer",
346: "Auto Sync Node Inner on Server",
347: "Auto Sync Node Inner on Server",
348: new AutoSyncNodeInnerOnServerTreeNode(), childNodeL2);
349:
350: childNodeL3 = addNode(true, true, true,
351: "feashow.core.listeners.autoSyncNodeCompleteOnServer",
352: "Auto Sync Node Complete on Server",
353: "Auto Sync Node Complete on Server",
354: new AutoSyncNodeCompleteOnServerTreeNode(), childNodeL2);
355:
356: childNodeL3 = addNode(true, true, true,
357: "feashow.core.listeners.autoSyncPropertiesOnServer",
358: "Auto Sync Properties on Server",
359: "Auto Sync Properties on Server",
360: new AutoSyncPropertiesOnServerTreeNode(), childNodeL2);
361:
362: childNodeL3 = addNode(true, true, true,
363: "feashow.core.listeners.continueEventListener",
364: "Continue Event Listeners", "Continue Event Listeners",
365: new ContinueEventListenerTreeNode(), childNodeL2);
366:
367: childNodeL3 = addNode(true, true, true,
368: "feashow.core.listeners.userEventListener",
369: "User Defined Event Listeners",
370: "User Defined Event Listeners",
371: new UserEventListenerTreeNode(), childNodeL2);
372:
373: childNodeL3 = addNode(true, true, true,
374: "feashow.core.listeners.timers", "Timers", "Timers",
375: new TimersTreeNode(), childNodeL2);
376:
377: childNodeL3 = addNode(true, true, true,
378: "feashow.core.listeners.asyncTask",
379: "Asynchronous Task", "Asynchronous Task",
380: new AsynchronousTaskTreeNode(), childNodeL2);
381:
382: childNodeL3 = addNode(true, true, true,
383: "feashow.core.listeners.cometNotifier",
384: "Comet Notifier", "Comet Notifier",
385: new CometNotifierTreeNode(), childNodeL2);
386:
387: childNodeL3 = addNode(true, true, true,
388: "feashow.core.listeners.ajaxTimeout", "AJAX Timeout",
389: "AJAX Timeout", new AJAXTimeoutTreeNode(), childNodeL2);
390:
391: childNodeL2 = addNode(false, true, false,
392: "feashow.core.domutils", "DOM Utils", "DOM Utils",
393: new NoCodeTreeNode(), childNodeL1);
394:
395: childNodeL3 = addNode(true, true, true,
396: "feashow.core.domutils.freeElementList",
397: "Free Element Lists", "Free Element Lists",
398: new FreeElementListTreeNode(), childNodeL2);
399:
400: childNodeL3 = addNode(true, true, true,
401: "feashow.core.domutils.freeElementTable",
402: "Free Element Tables", "Free Element Tables",
403: new FreeElementTableTreeNode(), childNodeL2);
404:
405: childNodeL3 = addNode(true, true, true,
406: "feashow.core.domutils.domRenderer", "DOM Renderers",
407: "DOM Renderers", new DOMRendererTreeNode(), childNodeL2);
408:
409: childNodeL3 = addNode(true, true, true,
410: "feashow.core.domutils.patternBasedElementLabel",
411: "Pattern Based Element Labels",
412: "Pattern Based Element Labels",
413: new PatternBasedElementLabelTreeNode(), childNodeL2);
414:
415: childNodeL3 = addNode(true, true, true,
416: "feashow.core.domutils.patternBasedElementList",
417: "Pattern Based Element Lists",
418: "Pattern Based Element Lists",
419: new PatternBasedElementListTreeNode(), childNodeL2);
420:
421: childNodeL3 = addNode(true, true, true,
422: "feashow.core.domutils.patternBasedElementTable",
423: "Pattern Based Element Tables",
424: "Pattern Based Element Tables",
425: new PatternBasedElementTableTreeNode(), childNodeL2);
426:
427: childNodeL3 = addNode(true, true, true,
428: "feashow.core.domutils.patternBasedElementTree",
429: "Pattern Based Element Trees",
430: "Pattern Based Element Trees",
431: new PatternBasedElementTreeTreeNode(), childNodeL2);
432:
433: childNodeL3 = addNode(true, true, true,
434: "feashow.core.domutils.variableResolver",
435: "Variable Resolver", "Variable Resolver",
436: new VariableResolverTreeNode(), childNodeL2);
437:
438: childNodeL3 = addNode(true, true, true,
439: "feashow.core.domutils.elementCSSInlineStyle",
440: "W3C's ElementCSSInlineStyle",
441: "W3C's ElementCSSInlineStyle",
442: new ElementCSSInlineStyleTreeNode(), childNodeL2);
443:
444: childNodeL2 = addNode(true, true, true,
445: "feashow.core.markupFragments", "Markup Fragments",
446: "Markup Fragments", new MarkupFragmentsTreeNode(),
447: childNodeL1);
448:
449: childNodeL2 = addNode(true, true, true,
450: "feashow.core.remoteCtrl", "Remote View/Control",
451: "Remote View/Control", new RemoteControlTreeNode(),
452: childNodeL1);
453:
454: childNodeL2 = addNode(true, true, true,
455: "feashow.core.xmlGeneration", "XML Generation",
456: "XML Generation", new NoCodeTreeNode(), childNodeL1);
457:
458: childNodeL2 = addNode(true, true, true,
459: "feashow.core.svgInXHTML", "Dynamic SVG in XHTML",
460: "Dynamic SVG in XHTML", new NoCodeTreeNode(),
461: childNodeL1);
462:
463: childNodeL2 = addNode(true, true, true,
464: "feashow.core.javaToJavaScriptGen",
465: "Java to JavaScript Generation",
466: "Java to JavaScript Generation",
467: new JavaToJavaScriptGenTreeNode(), childNodeL1);
468:
469: childNodeL2 = addNode(true, true, true,
470: "feashow.core.eventMonitor", "Event Monitor",
471: "Event Monitor", new EventMonitorTreeNode(),
472: childNodeL1);
473:
474: childNodeL2 = addNode(false, true, false,
475: "feashow.core.serverevts",
476: "Events Fired by the Server",
477: "Events Fired by the Server", new NoCodeTreeNode(),
478: childNodeL1);
479:
480: childNodeL3 = addNode(true, true, true,
481: "feashow.core.serverevts.usingBrowser",
482: "Using The Browser", "Using The Browser",
483: new ServerEventsUsingBrowserTreeNode(), childNodeL2);
484:
485: childNodeL3 = addNode(true, true, true,
486: "feashow.core.serverevts.notBrowser",
487: "Not Using The Browser", "Not Using The Browser",
488: new ServerEventsNotBrowserTreeNode(), childNodeL2);
489:
490: childNodeL2 = addNode(false, true, false,
491: "feashow.core.referrer", "Referrers", "Referrers",
492: new NoCodeTreeNode(), childNodeL1);
493:
494: childNodeL3 = addNode(true, true, true,
495: "feashow.core.referrer.referrerPull",
496: "Referrer Pull & Fwd/Back Buttons",
497: "Referrer Pull & Fwd/Back Button",
498: new NoCodeTreeNode(), childNodeL2);
499:
500: childNodeL3 = addNode(true, true, true,
501: "feashow.core.referrer.referrerPush",
502: "Referrer Push & Fwd/Back Button",
503: "Referrer Push & Fwd/Back Button",
504: new NoCodeTreeNode(), childNodeL2);
505:
506: childNodeL2 = addNode(false, true, false,
507: "feashow.core.degraded", "Degraded Modes",
508: "Degraded Modes", new NoCodeTreeNode(), childNodeL1);
509:
510: childNodeL3 = addNode(true, true, true,
511: "feashow.core.degraded.nonAJAX", "Non-AJAX",
512: "Non-AJAX", new NoCodeTreeNode(), childNodeL2);
513:
514: childNodeL3 = addNode(true, true, true,
515: "feashow.core.degraded.nonScript",
516: "JavaScript Disabled", "JavaScript Disabled",
517: new NoCodeTreeNode(), childNodeL2);
518:
519: childNodeL2 = addNode(true, true, true,
520: "feashow.core.bookmarking", "Bookmarking with AJAX",
521: "Bookmarking with AJAX", new NoCodeTreeNode(),
522: childNodeL1);
523:
524: childNodeL2 = addNode(true, true, true,
525: "feashow.core.prettyURL", "Pretty URLs", "Pretty URLs",
526: new NoCodeTreeNode(), childNodeL1);
527:
528: // Components
529:
530: childNodeL1 = addNode(false, true, false, "feashow.components",
531: "Components", "Components", new NoCodeTreeNode(),
532: rootNode);
533:
534: childNodeL2 = addNode(true, true, true,
535: "feashow.components.exampleInManual",
536: "Component Based Example in Manual",
537: "Component Based Example in Manual",
538: new NoCodeTreeNode(), childNodeL1);
539:
540: childNodeL2 = addNode(false, true, false,
541: "feashow.components.buttons", "Buttons", "Buttons",
542: new NoCodeTreeNode(), childNodeL1);
543:
544: childNodeL3 = addNode(false, true, false,
545: "feashow.components.buttons.normal", "Normal",
546: "Normal Buttons", new NoCodeTreeNode(), childNodeL2);
547:
548: childNodeL4 = addNode(true, true, true,
549: "feashow.components.buttons.normal.inputButton",
550: "Input Button", "Input Button",
551: new InputButtonTreeNode(), childNodeL3);
552:
553: childNodeL4 = addNode(true, true, true,
554: "feashow.components.buttons.normal.inputImage",
555: "Input Image", "Input Image", new InputImageTreeNode(),
556: childNodeL3);
557:
558: childNodeL4 = addNode(true, true, true,
559: "feashow.components.buttons.normal.inputSubmit",
560: "Input Submit", "Input Submit",
561: new InputSubmitTreeNode(), childNodeL3);
562:
563: childNodeL4 = addNode(true, true, true,
564: "feashow.components.buttons.normal.inputSubmitForm",
565: "Input Submit with Form", "Input Submit with Form",
566: new InputSubmitFormTreeNode(), childNodeL3);
567:
568: childNodeL4 = addNode(true, true, true,
569: "feashow.components.buttons.normal.inputReset",
570: "Input Reset", "Input Reset", new InputResetTreeNode(),
571: childNodeL3);
572:
573: childNodeL4 = addNode(true, true, true,
574: "feashow.components.buttons.normal.button",
575: "Button Element", "Button Element",
576: new ButtonTreeNode(), childNodeL3);
577:
578: childNodeL4 = addNode(true, true, true,
579: "feashow.components.buttons.normal.anchor", "Anchor",
580: "Anchor as Button", new AnchorTreeNode(), childNodeL3);
581:
582: childNodeL4 = addNode(true, true, true,
583: "feashow.components.buttons.normal.freeButton",
584: "Free Button", "Free Button",
585: new FreeButtonNormalTreeNode(), childNodeL3);
586:
587: childNodeL4 = addNode(true, true, true,
588: "feashow.components.buttons.normal.mouseUpDown",
589: "Mouse Up/Down", "Mouse Up/Down",
590: new MouseUpDownTreeNode(), childNodeL3);
591:
592: childNodeL4 = addNode(true, true, true,
593: "feashow.components.buttons.normal.mouseOverOut",
594: "Mouse Over/Out", "Mouse Over/Out",
595: new MouseOverOutTreeNode(), childNodeL3);
596:
597: childNodeL4 = addNode(true, true, true,
598: "feashow.components.buttons.normal.mouseMove",
599: "Mouse Move", "Mouse Move", new MouseMoveTreeNode(),
600: childNodeL3);
601:
602: childNodeL3 = addNode(false, true, false,
603: "feashow.components.buttons.toggle", "Toggle",
604: "Toggle Buttons", new NoCodeTreeNode(), childNodeL2);
605:
606: childNodeL4 = addNode(true, true, true,
607: "feashow.components.buttons.toggle.inputCheckBox",
608: "Input Check Box", "Input Check Box",
609: new InputCheckBoxTreeNode(), childNodeL3);
610:
611: childNodeL4 = addNode(true, true, true,
612: "feashow.components.buttons.toggle.inputRadio",
613: "Input Radio", "Input Radio",
614: new InputRadioButtonTreeNode(), childNodeL3);
615:
616: childNodeL4 = addNode(true, true, true,
617: "feashow.components.buttons.toggle.freeCheckBox",
618: "Free Check Box", "Free Check Box",
619: new FreeCheckBoxTreeNode(), childNodeL3);
620:
621: childNodeL4 = addNode(true, true, true,
622: "feashow.components.buttons.toggle.freeRadio",
623: "Free Radio Button", "Free Radio Button",
624: new FreeRadioButtonTreeNode(), childNodeL3);
625:
626: childNodeL2 = addNode(false, true, false,
627: "feashow.components.text", "Text", "Text Components",
628: new NoCodeTreeNode(), childNodeL1);
629:
630: childNodeL3 = addNode(false, true, false,
631: "feashow.components.text.fields", "Text Fields",
632: "Text Fields", new NoCodeTreeNode(), childNodeL2);
633:
634: childNodeL4 = addNode(true, true, true,
635: "feashow.components.text.fields.inputText",
636: "Input Text", "Input Text", new InputTextTreeNode(),
637: childNodeL3);
638:
639: childNodeL4 = addNode(true, true, true,
640: "feashow.components.text.fields.inputPassword",
641: "Input Password", "Input Password",
642: new InputPasswordTreeNode(), childNodeL3);
643:
644: childNodeL4 = addNode(true, true, true,
645: "feashow.components.text.fields.inputFile",
646: "Input File", "Input File", new InputFileTreeNode(),
647: childNodeL3);
648:
649: childNodeL4 = addNode(true, true, true,
650: "feashow.components.text.fields.inputHidden",
651: "Input Hidden", "Input Hidden",
652: new InputHiddenTreeNode(), childNodeL3);
653:
654: childNodeL4 = addNode(true, true, true,
655: "feashow.components.text.fields.inputTextFormatted",
656: "Input Text Formatted", "Input Text Formatted",
657: new InputTextFormattedTreeNode(), childNodeL3);
658:
659: childNodeL4 = addNode(
660: true,
661: true,
662: true,
663: "feashow.components.text.fields.inputTextFormattedWithFactory",
664: "Input Text Formatted with Factory",
665: "Input Text Formatted with Factory",
666: new InputTextFormattedWithFactoryTreeNode(),
667: childNodeL3);
668:
669: childNodeL4 = addNode(true, true, true,
670: "feashow.components.text.fields.inputTextKeyUpDown",
671: "Key Up/Down", "Key Up/Down",
672: new InputTextKeyUpDownTreeNode(), childNodeL3);
673:
674: childNodeL3 = addNode(true, true, true,
675: "feashow.components.text.textArea", "Text Area",
676: "Text Area", new TextAreaTreeNode(), childNodeL2);
677:
678: childNodeL2 = addNode(false, true, false,
679: "feashow.components.labels", "Labels", "Labels",
680: new NoCodeTreeNode(), childNodeL1);
681:
682: childNodeL3 = addNode(true, true, true,
683: "feashow.components.labels.label", "Label", "Label",
684: new LabelTreeNode(), childNodeL2);
685:
686: childNodeL3 = addNode(true, true, true,
687: "feashow.components.labels.freeLabel", "Free Label",
688: "Free Label", new FreeLabelTreeNode(), childNodeL2);
689:
690: childNodeL3 = addNode(true, true, true,
691: "feashow.components.labels.freeLabelCustomEditor",
692: "Custom Editor", "Custom Editor",
693: new FreeLabelCustomEditorTreeNode(), childNodeL2);
694:
695: childNodeL3 = addNode(true, true, true,
696: "feashow.components.labels.freeLabelCustomRenderer",
697: "Custom Renderer", "Custom Renderer",
698: new FreeLabelCustomRendererTreeNode(), childNodeL2);
699:
700: childNodeL2 = addNode(false, true, false,
701: "feashow.components.lists", "Lists", "Lists",
702: new NoCodeTreeNode(), childNodeL1);
703:
704: childNodeL3 = addNode(true, true, true,
705: "feashow.components.lists.selectComboBox",
706: "Select Combo Box", "Select Combo Box",
707: new SelectComboBoxTreeNode(), childNodeL2);
708:
709: childNodeL3 = addNode(true, true, true,
710: "feashow.components.lists.selectList", "Select List",
711: "Select List", new SelectListTreeNode(), childNodeL2);
712:
713: childNodeL3 = addNode(true, true, true,
714: "feashow.components.lists.freeComboBox",
715: "Free Combo Box", "Free Combo Box",
716: new FreeComboBoxTreeNode(), childNodeL2);
717:
718: childNodeL3 = addNode(true, true, true,
719: "feashow.components.lists.freeList", "Free List",
720: "Free List", new FreeListTreeNode(), childNodeL2);
721:
722: childNodeL3 = addNode(true, true, true,
723: "feashow.components.lists.freeListCustomStructure",
724: "Free List Custom Structure",
725: "Free List Custom Structure",
726: new FreeListCustomStructureTreeNode(), childNodeL2);
727:
728: childNodeL3 = addNode(true, true, true,
729: "feashow.components.lists.freeListCompound",
730: "Free List Compound", "Free List Compound",
731: new FreeListCompoundTreeNode(), childNodeL2);
732:
733: childNodeL3 = addNode(true, true, true,
734: "feashow.components.lists.freeListSVG",
735: "Free List SVG", "Free List SVG", new NoCodeTreeNode(),
736: childNodeL2);
737:
738: childNodeL2 = addNode(false, true, false,
739: "feashow.components.tables", "Tables", "Tables",
740: new NoCodeTreeNode(), childNodeL1);
741:
742: childNodeL3 = addNode(true, true, true,
743: "feashow.components.tables.table", "Table", "Table",
744: new TableTreeNode(), childNodeL2);
745:
746: childNodeL3 = addNode(true, true, true,
747: "feashow.components.tables.freeTable", "Free Table",
748: "Free Table", new FreeTableTreeNode(), childNodeL2);
749:
750: childNodeL3 = addNode(true, true, true,
751: "feashow.components.tables.tableRowSpan",
752: "Table using Row Span", "Table using Row Span",
753: new TableRowSpanTreeNode(), childNodeL2);
754:
755: childNodeL3 = addNode(true, true, true,
756: "feashow.components.tables.freeTableSVG",
757: "Free Table SVG", "Free Table SVG",
758: new NoCodeTreeNode(), childNodeL2);
759:
760: childNodeL2 = addNode(false, true, true,
761: "feashow.components.trees", "Trees", "Trees",
762: new NoCodeTreeNode(), childNodeL1);
763:
764: childNodeL3 = addNode(true, true, true,
765: "feashow.components.trees.freeTreeUsingUL",
766: "Tree using <ul>", "Tree using <ul>",
767: new FreeTreeTreeNode(), childNodeL2);
768:
769: childNodeL3 = addNode(true, true, true,
770: "feashow.components.trees.freeTreeUsingTable",
771: "Tree using <table>", "Tree using <table>",
772: new FreeTreeTreeNode(), childNodeL2);
773:
774: childNodeL3 = addNode(true, true, true,
775: "feashow.components.trees.freeTreeRootless",
776: "Tree Rootless", "Tree Rootless",
777: new FreeTreeRootlessTreeNode(), childNodeL2);
778:
779: childNodeL3 = addNode(true, true, true,
780: "feashow.components.trees.freeTreeTable", "Tree-Table",
781: "Tree-Table", new FreeTreeTableTreeNode(), childNodeL2);
782:
783: childNodeL3 = addNode(true, true, true,
784: "feashow.components.trees.freeTreeTableNoHTMLTable",
785: "Tree-Table without <table>",
786: "Tree-Table without <table>",
787: new FreeTreeTableTreeNode(), childNodeL2);
788:
789: childNodeL2 = addNode(true, true, true,
790: "feashow.components.form", "Form", "Form",
791: new FormTreeNode(), childNodeL1);
792:
793: childNodeL2 = addNode(true, true, true,
794: "feashow.components.freeInclude", "Free Include",
795: "Free Include", new FreeIncludeTreeNode(), childNodeL1);
796:
797: childNodeL2 = addNode(true, true, true,
798: "feashow.components.customComponent",
799: "Custom Components", "Custom Components",
800: new CustomComponentTreeNode(), childNodeL1);
801:
802: childNodeL2 = addNode(true, true, true,
803: "feashow.components.autoComponentBuild",
804: "Auto. Component Build", "Automatic Component Build",
805: new AutomaticComponentBuildTreeNode(), childNodeL1);
806:
807: childNodeL2 = addNode(false, true, false,
808: "feashow.components.functest",
809: "Server-Driven Func. Testing",
810: "Server-Driven Functional Testing",
811: new NoCodeTreeNode(), childNodeL1);
812:
813: childNodeL3 = addNode(true, true, true,
814: "feashow.components.functest.usingBrowser",
815: "Functional Testing Using Browser",
816: "Functional Testing Using Browser",
817: new FuncTestUsingBrowserTreeNode(), childNodeL2);
818:
819: childNodeL3 = addNode(true, true, true,
820: "feashow.components.functest.notBrowser",
821: "Func. Testing Not Using Browser",
822: "Func. Testing Not Using Browser",
823: new FuncTestNotBrowserTreeNode(), childNodeL2);
824:
825: childNodeL2 = addNode(true, true, true,
826: "feashow.components.nonAJAXAndComp",
827: "Non-AJAX & Components", "Non-AJAX & Components",
828: new NoCodeTreeNode(), childNodeL1);
829:
830: childNodeL2 = addNode(true, true, true,
831: "feashow.components.nonScriptAndComp",
832: "JavaScript Disabled & Components",
833: "JavaScript Disabled & Components",
834: new NoCodeTreeNode(), childNodeL1);
835:
836: childNodeL2 = addNode(true, true, true,
837: "feashow.components.xmlAndComponents",
838: "XML & Components", "XML & Components",
839: new NoCodeTreeNode(), childNodeL1);
840: }
841:
842: public void registerArtifacts() {
843: ItsNatListStructure customStruc = new CityListCustomStructure();
844: itsNatDoc.registerArtifact("cityCustomStruc", customStruc);
845: }
846: }
|