Package org.beangle.struts2.view

Source Code of org.beangle.struts2.view.BeangleTagLibrary

/* Copyright c 2005-2012.
* Licensed under GNU  LESSER General Public License, Version 3.
* http://www.gnu.org/licenses
*/
package org.beangle.struts2.view;

import static org.apache.struts2.util.TextProviderHelper.getText;

import java.io.IOException;
import java.io.StringWriter;
import java.util.Collections;
import java.util.Enumeration;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang.StringEscapeUtils;
import org.beangle.commons.collection.CollectUtils;
import org.beangle.commons.collection.page.Page;
import org.beangle.struts2.view.component.ActionUrlRender;
import org.beangle.struts2.view.component.Anchor;
import org.beangle.struts2.view.component.Checkbox;
import org.beangle.struts2.view.component.Checkboxes;
import org.beangle.struts2.view.component.Component;
import org.beangle.struts2.view.component.Css;
import org.beangle.struts2.view.component.Date;
import org.beangle.struts2.view.component.Dialog;
import org.beangle.struts2.view.component.Div;
import org.beangle.struts2.view.component.Email;
import org.beangle.struts2.view.component.Field;
import org.beangle.struts2.view.component.Foot;
import org.beangle.struts2.view.component.Form;
import org.beangle.struts2.view.component.Formfoot;
import org.beangle.struts2.view.component.Grid;
import org.beangle.struts2.view.component.Head;
import org.beangle.struts2.view.component.Iframe;
import org.beangle.struts2.view.component.Messages;
import org.beangle.struts2.view.component.Module;
import org.beangle.struts2.view.component.Navitem;
import org.beangle.struts2.view.component.Navmenu;
import org.beangle.struts2.view.component.Pagebar;
import org.beangle.struts2.view.component.Password;
import org.beangle.struts2.view.component.Radio;
import org.beangle.struts2.view.component.Radios;
import org.beangle.struts2.view.component.RedirectParams;
import org.beangle.struts2.view.component.Reset;
import org.beangle.struts2.view.component.Select;
import org.beangle.struts2.view.component.Select2;
import org.beangle.struts2.view.component.Startend;
import org.beangle.struts2.view.component.Submit;
import org.beangle.struts2.view.component.Tab;
import org.beangle.struts2.view.component.Tabs;
import org.beangle.struts2.view.component.Textarea;
import org.beangle.struts2.view.component.Textfield;
import org.beangle.struts2.view.component.Textfields;
import org.beangle.struts2.view.component.Toolbar;
import org.beangle.struts2.view.template.Theme;

import com.opensymphony.xwork2.inject.Inject;
import com.opensymphony.xwork2.util.ValueStack;

public class BeangleTagLibrary extends AbstractTagLibrary {

  private ActionUrlRender render;

  public BeangleTagLibrary() {
    super();
  }

  public BeangleTagLibrary(ValueStack stack, HttpServletRequest req, HttpServletResponse res) {
    super(stack, req, res);
    theme.setUi(getUitheme());
    theme.setUibase(req.getContextPath());
    this.stack.getContext().put(Theme.THEME, theme);
  }

  public Object getFreemarkerModels(ValueStack stack, HttpServletRequest req, HttpServletResponse res) {
    BeangleTagLibrary models = new BeangleTagLibrary(stack, req, res);
    models.render = this.render;
    return models;
  }

  protected String getUitheme() {
    String uitheme = req.getParameter("ui.theme");
    if (null == uitheme) {
      HttpSession session = req.getSession(false);
      if (null != session && null != session.getAttribute("ui.theme")) {
        uitheme = (String) session.getAttribute("ui.theme");
      }
    }
    if (null == uitheme) {
      uitheme = "default";
    }
    return uitheme;
  }

  @Inject
  public void setRender(ActionUrlRender render) {
    this.render = render;
  }

  public String url(String url) {
    return render.render(req.getRequestURI(), url);
  }

  public java.util.Date getNow() {
    return new java.util.Date();
  }

