/* 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 ); } }