001: /*
002: * JFolder, Copyright 2001-2006 Gary Steinmetz
003: *
004: * Distributable under LGPL license.
005: * See terms of license at gnu.org.
006: */
007:
008: package org.jfolder.web.page.v1;
009:
010: //base classes
011: import java.util.HashMap;
012:
013: //project specific classes
014: import org.jfolder.common.StandardDataTypes;
015: import org.jfolder.common.function.BaseWebPageTag;
016: import org.jfolder.common.function.WebPageTagInstanceViewContext;
017: import org.jfolder.common.function.WebPageTagInstanceViewContextInfo;
018: import org.jfolder.common.function.WebPageTagInstanceViewContextSubHtmlInfo;
019: import org.jfolder.common.tagging.AppraiseConceptTagContext;
020: import org.jfolder.common.tagging.ConceptTagCharacteristic;
021: import org.jfolder.common.tagging.ConceptTagConstraint;
022: import org.jfolder.common.tagging.ConceptTagConstraintHolder;
023: import org.jfolder.common.tagging.ConceptTagFlagsHelper;
024: import org.jfolder.common.tagging.DetermineClassConceptTagContext;
025: import org.jfolder.common.tagging.DetermineValueAndClassConceptTagContext;
026: import org.jfolder.common.tagging.DetermineValueAndClassConceptTagException;
027: import org.jfolder.common.tagging.DynamicConceptTagConstraintContext;
028: import org.jfolder.common.tagging.InitializeConceptTagContext;
029: import org.jfolder.common.tagging.SelectionCriteriaForReturnableConceptTag;
030: import org.jfolder.common.tagging.StaticConceptTagConstraintContext;
031: import org.jfolder.common.tagging.StudioConceptTagCreParInfoContext;
032: import org.jfolder.common.tagging.StudioConceptTagInstanceInfoContext;
033: import org.jfolder.common.tagging.StudioConceptTagTypeInfoContext;
034: import org.jfolder.common.tagging.ValueAndClassForConceptTag;
035: import org.jfolder.common.utils.xml.XMLHelper;
036:
037: //other classes
038:
039: public class SimpleWebPageWebPageTag extends BaseWebPageTag {
040:
041: //characteristics
042: private ConceptTagCharacteristic titleCtchar = null;
043: private ConceptTagCharacteristic contentCtchar = null;
044:
045: //title details
046: public final static String TITLE_CTCON = "title";
047: private final static String TITLE_TITLE = "Title";
048: private final static String TITLE_SHORT_DESCRIPTION = "Title";
049:
050: //content details
051: public final static String CONTENT_CTCON = "content";
052: private final static String CONTENT_TITLE = "Content";
053: private final static String CONTENT_SHORT_DESCRIPTION = "Content";
054:
055: public void initialize(InitializeConceptTagContext inIctc) {
056:
057: //
058: ConceptTagConstraintHolder rootCtconh = ConceptTagConstraintHolder
059: .newInstance(inIctc);
060:
061: //
062: //constrain "title"
063: ConceptTagConstraint titleCtcon = ConceptTagConstraint
064: .newInstance(TITLE_CTCON, rootCtconh);
065: titleCtcon.setTitle(TITLE_TITLE);
066: titleCtcon.setShortDescription(TITLE_SHORT_DESCRIPTION);
067: //
068: DynamicConceptTagConstraintContext titleDctcc = DynamicConceptTagConstraintContext
069: .newInstance(titleCtcon);
070: titleDctcc.getValidator().filterDirectChildOfRoot();
071: //operandDctcc.getValidator().allowReturnOfOnlyString();
072: //
073: StaticConceptTagConstraintContext titleSctcc = StaticConceptTagConstraintContext
074: .newInstance(titleCtcon);
075: //
076: //constrain "content"
077: ConceptTagConstraint contentCtcon = ConceptTagConstraint
078: .newInstance(CONTENT_CTCON, rootCtconh);
079: contentCtcon.setTitle(CONTENT_TITLE);
080: contentCtcon.setShortDescription(CONTENT_SHORT_DESCRIPTION);
081: contentCtcon.setDisplayAsBranch(false);
082: contentCtcon.setMergeAdjacentTextNodes(true);
083: //
084: DynamicConceptTagConstraintContext contentDctcc = DynamicConceptTagConstraintContext
085: .newInstance(contentCtcon);
086: contentDctcc.getValidator().filterDirectChildOfRoot();
087: //operandDctcc.getValidator().allowReturnOfOnlyString();
088: //
089: StaticConceptTagConstraintContext contentSctcc = StaticConceptTagConstraintContext
090: .newInstance(contentCtcon);
091: //MultiStaticOrDynamicConceptTagConstraint unconstrainedCtcon =
092: // cti.getDefaultUnconstrainedConceptTagConstraint();
093: //Class unconstrainedClasses[] = new Class[1];
094: //unconstrainedClasses[0] = XhtmlAWebTag.class;
095: //unconstrained[1] = XhtmlBodyWebTag.class;
096: //unconstrainedCtcon.setClassRestrictions(unconstrainedClasses);
097: //unconstrainedCtcon.setMaximumLength(2);
098: //unconstrainedCtcon.setReturnClassRestrictions(String.class);
099: //CommonV1WebPageTagHelper.styleBackground(rootCtconh);
100: //CommonV1WebPageTagHelper.styleFont(rootCtconh);
101: //CommonV1WebPageTagHelper.styleBorder(rootCtconh);
102: //
103: //CommonV1WebPageTagHelper.prepUndefConForGenUse(rootCtconh);
104:
105: inIctc.initialize();
106:
107: //
108: this .titleCtchar = titleCtcon.getCharacteristic();
109: this .contentCtchar = contentCtcon.getCharacteristic();
110: }
111:
112: public void appraise(AppraiseConceptTagContext inActc) {
113:
114: if (inActc instanceof StudioConceptTagInstanceInfoContext) {
115:
116: StudioConceptTagInstanceInfoContext sctiic = (StudioConceptTagInstanceInfoContext) inActc;
117:
118: sctiic.setInstanceTitle("Web Page");
119: sctiic.setInstanceDescription("Web Page");
120: //
121: ConceptTagCharacteristic formatCtchar[] = new ConceptTagCharacteristic[] { this .contentCtchar };
122: ConceptTagFlagsHelper.setWebPageFormatCtchars(sctiic,
123: formatCtchar);
124: } else if (inActc instanceof StudioConceptTagTypeInfoContext) {
125:
126: StudioConceptTagTypeInfoContext scttic = (StudioConceptTagTypeInfoContext) inActc;
127:
128: scttic.setTypeTitle("Web Page");
129: scttic.setTypeDescription("Web Page");
130: } else if (inActc instanceof WebPageTagInstanceViewContext) {
131:
132: WebPageTagInstanceViewContext wptivc = (WebPageTagInstanceViewContext) inActc;
133:
134: //
135: WebPageTagInstanceViewContextInfo info = wptivc
136: .getInfoAsHtml();
137: //
138: //
139: //
140: //
141: WebPageTagInstanceViewContextInfo metaInfo = info
142: .createEarmarkInfo();
143: //
144: metaInfo.createSubNonHtmlInfo(wptivc, this .titleCtchar,
145: "Title - ");
146: //
147: //
148: //
149: HashMap attrs = new HashMap();
150: //
151: attrs.put("cellspacing", "5px");
152: attrs.put("cellpadding", "5px");
153: //
154: //info.declareMouseOutBorderAsBlack();
155: //info.declareMouseOutBorderAsTwoPixel();
156: //info.declareMouseOutBorderAsDashed();
157: //
158: info
159: .setHtmlContent(WebPageTagInstanceViewContextSubHtmlInfo
160: .newInstance("table", attrs));
161: //
162: WebPageTagInstanceViewContextInfo subInfo = info
163: .createHtmlInfo();
164: //if (this.contentCtchar.getValueLength() > 0) {
165: subInfo.setHtmlContent("<tr><td>", "</td></tr>", true);
166: //}
167: //else {
168: // subInfo.setHtmlContent(
169: // "<tr><td>Blank Web Page", "</td></tr>", true);
170: //}
171: //
172: WebPageTagInstanceViewContext.displayView(
173: this .contentCtchar, subInfo, wptivc,
174: "Blank Web Page");
175: //
176: //
177: //
178: //
179: /*
180: HashMap attrs = new HashMap();
181: //
182: //attrs.put("width", "100%");
183: //
184: WebPageTagInstanceViewContextInfo.getMousePointerActions(attrs);
185: //
186: //
187: WebPageTagInstanceViewContextInfo titleInfo =
188: info.createHtmlInfo();
189: //
190: titleInfo.setHtmlContent(
191: WebPageTagInstanceViewContextSubHtmlInfo.newInstance(
192: "table", attrs));
193: // "<table " + XMLHelper.convertAttrs(attrs) + " onclick=\"",
194: // "\">");
195: //
196: WebPageTagInstanceViewContextInfo titleSubInfo =
197: titleInfo.createHtmlInfo();
198: //
199: //
200: titleSubInfo.setHtmlContent(
201: "<tr align=\"center\"><td align=\"center\">Title - ",
202: "</td></tr>", true);
203: //
204: //titleInfo.setStartContent(
205: // "<table width=\"100%\"><tr align=\"center\">"
206: // + "<td align=\"center\">Title - ");
207: WebPageTagInstanceViewContext.displayView(
208: this.titleCtchar, titleSubInfo, wptivc);
209: //
210: //
211: //titleSubInfo.setEndContent("</td></tr>");
212: //
213: //titleInfo.setEndContent("</table><hr/><br/>");
214: WebPageTagInstanceViewContextInfo midInfo =
215: info.createHtmlInfo();
216: midInfo.setHtmlContent("<hr/><br/>", true);
217: //
218: //
219: //
220: WebPageTagInstanceViewContext.displayView(
221: this.contentCtchar, info, wptivc);
222: */
223: } else if (inActc instanceof SelectionCriteriaForReturnableConceptTag) {
224:
225: SelectionCriteriaForReturnableConceptTag scfrct = (SelectionCriteriaForReturnableConceptTag) inActc;
226:
227: scfrct.canReturnNothing();
228: scfrct.declareFormatAsHtml();
229: //ConceptTagFlagsHelper.setConceptTagAsUndeployable(scfrct);
230: ConceptTagFlagsHelper.assertCanBeDirectChildOfRoot(scfrct);
231: ConceptTagFlagsHelper.registerAsHtmlConceptTag(scfrct);
232: } else if (inActc instanceof StudioConceptTagCreParInfoContext) {
233:
234: StudioConceptTagCreParInfoContext scpc = (StudioConceptTagCreParInfoContext) inActc;
235: }
236: }
237:
238: public void determineValueAndClass(
239: DetermineValueAndClassConceptTagContext inDvacctc) {
240:
241: //throw UnexpectedSystemException.unknownState();
242: try {
243:
244: //
245: ConceptTagFlagsHelper.addVacToParDetVacRes(inDvacctc,
246: ValueAndClassForConceptTag
247: .newHtml("<html><head><title>"));
248: //
249: this .titleCtchar.processIterativeStructure(inDvacctc);
250: //
251: ConceptTagFlagsHelper.addVacToParDetVacRes(inDvacctc,
252: ValueAndClassForConceptTag
253: .newHtml("</title></head><body>"));
254: //
255: this .contentCtchar.processIterativeStructure(inDvacctc);
256: //
257: ConceptTagFlagsHelper.addVacToParDetVacRes(inDvacctc,
258: ValueAndClassForConceptTag
259: .newHtml("</body></html>"));
260: //
261: inDvacctc
262: .setDetermineValueAndClass(ValueAndClassForConceptTag
263: .newNothing());
264: } catch (DetermineValueAndClassConceptTagException dvaccte) {
265: inDvacctc.setDetermineException(dvaccte);
266: }
267: }
268:
269: public void determineClass(DetermineClassConceptTagContext inDcctc) {
270:
271: inDcctc.setDetermineClass(StandardDataTypes.getNothingClass());
272: }
273: }
|