  /**
   * query string and form control
   *
   * @return
   */
  public String getParamstring() {
    StringWriter sw = new StringWriter();
    Enumeration<?> em = req.getParameterNames();
    while (em.hasMoreElements()) {
      String attr = (String) em.nextElement();
      String value = req.getParameter(attr);
      if (attr.equals("x-requested-with")) {
        continue;
      }
      sw.write(attr);
      sw.write('=');
      try {
        StringEscapeUtils.escapeJavaScript(sw, value);
      } catch (IOException e) {
        e.printStackTrace();
      }
      if (em.hasMoreElements()) {
        sw.write('&');
      }
    }
    return sw.toString();
  }

  public boolean isPage(Object data) {
    return data instanceof Page<?>;
  }

  public String text(String name) {
    return getText(name, name, Collections.emptyList(), stack, false);
  }

  public String text(String name, Object arg0) {
    return getText(name, name, Collections.singletonList(arg0), stack, false);
  }

  public String text(String name, Object arg0, Object arg1) {
    return getText(name, name, CollectUtils.newArrayList(arg0, arg1), stack, false);
  }

  public TagModel getHead() {
    return get(Head.class);
  }

  public TagModel getDialog() {
    return get(Dialog.class);
  }

  public TagModel getCss() {
    return get(Css.class);
  }

  public TagModel getIframe() {
    return get(Iframe.class);
  }

  public TagModel getFoot() {
    return get(Foot.class);
  }

  public TagModel getForm() {
    return get(Form.class);
  }

  public TagModel getFormfoot() {
    return get(Formfoot.class);
  }

  public TagModel getSubmit() {
    return get(Submit.class);
  }

  public TagModel getReset() {
    return get(Reset.class);
  }

  public TagModel getToolbar() {
    return get(Toolbar.class);
  }

  public TagModel getTabs() {
    return get(Tabs.class);
  }

  public TagModel getTab() {
    return get(Tab.class);
  }

  public TagModel getGrid() {
    return get(Grid.class);
  }

  public TagModel getGridbar() {
    return get(Grid.Bar.class);
  }

  public TagModel getGridfilter() {
    return get(Grid.Filter.class);
  }

  public TagModel getRow() {
    return get(Grid.Row.class);
  }

  public TagModel getCol() {
    TagModel model = models.get(Grid.Col.class);
    if (null == model) {
      // just for performance
      model = new TagModel(stack) {
        @Override
        protected Component getBean() {
          return new Grid.Col(stack);
        }
      };
      models.put(Grid.Col.class, model);
    }
    return model;
  }

  public TagModel getBoxcol() {
    return get(Grid.Boxcol.class);
  }

  public TagModel getPagebar() {
    return get(Pagebar.class);
  }

  public TagModel getPassword() {
    return get(Password.class);
  }

  public TagModel getA() {
    TagModel model = models.get(Anchor.class);
    if (null == model) {
      model = new TagModel(stack) {
        protected Component getBean() {
          return new Anchor(stack);
        }
      };
      models.put(Anchor.class, model);
    }
    return model;
  }

  public TagModel getRedirectParams() {
    return get(RedirectParams.class);
  }

  public TagModel getMessages() {
    return get(Messages.class);
  }

  public TagModel getTextfield() {
    return get(Textfield.class);
  }

  public TagModel getEmail() {
    return get(Email.class);
  }

  public TagModel getTextarea() {
    return get(Textarea.class);
  }

  public TagModel getField() {
    return get(Field.class);
  }

  public TagModel getTextfields() {
    return get(Textfields.class);
  }

  public TagModel getDatepicker() {
    return get(Date.class);
  }

  public TagModel getDiv() {
    return get(Div.class);
  }

  public TagModel getSelect() {
    return get(Select.class);
  }

  public TagModel getSelect2() {
    return get(Select2.class);
  }

  public TagModel getModule() {
    return get(Module.class);
  }

  public TagModel getNavmenu() {
    return get(Navmenu.class);
  }

  public TagModel getNavitem() {
    return get(Navitem.class);
  }

  public TagModel getRadio() {
    return get(Radio.class);
  }

  public TagModel getRadios() {
    return get(Radios.class);
  }

  public TagModel getStartend() {
    return get(Startend.class);
  }
 
  public TagModel getCheckbox(){
    return get(Checkbox.class);
  }
 
  public TagModel getCheckboxes(){
    return get(Checkboxes.class);
  }
}
TOP

Related Classes of org.beangle.struts2.view.BeangleTagLibrary

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.