package pl.zgora.uz.wmie.fe.gui.common.tag;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
import pl.zgora.uz.wmie.fe.gui.common.bean.ButtonBean;
import pl.zgora.uz.wmie.fe.gui.common.bean.ColumnBean;
import pl.zgora.uz.wmie.fe.gui.common.bean.FilterBean;
import pl.zgora.uz.wmie.fe.gui.common.statics.StaticFIelds;
import pl.zgora.uz.wmie.fe.gui.common.util.ColumnLabelsUtil;
import pl.zgora.uz.wmie.fe.gui.common.util.MessageUtil;
import pl.zgora.uz.wmie.fe.sps.business.util.ValidatorUtil;
public class Table implements Tag {
private PageContext pageContext;
private Tag parent;
private String id;
private List<FilterBean> filters = new ArrayList<FilterBean>();
private String filtersArrayJS = "";
private String tableAjaxActionClass;
private String tableAjaxActionMethod;
private String defaultColumnSortDir;
private String defaultColumnSort;
private String buttons;
private String title;
private List<ButtonBean> buttonList = new ArrayList<ButtonBean>();
private List<ColumnBean> columnList = new ArrayList<ColumnBean>();
int i = 0;
public Table() {
super();
}
public int doStartTag() throws JspException {
System.out.println("pocztek");
this.filters.clear();
this.buttonList.clear();
this.columnList.clear();
return EVAL_BODY_INCLUDE;
}
public int doEndTag() throws JspException {
String findClickAction = "";
ColumnLabelsUtil label = new ColumnLabelsUtil();
String labelText = "";
String findClickActionSort = "";
Locale lokalizacja = pageContext.getRequest().getLocale();
String path=null;
path=pageContext.getServletContext().getContextPath().substring(0,pageContext.getServletContext().getContextPath().indexOf("/",1));
try {
Writer out = pageContext.getOut();
out.write("<div id=\"" + id
+ "ContentField\" class=\"tableContentField\">");
out.write("<input type=\"hidden\" id=\"" + this.id
+ "Sort\" value=\"" + this.defaultColumnSort + "\"> "
+ "<input type=\"hidden\" id=\"" + this.id
+ "SortDir\" value=\"" + this.defaultColumnSortDir + "\">");
out.write("<div id=\"" + id
+ "FilterField\" class=\"tableFilterField\">");
for (FilterBean element : filters) {
String filerHtml = element.getBody().replace(element.getName(),
element.getName() + id);
String filterId = element.getName() + id;
out.write(filerHtml);
if (!"".equals(filtersArrayJS)) {
filtersArrayJS = filtersArrayJS + ",'" + filterId + "'";
} else {
filtersArrayJS = "'" + filterId + "'";
}
}
String projections = "";
for (ColumnBean columnBean : columnList) {
if (!ValidatorUtil.isBlankOrNull(projections)) {
projections += ",";
}
projections = projections + "'" + columnBean.getColumn() + "'";
}
findClickAction = "\"tableRefresh('" + id + "',new Array("
+ filtersArrayJS + "),new Array(" + projections + "), "
+ tableAjaxActionClass + "." + tableAjaxActionMethod
+ ")\"";
out.write("<button id=\"" + id + "FindButton\" onclick="
+ findClickAction + ">znajdz</button>");
out.write("</div>");
String filterParameter = "div#" + id + "ContentField div#" + id
+ "FilterField";
out.write("<table id=\"" + id
+ "\" border=\"1\" class=\"standardTable\">");
if (title != null) {
out.write("<caption onclick=\"switchFilter('" + filterParameter
+ "')\">" + title);
out.write("<button class=\"filterTableButton\"></button>");
out.write("</caption>");
}
out.write("<tr>");
for (ColumnBean columnBean : columnList) {
// wyswietla label jesli nie ma w tablicy wartosci
// odpowiadajacych
// parametrom. Mozna zmodyfikowac, do wyswietlania komunikatu.
// if (columnBean.getLabel() == null) {
// labelText = label.getLabelByName(columnBean.getColumn(),
// columnBean.getSource());
// } else {
// labelText = (columnBean.getLabel());
// }
labelText = MessageUtil.getMessage(columnBean.getLabel(),lokalizacja);
if (StaticFIelds.NO.equals(columnBean.getVisible())) {
out.write("<th class=\"hideTableColumn\">"
+ columnBean.getLabel() + "</th>");
} else {
// OBSLUGA SORTOWANIA
if (StaticFIelds.NO.equals(columnBean.getSort())
|| columnBean.getSort() == null) {
out.write("<th style=\"width:" + columnBean.getWidth()
+ "\">");
out.write(labelText);
out.write("</th>");
} else {
findClickActionSort = "tableRefresh('" + id
+ "',new Array(" + filtersArrayJS
+ "),new Array(" + projections + "),"
+ tableAjaxActionClass + "."
+ tableAjaxActionMethod + ")";
out.write("<th onclick=\"sortBy('"
+ columnBean.getColumn() + "','" + this.id + ""
+ "')," + findClickActionSort
+ "\" style=\"cursor:pointer; width:"
+ columnBean.getWidth() + "\">");
out.write(labelText);
String dnSortIconClass = null;
if (this.defaultColumnSort != null
&& this.defaultColumnSortDir == "desc"
&& this.defaultColumnSort == columnBean
.getColumn()) {
dnSortIconClass = "sortIconVisible";
} else {
dnSortIconClass = "sortIconHide";
}
out.write("<div class=\"" + dnSortIconClass
+ "\" id=\"dn" + this.id
+ columnBean.getColumn() + "\">");
out
.write("<img src=\""+path+"/pages/include/sort_dn.gif\" />");
out.write("</div>");
String upSortIconClass = null;
if ((this.defaultColumnSort != null
&& this.defaultColumnSortDir == "asc" && this.defaultColumnSort == columnBean
.getColumn())
|| (this.defaultColumnSort != null
&& this.defaultColumnSortDir == null && this.defaultColumnSort == columnBean
.getColumn())) {
upSortIconClass = "sortIconVisible";
} else {
upSortIconClass = "sortIconHide";
}
out.write("<div class=\"" + upSortIconClass
+ "\" id=\"up" + this.id
+ columnBean.getColumn() + "\">");
out
.write("<img src=\""+path+"/pages/include/sort_up.gif\" />");
out.write("</div>");
out.write("</th>");
}
}
}
out.write("</tr>");
out.write("</table>");
out.write("<div class=\"tableFooter\">");
out.write("<div class=\"tableButtonField\">");
if (StaticFIelds.YES.equals(buttons)) {
for (ButtonBean buttonBean : buttonList) {
out.write("<button onclick=\""
+ buttonBean.getAction()
+ "\">"
+ MessageUtil.getMessage(buttonBean.getLabel(),
pageContext.getRequest().getLocale())
+ "</button>");
}
} else {
out.write(" ");
}
out.write("</div>");
out.write("<div class=\"tableNavigation\">");
out.write("<button id=\""+id+"FirstPageButton\" class=\"firstPage\" onclick=\"changePage('" + id
+ "','first')\"></button>");
out.write("<button id=\""+id+"PrevPageButton\" class=\"prevPage\" onclick=\"changePage('" + id
+ "','prev')\"></button>");
out
.write("<input type=\"text\" id=\""
+ id
+ "PageNum\" class=\"tablePageNum\" value=\"1\" disabled=\"disabled\">");
out
.write(" <b>\\</b> <input type=\"text\" id=\""
+ id
+ "PageLastNum\" class=\"tablePageNum\" value=\"1\" disabled=\"disabled\">");
out.write("<button id=\""+id+"NextPageButton\" class=\"nextPage\" onclick=\"changePage('" + id
+ "','next')\"></button>");
out.write("<button id=\""+id+"LastPageButton\" class=\"lastPage\" onclick=\"changePage('" + id
+ "','last')\"></button>");
out.write("</div>");
out.write("</div>");
out.write("</div>");
out.write("<script>");
out.write(findClickAction.replace("\"", ""));
out.write("</script>");
} catch (Exception e) {
throw new JspTagException("IO Error: " + e.getMessage());
}
filters.clear();
filtersArrayJS = "";
return EVAL_PAGE;
}
public Tag getParent() {
return parent;
}
public void release() {
System.out.println("wypuszczenie");
}
public void setPageContext(PageContext pageContext) {
this.pageContext = pageContext;
}
public void setParent(Tag parent) {
this.parent = parent;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public List<FilterBean> getFilters() {
return filters;
}
public void setFilters(List<FilterBean> filters) {
this.filters = filters;
}
protected String getFiltersArrayJS() {
return filtersArrayJS;
}
protected void setFiltersArrayJS(String filtersArrayJS) {
this.filtersArrayJS = filtersArrayJS;
}
public String getTableAjaxActionClass() {
return tableAjaxActionClass;
}
public void setTableAjaxActionClass(String tableAjaxActionClass) {
this.tableAjaxActionClass = tableAjaxActionClass;
}
public String getButtons() {
return buttons;
}
public void setButtons(String buttons) {
this.buttons = buttons;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List<ButtonBean> getButtonList() {
return buttonList;
}
public List<ColumnBean> getColumnList() {
return columnList;
}
public String getTableAjaxActionMethod() {
return tableAjaxActionMethod;
}
public void setTableAjaxActionMethod(String tableAjaxActionMethod) {
this.tableAjaxActionMethod = tableAjaxActionMethod;
}
public String getDefaultColumnSort() {
return defaultColumnSort;
}
public void setDefaultColumnSort(String defaultColumnSort) {
this.defaultColumnSort = defaultColumnSort;
}
public String getDefaultColumnSortDir() {
return defaultColumnSortDir;
}
public void setDefaultColumnSortDir(String defaultColumnSortDir) {
this.defaultColumnSortDir = defaultColumnSortDir;
}
}