/sitebricks/src/main/java/com/google/sitebricks/rendering/control/HeaderWidget.java

http://github.com/dhanji/sitebricks · Java · 46 lines · 31 code · 11 blank · 4 comment · 0 complexity · cab3905eea475fee8d081139b35f19b9 MD5 · raw file

  1. package com.google.sitebricks.rendering.control;
  2. import com.google.sitebricks.Renderable;
  3. import com.google.sitebricks.Respond;
  4. import com.google.sitebricks.compiler.EvaluatorCompiler;
  5. import com.google.sitebricks.compiler.ExpressionCompileException;
  6. import com.google.sitebricks.compiler.Token;
  7. import com.google.sitebricks.rendering.SelfRendering;
  8. import java.util.List;
  9. import java.util.Map;
  10. import java.util.Set;
  11. /**
  12. * @author Dhanji R. Prasanna (dhanji@gmail.com)
  13. */
  14. @SelfRendering
  15. class HeaderWidget implements Renderable {
  16. private final WidgetChain widgetChain;
  17. private Map<String, List<Token>> attribs;
  18. public HeaderWidget(WidgetChain widgetChain, Map<String, String> attribs,
  19. EvaluatorCompiler compiler) throws ExpressionCompileException {
  20. this.widgetChain = widgetChain;
  21. this.attribs = XmlWidget.compile(attribs, compiler);
  22. }
  23. public void render(Object bound, Respond respond) {
  24. XmlWidget.writeOpenTag(bound, respond, "head", attribs);
  25. respond.write('>');
  26. //render children (as necessary)
  27. widgetChain.render(bound, respond);
  28. respond.withHtml()
  29. .headerPlaceholder(); //TODO replace placeholder with an index?
  30. respond.write("</head>");
  31. }
  32. public <T extends Renderable> Set<T> collect(Class<T> clazz) {
  33. return widgetChain.collect(clazz);
  34. }
  35. }