001: package org.gridsphere.provider.portletui.tags;
002:
003: import org.gridsphere.portlet.impl.SportletProperties;
004: import org.gridsphere.provider.portletui.beans.ParamBean;
005: import org.gridsphere.provider.portletui.beans.RenderSubmitBean;
006:
007: import javax.servlet.jsp.JspException;
008: import javax.servlet.jsp.JspWriter;
009:
010: /**
011: * An <code>RenderSubmitTag</code> provides a button element that includes a <code>DefaultPortletAction</code> and may
012: * also include nested <code>ActionParamTag</code>s
013: */
014: public class RenderSubmitTag extends ActionTag {
015:
016: protected RenderSubmitBean renderSubmitBean = null;
017:
018: public int doStartTag() throws JspException {
019: if (!beanId.equals("")) {
020: renderSubmitBean = (RenderSubmitBean) getTagBean();
021: if (renderSubmitBean == null) {
022: renderSubmitBean = new RenderSubmitBean(beanId);
023: } else {
024: if (renderSubmitBean.getAction() != null) {
025: action = renderSubmitBean.getAction();
026: }
027: if (renderSubmitBean.getValue() != null) {
028: value = renderSubmitBean.getValue();
029: }
030: if (renderSubmitBean.getKey() != null) {
031: key = renderSubmitBean.getKey();
032: }
033: if (renderSubmitBean.getParamBeanList() != null) {
034: paramBeans = renderSubmitBean.getParamBeanList();
035: }
036: if (renderSubmitBean.getOnClick() != null) {
037: onClick = renderSubmitBean.getOnClick();
038: }
039: }
040: } else {
041: renderSubmitBean = new RenderSubmitBean();
042: }
043:
044: if (onClick != null) {
045: renderSubmitBean
046: .setOnClick("this.form.action=this.form.action.replace('/a/','/r/');"
047: + onClick);
048: } else {
049: renderSubmitBean
050: .setOnClick("this.form.action=this.form.action.replace('/a/','/r/')");
051: }
052:
053: renderSubmitBean.setName(createActionURI());
054: renderSubmitBean.setUseAjax(useAjax);
055:
056: if (anchor != null)
057: renderSubmitBean.setAnchor(anchor);
058:
059: if (key != null) {
060: renderSubmitBean.setKey(key);
061: value = getLocalizedText(key);
062: }
063:
064: if (!beanId.equals("")) {
065: this .updateBaseComponentBean(renderSubmitBean);
066: } else {
067: this .setBaseComponentBean(renderSubmitBean);
068: }
069:
070: if (action != null)
071: renderSubmitBean.setAction(action);
072:
073: if (cssStyle != null) {
074: renderSubmitBean.setCssStyle(cssStyle);
075: }
076: if (cssClass != null) {
077: renderSubmitBean.setCssClass(cssClass);
078: }
079:
080: Object parentTag = getParent();
081: if (parentTag instanceof ContainerTag) {
082: ContainerTag containerTag = (ContainerTag) parentTag;
083: containerTag.addTagBean(renderSubmitBean);
084: }
085: return EVAL_BODY_INCLUDE;
086: }
087:
088: public int doEndTag() throws JspException {
089:
090: for (ParamBean paramBean : paramBeans) {
091: ParamBean pbean = (ParamBean) paramBean;
092: portletPhase
093: .addParameter(pbean.getName(), pbean.getValue());
094: }
095:
096: String actionURI = createActionURI().toString();
097: renderSubmitBean.setName(actionURI);
098:
099: if (portletPhase != null)
100: renderSubmitBean.setAction(portletPhase.toString());
101:
102: if (pageContext.getRequest().getAttribute(
103: SportletProperties.USE_AJAX) != null) {
104: String paction = ((!action.equals("")) ? "&"
105: + portletPhase.toString() : "");
106: String portlet = (String) pageContext.getRequest()
107: .getAttribute(SportletProperties.PORTLET_NAME);
108: String compname = (String) pageContext.getRequest()
109: .getAttribute(SportletProperties.COMPONENT_NAME);
110: renderSubmitBean.setUseAjax(true);
111: renderSubmitBean
112: .setOnClick("GridSphereAjaxHandler2.startRequest('"
113: + portlet + "', '" + compname + "', '"
114: + paction + "');");
115: }
116:
117: if (useAjax) {
118: String cid = (String) pageContext.getRequest()
119: .getAttribute(SportletProperties.COMPONENT_ID);
120: String paction = ((!action.equals("")) ? "&"
121: + portletPhase.toString() : "");
122: renderSubmitBean
123: .setOnClick("GridSphereAjaxHandler.startRequest('"
124: + cid + "', '" + paction + "');");
125: }
126:
127: if ((bodyContent != null) && (value == null)) {
128: renderSubmitBean.setValue(bodyContent.getString());
129: }
130:
131: try {
132: JspWriter out = pageContext.getOut();
133: out.print(renderSubmitBean.toEndString());
134: } catch (Exception e) {
135: throw new JspException(e);
136: }
137:
138: return EVAL_PAGE;
139: }
140:
141: public void release() {
142: super.release();
143: renderSubmitBean = null;
144: }
145:
146: }
|