/src/main/java/com/googlecode/struts2yuiplugin/components/Tab.java

http://struts2yuiplugin.googlecode.com/ · Java · 109 lines · 74 code · 24 blank · 11 comment · 0 complexity · b8893964ab2ee51dec4945e74484a31c MD5 · raw file

  1. package com.googlecode.struts2yuiplugin.components;
  2. import com.opensymphony.xwork2.util.ValueStack;
  3. import javax.servlet.http.HttpServletRequest;
  4. import javax.servlet.http.HttpServletResponse;
  5. import org.apache.struts2.views.annotations.StrutsTag;
  6. import org.apache.struts2.views.annotations.StrutsTagAttribute;
  7. import java.io.Writer;
  8. /**
  9. * The model for a Tab in a YUI TabView
  10. */
  11. @StrutsTag(name = "tab", tldTagClass = "com.googlecode.struts2yuiplugin.views.jsp.ui.TabTag", description = "Renders a Tab in a YUI TabView")
  12. public class Tab extends ClosingYUIBean implements OGNLEvaluator {
  13. private static final String OPEN_TEMPLATE = "yuitab";
  14. private static final String TEMPLATE = OPEN_TEMPLATE +"-close";
  15. private boolean selected;
  16. public Tab(ValueStack valueStack, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
  17. super(valueStack, httpServletRequest, httpServletResponse);
  18. }
  19. @Override
  20. public void evaluateParams() {
  21. super.evaluateParams();
  22. addParameter("selected", selected);
  23. }
  24. public String getDefaultOpenTemplate() {
  25. return OPEN_TEMPLATE;
  26. }
  27. protected String getDefaultTemplate() {
  28. return TEMPLATE;
  29. }
  30. /**
  31. * Evaluates the OGNL expression
  32. *
  33. * @param expr OGNL expression.
  34. * @return the String value found.
  35. */
  36. public String evaluateExpression(String expr) {
  37. return super.findString(expr);
  38. }
  39. @Override
  40. public boolean start(Writer writer) {
  41. return true; // evaluate body
  42. }
  43. /** This component uses the body so it needs to be buffered */
  44. @Override
  45. public boolean usesBody() {
  46. return true;
  47. }
  48. /** There is no template merging and don't write to output */
  49. @Override
  50. public boolean end(Writer writer, String body) {
  51. evaluateParams();
  52. parameters.put("body", body);
  53. popComponentStack();
  54. return false; // don't evaluate body again
  55. }
  56. public String getBody() {
  57. return (String) parameters.get("body");
  58. }
  59. public String getId() {
  60. return (String) parameters.get("id");
  61. }
  62. public String getLabel() {
  63. return (String) parameters.get("label");
  64. }
  65. public boolean isSelected() {
  66. return selected;
  67. }
  68. public String getCssClass() {
  69. return (String) parameters.get("cssClass");
  70. }
  71. @Override
  72. @StrutsTagAttribute(description = "HTML id attribute", required = true, rtexprvalue = true)
  73. public void setId(String id) {
  74. super.setId(id);
  75. }
  76. @Override
  77. @StrutsTagAttribute(description = "Label expression used for rendering a element specific label", required = true)
  78. public void setLabel(String label) {
  79. super.setLabel(label);
  80. }
  81. @StrutsTagAttribute(description = "Identifies a tab that is initially selected", required = false)
  82. public void setSelected(boolean selected) {
  83. this.selected = selected;
  84. }
  85. }