From aedc34d55462a75e329bbf342251ff6504cd117e Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sun, 19 May 2024 17:56:33 -0400 Subject: Initial import from SVN --- .../java/net/wotonomy/web/WOGenericElement.java | 95 ++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WOGenericElement.java (limited to 'projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WOGenericElement.java') diff --git a/projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WOGenericElement.java b/projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WOGenericElement.java new file mode 100644 index 0000000..8894428 --- /dev/null +++ b/projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WOGenericElement.java @@ -0,0 +1,95 @@ +/* + 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 ); + } + +} -- cgit v1.2.3