/* Wotonomy: OpenStep design patterns for pure Java applications. Copyright (C) 2000 Blacksmith, Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, see http://www.gnu.org */ package net.wotonomy.web; import net.wotonomy.foundation.NSArray; import net.wotonomy.foundation.NSDictionary; /** * Used to generate any HTML element dynamically. It only creates the opening * tag without a closing tag. To generate HTML elements that have opening and * closing tags, as well as some content in between, use WOGenericContainer * instead. * * @author michael@mpowers.net * @author $Author: cgruber $ * @version $Revision: 905 $ */ public class WOGenericElement extends WODynamicElement { static NSArray bindings = new NSArray(new Object[] { "elementName", "omitTags", "elementID", "otherTagString", "formValue", "formValues", "invokeAction" }); public WOGenericElement() { super(); } public WOGenericElement(String n, NSDictionary m, WOElement t) { super(n, m, t); } public String elementName(WOContext c) { String x = (String) valueForProperty("elementName", c.component()); if (x != null) return x; return c.elementID(); } public void takeValuesFromRequest(WORequest r, WOContext c) { if (c.elementID().equals(c.senderID())) { Object value; value = r.formValueForKey(c.elementID()); setValueForProperty("formValue", value, c.component()); value = r.formValuesForKey(c.elementID()); setValueForProperty("formValues", value, c.component()); } } public WOActionResults invokeAction(WORequest r, WOContext c) { WOActionResults result = null; String action = stringForProperty("invokeAction", c.component()); if (action != null && c.elementID().equals(c.senderID())) { result = c.component().performAction(action); } return result; } public void appendToResponse(WOResponse r, WOContext c) { WOComponent component = c.component(); if (!booleanForProperty("omitTags", component)) { r.appendContentString("<"); r.appendContentString(elementName(c)); String other = stringForProperty("otherTagString", component); if (other != null) { r.appendContentString(" "); r.appendContentString(other); } String add = additionalHTMLProperties(component, bindings); if (add.length() > 0) r.appendContentString(add); r.appendContentString(">"); } setValueForProperty("elementID", c.elementID(), component); } }