package br.com.citframework.tld;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilI18N;
public class Grid extends BodyTagSupport {
private static final long serialVersionUID = -5264963743225526103L;
private String id;
private String columnHeaders;
private String styleCells;
private String deleteIcon;
private String[] headers;
@Override
public int doStartTag() throws JspException {
if (columnHeaders != null) {
String locale = "";
if (pageContext.getSession().getAttribute("locale") != null) {
try {
locale = pageContext.getSession().getAttribute("locale").toString();
} catch (final Exception e) {
}
} else {
locale = UtilI18N.PORTUGUESE_SIGLA;
}
final String str = UtilI18N.internacionaliza(locale, columnHeaders);
if (str != null && str.trim().length() > 0) {
columnHeaders = str;
}
headers = columnHeaders.split(";");
}
if (deleteIcon == null || deleteIcon.trim().equalsIgnoreCase("")) {
deleteIcon = "true";
}
try {
pageContext.getOut().println("<table id='" + this.getId() + "_tblItens' width='100%' cellpadding='0' cellspacing='0'>\n");
pageContext.getOut().println("<tr>");
if (headers != null) {
for (int i = -1; i < headers.length; i++) {
if (i == -1) {
pageContext.getOut().println("<td class='linhaSubtituloGrid'>");
pageContext.getOut().println(" ");
pageContext.getOut().println("</td>");
} else {
pageContext.getOut().println("<td class='linhaSubtituloGrid'>");
pageContext.getOut().println(headers[i]);
pageContext.getOut().println("</td>");
}
}
}
pageContext.getOut().println("</tr>");
pageContext.getOut().println("</table>\n");
pageContext.getOut().println("<script type=\"text/javascript\">\n");
pageContext.getOut().println("var " + this.getId() + "_index = 0;\n");
pageContext.getOut().println("function " + this.getId() + "() { };\n");
pageContext.getOut().println("" + this.getId() + ".getMaxIndex = function(){\n");
pageContext.getOut().println(" return " + this.getId() + "_index;");
pageContext.getOut().println("};\n");
pageContext.getOut().println("" + this.getId() + ".replaceAll = function(str, strSearch, strReplace) {\n");
pageContext.getOut().println(" var p = str.indexOf(strSearch);\n");
pageContext.getOut().println(" while (p != -1) {\n");
pageContext.getOut().println(" str = str.replace(strSearch, strReplace);\n");
pageContext.getOut().println(" p = str.indexOf(strSearch);\n");
pageContext.getOut().println(" }\n");
pageContext.getOut().println(" return str;\n");
pageContext.getOut().println("};\n");
pageContext.getOut().println("" + this.getId() + ".deleteRowByImgRef = function(objImg){\n");
pageContext.getOut().println(" var ret = true;\n");
pageContext.getOut().println(" try{");
pageContext.getOut().println(" ret = " + this.getId() + "_onDeleteRowByImgRef(objImg);");
pageContext.getOut().println(" }catch(ex){");
pageContext.getOut().println(" ret = true;\n");
pageContext.getOut().println(" }\n");
pageContext.getOut().println(" if (!ret){");
pageContext.getOut().println(" return;");
pageContext.getOut().println(" }\n");
pageContext.getOut().println(" if (!confirm(i18n_message('citcorpore.comum.deleta') )) return;");
pageContext.getOut().println(" var indice = objImg.parentNode.parentNode.rowIndex;");
pageContext.getOut().println(" HTMLUtils.deleteRow('" + this.getId() + "_tblItens', indice);");
pageContext.getOut().println("};\n");
pageContext.getOut().println("" + this.getId() + ".deleteRow = function(indice){\n");
pageContext.getOut().println(" HTMLUtils.deleteRow('" + this.getId() + "_tblItens', indice);");
pageContext.getOut().println("};\n");
pageContext.getOut().println("" + this.getId() + ".deleteAllRows = function(){\n");
pageContext.getOut().println(" HTMLUtils.deleteAllRows('" + this.getId() + "_tblItens');");
pageContext.getOut().println(" " + this.getId() + "_index = 0;\n");
pageContext.getOut().println("};\n");
final String strPathExcluir = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/imagens/excluirPeq.gif";
pageContext.getOut().println("" + this.getId() + ".addRow = function(){\n");
pageContext.getOut().println(" " + this.getId() + "_index = " + this.getId() + "_index + 1;\n");
pageContext.getOut().println(" try{");
pageContext.getOut().println(" " + this.getId() + "_onAddRow(" + this.getId() + "_index);");
pageContext.getOut().println(" }catch(ex){");
pageContext.getOut().println(" }");
pageContext.getOut().println(" var tbl = document.getElementById('" + this.getId() + "_tblItens');\n");
pageContext.getOut().println(" var lastRow = tbl.rows.length;\n");
pageContext.getOut().println(" var row = tbl.insertRow(lastRow);\n");
pageContext.getOut().println(" row.className = 'CLASS_CONTROL_ROW_TAG';\n");
pageContext.getOut().println(" row.id = '" + this.getId() + "_TD_' + NumberUtil.zerosAEsquerda(" + this.getId() + "_index,5);\n");
pageContext.getOut().println(" for(var i = 0; i <= " + this.getQuantidadeColunas() + "; i++){\n");
pageContext.getOut().println(" var coluna = row.insertCell(i);\n");
pageContext.getOut().println(" if (i == 0){\n");
if (deleteIcon.equalsIgnoreCase("true")) { // Se for para apresentar o icone de delete!
pageContext.getOut().println(
" coluna.innerHTML = '<img src=\"" + strPathExcluir + "\" border=\"0\" onclick=\"" + this.getId()
+ ".deleteRowByImgRef(this)\" style=\"cursor:pointer\"/>';\n");
} else {
pageContext.getOut().println(" coluna.innerHTML = ' ';\n");
}
pageContext.getOut().println(" coluna.className = 'linhaSubtituloGrid';\n");
pageContext.getOut().println(" }else{\n");
if (styleCells != null && !styleCells.trim().equalsIgnoreCase("")) {
pageContext.getOut().println(" coluna.className = '" + styleCells + "';\n");
}
pageContext.getOut().println(
" var auxContent = " + this.getId() + ".replaceAll(document.getElementById('" + this.getId()
+ "_Coluna_' + NumberUtil.zerosAEsquerda(i,3)).innerHTML,'#SEQ#', NumberUtil.zerosAEsquerda(" + this.getId() + "_index,5));\n");
pageContext.getOut().println(" coluna.innerHTML = auxContent;\n");
pageContext.getOut().println(" }\n");
pageContext.getOut().println(" }\n");
pageContext.getOut().println(" DEFINEALLPAGES_atribuiCaracteristicasCitAjax();\n");
pageContext.getOut().println("};\n\n");
pageContext.getOut().println("" + this.getId() + ".getRowNumberFromObject = function(obj){\n");
pageContext.getOut().println(" var cl = obj.className;\n");
pageContext.getOut().println(" while (cl != 'CLASS_CONTROL_ROW_TAG' && (obj != null && obj != undefined)) {\n");
pageContext.getOut().println(" try{\n");
pageContext.getOut().println(" obj = obj.parentNode;\n");
pageContext.getOut().println(" cl = obj.className;\n");
pageContext.getOut().println(" }catch(ex){\n");
pageContext.getOut().println(" obj = null;\n");
pageContext.getOut().println(" }\n");
pageContext.getOut().println(" }\n");
pageContext.getOut().println(" if (obj != null && obj != undefined){\n");
pageContext.getOut().println(" return obj.rowIndex;\n");
pageContext.getOut().println(" }else{\n");
pageContext.getOut().println(" return -1;\n");
pageContext.getOut().println(" }\n");
pageContext.getOut().println("};\n\n");
pageContext.getOut().println("" + this.getId() + ".getRowObject = function(obj){\n");
pageContext.getOut().println(" var cl = obj.className;\n");
pageContext.getOut().println(" while (cl != 'CLASS_CONTROL_ROW_TAG' && (obj != null && obj != undefined)) {\n");
pageContext.getOut().println(" try{\n");
pageContext.getOut().println(" obj = obj.parentNode;\n");
pageContext.getOut().println(" cl = obj.className;\n");
pageContext.getOut().println(" }catch(ex){\n");
pageContext.getOut().println(" obj = null;\n");
pageContext.getOut().println(" }\n");
pageContext.getOut().println(" }\n");
pageContext.getOut().println(" if (obj != null && obj != undefined){\n");
pageContext.getOut().println(" return obj;\n");
pageContext.getOut().println(" }else{\n");
pageContext.getOut().println(" return null;\n");
pageContext.getOut().println(" }\n");
pageContext.getOut().println("};\n\n");
pageContext.getOut().println("</script>\n");
} catch (final IOException e) {
e.printStackTrace();
}
return EVAL_BODY_INCLUDE;
}
public int getQuantidadeColunas() {
if (headers != null) {
return headers.length;
}
return 0;
}
@Override
public String getId() {
return id;
}
@Override
public void setId(final String id) {
this.id = id;
}
public String getColumnHeaders() {
return columnHeaders;
}
public void setColumnHeaders(final String columnHeaders) {
this.columnHeaders = columnHeaders;
}
public String getStyleCells() {
return styleCells;
}
public void setStyleCells(final String styleCells) {
this.styleCells = styleCells;
}
public String getDeleteIcon() {
return deleteIcon;
}
public void setDeleteIcon(final String deleteIcon) {
this.deleteIcon = deleteIcon;
}
}