diff options
| author | Benjamin Culkin <scorpress@gmail.com> | 2024-05-19 17:56:33 -0400 |
|---|---|---|
| committer | Benjamin Culkin <scorpress@gmail.com> | 2024-05-19 17:56:33 -0400 |
| commit | aedc34d55462a75e329bbf342251ff6504cd117e (patch) | |
| tree | bcc8f1f2352582717b484df302aeea6696b8f000 /projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WOSwitchComponent.java | |
Initial import from SVN
Diffstat (limited to 'projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WOSwitchComponent.java')
| -rw-r--r-- | projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WOSwitchComponent.java | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WOSwitchComponent.java b/projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WOSwitchComponent.java new file mode 100644 index 0000000..d2e373a --- /dev/null +++ b/projects/net.wotonomy.web/src/main/java/net/wotonomy/web/WOSwitchComponent.java @@ -0,0 +1,112 @@ +/* + 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.NSDictionary; +import net.wotonomy.foundation.NSMutableDictionary; + +public class WOSwitchComponent extends WODynamicElement { + + private NSMutableDictionary elements; + private String currentName; + private WOElement currentElement; + + protected WOSwitchComponent() + { + super(); + elements = new NSMutableDictionary(); + } + + public WOSwitchComponent(String aName, NSDictionary aMap, WOElement template) + { + super(aName, aMap, template); + elements = new NSMutableDictionary(); + } + + private WOElement getCurrentElement( WOContext c ) + { + String name = stringForProperty( "WOComponentName", c.component() ); + if ( name == null ) return null; + + if ( currentElement != null && name.equals( currentName ) ) return currentElement; + + currentName = name; + currentElement = (WOElement) elements.objectForKey( name ); + if ( currentElement == null ) + { + currentElement = WOApplication.application().pageWithName( name, c ); + if ( currentElement != null ) + { + currentElement.associations = associations; + elements.setObjectForKey( currentElement, name ); + } + } + + return currentElement; + } + + void ensureAwakeInContext (WOContext aContext) + { + if ( aContext != null ) + { + WOElement element = getCurrentElement( aContext ); + if ( element != null ) + { + aContext.pushElement( element ); + element.ensureAwakeInContext( aContext ); + aContext.popElement(); + } + } + } + + public void takeValuesFromRequest(WORequest r, WOContext c) + { + WOElement element = getCurrentElement( c ); + if ( element != null ) + { + c.pushElement( element ); + element.takeValuesFromRequest( r, c ); + c.popElement(); + } + } + + public WOActionResults invokeAction(WORequest r, WOContext c) + { + WOActionResults result = null; + WOElement element = getCurrentElement( c ); + if ( element != null ) + { + c.pushElement( element ); + result = element.invokeAction( r, c ); + c.popElement(); + } + return result; + } + + public void appendToResponse(WOResponse r, WOContext c) + { + WOElement element = getCurrentElement( c ); + if ( element != null ) + { + c.pushElement( element ); + element.appendToResponse( r, c ); + c.popElement(); + } + } +} |
