/* 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; /** * WOConditional renders whatever is inside its opening and closing tags * only if a condition is met. * Bindings are: * * * @author ezamudio@nasoft.com * @author $Author: cgruber $ * @version $Revision: 893 $ */ public class WOConditional extends WODynamicElement { public boolean condition; public boolean negate; protected WOConditional() { super(); } public WOConditional(String aName, NSDictionary aMap, WOElement template) { super(aName, aMap, template); } public void setCondition(boolean value) { condition = value; } public boolean condition() { return condition; } public void setNegate(boolean value) { negate = value; } public boolean negate() { return negate; } protected void pullValuesFromParent(WOComponent c) { condition = booleanForProperty("condition", c); negate = booleanForProperty("negate", c); } public void takeValuesFromRequest(WORequest aRequest, WOContext aContext) { if (rootElement == null) return; pullValuesFromParent(aContext.component()); if ((condition && !negate) || (!condition && negate)) { rootElement.takeValuesFromRequest(aRequest, aContext); } } public WOActionResults invokeAction(WORequest aRequest, WOContext aContext) { if (rootElement == null) return null; pullValuesFromParent(aContext.component()); WOActionResults el = null; if ((condition && !negate) || (!condition && negate)) { el = rootElement.invokeAction(aRequest, aContext); } return el; } public void appendToResponse(WOResponse aResponse, WOContext aContext) { if (rootElement == null) return; pullValuesFromParent(aContext.component()); if ((condition && !negate) || (!condition && negate)) { rootElement.appendToResponse(aResponse, aContext); } } }