package com.google.sitebricks.rendering.control; import com.google.sitebricks.Evaluator; import com.google.sitebricks.Renderable; import com.google.sitebricks.Respond; import com.google.sitebricks.rendering.EmbedAs; import net.jcip.annotations.Immutable; import java.util.Set; /** * @author Dhanji R. Prasanna (dhanji@gmail.com) */ @Immutable @EmbedAs("ShowIf") class ShowIfWidget implements Renderable { private final WidgetChain widgetChain; private final String expression; private final Evaluator evaluator; public ShowIfWidget(WidgetChain widgetChain, String expression, Evaluator evaluator) { this.widgetChain = widgetChain; this.expression = expression; this.evaluator = evaluator; } public void render(Object bound, Respond respond) { //messy =( final Object o = evaluator.evaluate(expression, bound); if ((Boolean) o) widgetChain.render(bound, respond); } public <T extends Renderable> Set<T> collect(Class<T> clazz) { return widgetChain.collect(clazz); } }