package br.com.citframework.tld; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.BodyContent; import javax.servlet.jsp.tagext.BodyTagSupport; import br.com.citframework.util.Constantes; public class JanelaPopup extends BodyTagSupport { private static final long serialVersionUID = -7427569352751397116L; private String id; private String style; private String title; private String modal; private String zIndex; private String backgroundColorTitle; private String backgroundColor; private String maximize; @Override public int doStartTag() throws JspException { try { int zIndexInt = -1; if (this.getZIndex() != null && !this.getZIndex().equalsIgnoreCase("")) { zIndexInt = Integer.parseInt(this.getZIndex()); } String caminhoIconeMaxPopup = "/imagens/max.gif"; if (Constantes.getValue("JANELAPOPUP_CAMINHO_ICONE_MAXIMIZE") != null) { caminhoIconeMaxPopup = Constantes.getValue("JANELAPOPUP_CAMINHO_ICONE_MAXIMIZE"); } String caminhoIconeMinPopup = "/imagens/min.gif"; if (Constantes.getValue("JANELAPOPUP_CAMINHO_ICONE_MINIMIZE") != null) { caminhoIconeMinPopup = Constantes.getValue("JANELAPOPUP_CAMINHO_ICONE_MINIMIZE"); } pageContext.getOut().println("<script type=\"text/javascript\">\n"); pageContext.getOut().println("var " + this.getId() + "_TOP = 0;\n"); pageContext.getOut().println("var " + this.getId() + "_LEFT = 0;\n"); pageContext.getOut().println("var " + this.getId() + "_HEIGHT = 0;\n"); pageContext.getOut().println("var " + this.getId() + "_WIDTH = 0;\n"); pageContext.getOut().println("var " + this.getId() + "_MAXMIN = false;\n"); pageContext.getOut().println("function " + this.getId() + "() { };\n"); pageContext.getOut().println("</script>\n"); pageContext.getOut().println("<script type=\"text/javascript\">\n"); pageContext.getOut().println("" + this.getId() + "_apenasNumeros = function(str){\n"); pageContext.getOut().println(" if (str == null) return '';\n"); pageContext.getOut().println(" var strReturn = '';\n"); pageContext.getOut().println(" for (var i = 0; i < str.length; i++){\n"); pageContext.getOut().println(" if (str.charAt(i) == '0' || str.charAt(i) == '1' || str.charAt(i) == '2' || str.charAt(i) == '3' || str.charAt(i) == '4' ||\n"); pageContext.getOut().println(" str.charAt(i) == '5' || str.charAt(i) == '6' || str.charAt(i) == '7' || str.charAt(i) == '8' || str.charAt(i) == '9'){\n"); pageContext.getOut().println(" strReturn += str.charAt(i);\n"); pageContext.getOut().println(" }\n"); pageContext.getOut().println(" }\n"); pageContext.getOut().println(" return strReturn;\n"); pageContext.getOut().println("};\n"); pageContext.getOut().println("" + this.getId() + ".show = function(){\n"); pageContext.getOut().println(" try{"); pageContext.getOut().println(" " + this.getId() + "_onshow();"); pageContext.getOut().println(" }catch(ex){"); pageContext.getOut().println(" }"); pageContext.getOut().println(" if (MOUSE_PosY == null || MOUSE_PosY == undefined || MOUSE_PosY < 0){\n"); pageContext.getOut().println(" MOUSE_PosY = 0;"); pageContext.getOut().println(" }"); pageContext.getOut().println(" document.getElementById('" + this.getId() + "').style.top = MOUSE_PosY + 'px';\n"); // pageContext.getOut().println(" document.getElementById('" + getId() + "').style.display='block';\n"); pageContext.getOut().println(" " + this.getId() + "_Ajusta_JanelaPopup();\n"); if ("true".equalsIgnoreCase(modal)) { pageContext.getOut().println(" F" + this.getId() + "_atualizaZIndexMaior('divBloqueiaTela_" + this.getId() + "');\n"); pageContext.getOut().println(" document.getElementById('divBloqueiaTela_" + this.getId() + "').style.display='block';\n"); pageContext.getOut().println(" document.getElementById('divBloqueiaTela_" + this.getId() + "').style.left = '0px';"); pageContext.getOut().println(" document.getElementById('divBloqueiaTela_" + this.getId() + "').style.top = '0px';"); pageContext.getOut().println(" document.getElementById('divBloqueiaTela_" + this.getId() + "').style.width = document.body.scrollWidth + 'px';"); pageContext.getOut().println(" if (document.body.clientHeight + document.body.clientTop > document.body.scrollHeight){"); pageContext.getOut().println( " document.getElementById('divBloqueiaTela_" + this.getId() + "').style.height = (document.body.clientHeight + document.body.clientTop) + 'px';"); pageContext.getOut().println(" }else{"); pageContext.getOut().println(" document.getElementById('divBloqueiaTela_" + this.getId() + "').style.height = document.body.scrollHeight + 'px';"); pageContext.getOut().println(" }"); // pageContext.getOut().println(" alert(document.getElementById('" + getId() + "').style.height);"); // pageContext.getOut().println(" alert(document.getElementById('" + getId() + "').style.width);"); } if (zIndexInt == -1) { pageContext.getOut().println(" F" + this.getId() + "_atualizaZIndexMaior('" + this.getId() + "');\n"); } pageContext.getOut().println(" document.getElementById('divJanelaPopup_" + this.getId() + "').style.display='block';\n"); pageContext.getOut().println(" document.getElementById('divIntJanelaPopup_" + this.getId() + "').style.display='block';\n"); pageContext.getOut().println(" document.getElementById('" + this.getId() + "_title').style.display='inline';\n"); pageContext.getOut().println(" document.getElementById('divCorpoJanelaPopup_" + this.getId() + "').style.display='block';\n"); pageContext.getOut().println(" document.getElementById('" + this.getId() + "').style.display='block';\n"); pageContext.getOut().println("};\n\n"); pageContext.getOut().println("</script>\n"); pageContext.getOut().println("<script type=\"text/javascript\">\n"); pageContext.getOut().println("" + this.getId() + ".showInYPosition = function(objPos){\n"); pageContext.getOut().println(" try{"); pageContext.getOut().println(" " + this.getId() + "_onshow();"); pageContext.getOut().println(" }catch(ex){"); pageContext.getOut().println(" }"); pageContext.getOut().println(" if (objPos != null){"); pageContext.getOut().println(" document.getElementById('" + this.getId() + "').style.top = objPos.top + 'px';\n"); pageContext.getOut().println(" }"); // pageContext.getOut().println(" document.getElementById('" + getId() + "').style.display='block';\n"); pageContext.getOut().println(" " + this.getId() + "_Ajusta_JanelaPopup();\n"); if ("true".equalsIgnoreCase(modal)) { pageContext.getOut().println(" F" + this.getId() + "_atualizaZIndexMaior('divBloqueiaTela_" + this.getId() + "');\n"); pageContext.getOut().println(" document.getElementById('divBloqueiaTela_" + this.getId() + "').style.display='block';\n"); pageContext.getOut().println(" document.getElementById('divBloqueiaTela_" + this.getId() + "').style.left = '0px';"); pageContext.getOut().println(" document.getElementById('divBloqueiaTela_" + this.getId() + "').style.top = '0px';"); pageContext.getOut().println(" document.getElementById('divBloqueiaTela_" + this.getId() + "').style.width = document.body.scrollWidth + 'px';"); pageContext.getOut().println(" if (document.body.clientHeight + document.body.clientTop > document.body.scrollHeight){"); pageContext.getOut().println( " document.getElementById('divBloqueiaTela_" + this.getId() + "').style.height = (document.body.clientHeight + document.body.clientTop) + 'px';"); pageContext.getOut().println(" }else{"); pageContext.getOut().println(" document.getElementById('divBloqueiaTela_" + this.getId() + "').style.height = document.body.scrollHeight + 'px';"); pageContext.getOut().println(" }"); } if (zIndexInt == -1) { pageContext.getOut().println(" F" + this.getId() + "_atualizaZIndexMaior('" + this.getId() + "');\n"); } pageContext.getOut().println(" document.getElementById('divJanelaPopup_" + this.getId() + "').style.display='block';\n"); pageContext.getOut().println(" document.getElementById('divIntJanelaPopup_" + this.getId() + "').style.display='block';\n"); pageContext.getOut().println(" document.getElementById('" + this.getId() + "_title').style.display='inline';\n"); pageContext.getOut().println(" document.getElementById('divCorpoJanelaPopup_" + this.getId() + "').style.display='block';\n"); pageContext.getOut().println(" document.getElementById('" + this.getId() + "').style.display='block';\n"); pageContext.getOut().println("};\n\n"); pageContext.getOut().println("</script>\n"); pageContext.getOut().println("<script type=\"text/javascript\">\n"); pageContext.getOut().println("" + this.getId() + ".maximize = function(){\n"); pageContext.getOut().println(" var divToMax = document.getElementById('" + this.getId() + "');\n"); pageContext.getOut().println(" if (!" + this.getId() + "_MAXMIN){\n"); pageContext.getOut().println(" " + this.getId() + "_TOP = " + this.getId() + "_apenasNumeros(divToMax.style.top);\n"); pageContext.getOut().println(" " + this.getId() + "_LEFT = " + this.getId() + "_apenasNumeros(divToMax.style.left);\n"); pageContext.getOut().println(" " + this.getId() + "_HEIGHT = " + this.getId() + "_apenasNumeros(divToMax.style.height);\n"); pageContext.getOut().println(" " + this.getId() + "_WIDTH = " + this.getId() + "_apenasNumeros(divToMax.style.width);\n"); pageContext.getOut().println(" }\n"); pageContext.getOut().println(" if (!" + this.getId() + "_MAXMIN){\n"); // Atencao - abaixo deve realmente chamar 2 vezes a funcao, pois somente assim ela ignora as barras de rolagem!. pageContext.getOut().println(" " + this.getId() + "_MaximizaJanela();\n"); pageContext.getOut().println(" " + this.getId() + "_MaximizaJanela();\n"); pageContext.getOut().println( " document.getElementById('IMG_" + this.getId() + "_MAXMIN').src = '" + Constantes.getValue("SERVER_ADDRESS") + ((HttpServletRequest) pageContext.getRequest()).getContextPath() + caminhoIconeMinPopup + "'"); pageContext.getOut().println(" try{"); pageContext.getOut().println(" " + this.getId() + "_onmaximize();"); pageContext.getOut().println(" }catch(ex){"); pageContext.getOut().println(" }"); pageContext.getOut().println(" }else{\n"); pageContext.getOut().println(" " + this.getId() + "_MinimizaJanela();\n"); pageContext.getOut().println( " document.getElementById('IMG_" + this.getId() + "_MAXMIN').src = '" + Constantes.getValue("SERVER_ADDRESS") + ((HttpServletRequest) pageContext.getRequest()).getContextPath() + caminhoIconeMaxPopup + "'"); pageContext.getOut().println(" try{"); pageContext.getOut().println(" " + this.getId() + "_onminimize();"); pageContext.getOut().println(" }catch(ex){"); pageContext.getOut().println(" }"); pageContext.getOut().println(" }\n"); pageContext.getOut().println(" " + this.getId() + "_MAXMIN = !" + this.getId() + "_MAXMIN;\n"); pageContext.getOut().println("};\n\n"); pageContext.getOut().println("" + this.getId() + "_MaximizaJanela = function(){\n"); pageContext.getOut().println(" var htmlheight = document.body.clientHeight;\n"); pageContext.getOut().println(" var htmlwidth = document.body.clientWidth;\n"); pageContext.getOut().println(" var divToMax = document.getElementById('" + this.getId() + "');\n"); pageContext.getOut().println(" divToMax.style.top = '0px';\n"); pageContext.getOut().println(" divToMax.style.left = '0px';\n"); pageContext.getOut().println(" divToMax.style.height = htmlheight + 'px';\n"); pageContext.getOut().println(" divToMax.style.width = htmlwidth + 'px';\n"); pageContext.getOut().println(" " + this.getId() + "_Ajusta_JanelaPopup();\n"); pageContext.getOut().println("};\n\n"); pageContext.getOut().println("" + this.getId() + "_MinimizaJanela = function(){\n"); pageContext.getOut().println(" var htmlheight = " + this.getId() + "_HEIGHT;\n"); pageContext.getOut().println(" var htmlwidth = " + this.getId() + "_WIDTH;\n"); pageContext.getOut().println(" var divToMax = document.getElementById('" + this.getId() + "');\n"); pageContext.getOut().println(" divToMax.style.top = " + this.getId() + "_TOP + 'px';\n"); pageContext.getOut().println(" divToMax.style.left = " + this.getId() + "_LEFT + 'px';\n"); pageContext.getOut().println(" divToMax.style.height = htmlheight + 'px';\n"); pageContext.getOut().println(" divToMax.style.width = htmlwidth + 'px';\n"); pageContext.getOut().println(" " + this.getId() + "_Ajusta_JanelaPopup();\n"); pageContext.getOut().println("};\n\n"); pageContext.getOut().println("" + this.getId() + "_CloseButtonPress = function(){\n"); pageContext.getOut().println(" var b = true;\n"); pageContext.getOut().println(" try{\n"); pageContext.getOut().println(" b = " + this.getId() + "_onCloseButton();\n"); pageContext.getOut().println(" }catch(ex){"); pageContext.getOut().println(" b = true;\n"); pageContext.getOut().println(" }\n"); pageContext.getOut().println(" if (b){\n"); pageContext.getOut().println(" " + this.getId() + ".hide();\n"); pageContext.getOut().println(" }\n"); pageContext.getOut().println("};\n\n"); pageContext.getOut().println("" + this.getId() + ".hide = function(){\n"); // pageContext.getOut().println(" " + getId() + "_Ajusta_JanelaPopup();\n"); if ("true".equalsIgnoreCase(modal)) { pageContext.getOut().println(" document.getElementById('divBloqueiaTela_" + this.getId() + "').style.display='none';\n"); } pageContext.getOut().println(" document.getElementById('" + this.getId() + "').style.display='none';\n"); pageContext.getOut().println(" try{"); pageContext.getOut().println(" " + this.getId() + "_onhide();"); pageContext.getOut().println(" }catch(ex){"); pageContext.getOut().println(" }"); pageContext.getOut().println("};\n\n"); pageContext.getOut().println("</script>\n"); pageContext.getOut().println("<script type=\"text/javascript\">\n"); pageContext.getOut().println("" + this.getId() + ".setTitle = function(title){\n"); pageContext.getOut().println(" document.getElementById('" + this.getId() + "_title').innerHTML = title;"); pageContext.getOut().println("};\n\n"); pageContext.getOut().println("</script>\n"); pageContext.getOut().println("<script type=\"text/javascript\">\n"); pageContext.getOut().println("" + this.getId() + "_Ajusta_JanelaPopup = function(){\n"); pageContext.getOut().println(" var dvInterna = document.getElementById('divIntJanelaPopup_" + this.getId() + "');\n"); pageContext.getOut().println(" var dvCorpo = document.getElementById('divCorpoJanelaPopup_" + this.getId() + "');\n"); pageContext.getOut().println(" var dvLookup = document.getElementById('divJanelaPopup_" + this.getId() + "');\n"); // pageContext.getOut().println(" var fraLookup = document.getElementById('fraJanelaPopup_" + getId() + "');\n"); pageContext.getOut().println(" dvLookup.style.height = document.getElementById('" + this.getId() + "').style.height;\n"); // pageContext.getOut().println(" if (isMozilla){"); // pageContext.getOut().println(" fraLookup.style.display='none';"); // pageContext.getOut().println(" }else{"); // Nao ha razao para mostrar o iframe no mozilla e firefox. // pageContext.getOut().println(" fraLookup.style.height = document.getElementById('" + getId() + "').style.height;\n"); // /pageContext.getOut().println(" fraLookup.style.width = document.getElementById('" + getId() + "').style.width;\n"); // pageContext.getOut().println(" }"); pageContext.getOut().println(" dvLookup.style.width = document.getElementById('" + this.getId() + "').style.width;\n"); pageContext.getOut().println(" dvInterna.style.height = document.getElementById('" + this.getId() + "').style.height;\n"); pageContext.getOut().println(" dvInterna.style.width = document.getElementById('" + this.getId() + "').style.width;\n"); pageContext.getOut().println(" dvInterna.style.top = '0px'"); pageContext.getOut().println(" dvCorpo.style.top = '28px'"); pageContext.getOut().println("};\n"); pageContext.getOut().println("</script>\n"); if (zIndexInt == -1) { // pageContext.getOut().println("<div id='" + getId() + "' style='" + getStyle() + ";z-index:3001;' class='dragme' onclick=\"F" + getId() + "_atualizaZIndexMaior('" // + getId() + "')\">\n"); pageContext.getOut().println( "<div id='" + this.getId() + "' style='" + this.getStyle() + ";z-index:3001; background: #DAE0E3; box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);' class='dragme'>\n"); } else { pageContext.getOut().println( "<div id='" + this.getId() + "' style='" + this.getStyle() + ";z-index:" + this.getZIndex() + "; background: #DAE0E3;' class='dragme'>\n"); } // pageContext.getOut().println("<div style='z-index:2;' id='divJanelaPopup_" + getId() + "'><iframe style='overflow: hidden' id='fraJanelaPopup_" + getId() + "' src='" // + urlIframe + "'></iframe></div>\n"); pageContext.getOut().println("<div style='z-index:2;' class='corpoexternopopup ui-corner-all' id='divJanelaPopup_" + this.getId() + "'></div>\n"); String backColor = ""; if (this.getBackgroundColor() != null) { backColor = this.getBackgroundColor(); } else { backColor = Constantes.getValue("JANELAPOPUP_BACKGROUND"); } pageContext.getOut().println( "<div style='position:absolute;background:" + backColor + ";border:2px solid #E4E4E4' id='divIntJanelaPopup_" + this.getId() + "' class='corpointernopopup ui-corner-all'>\n"); if (this.getBackgroundColorTitle() != null) { this.getBackgroundColorTitle(); } else { Constantes.getValue("JANELAPOPUP_TITLE_BACKCOLOR"); } if (this.getMaximize() != null) { if (this.getMaximize().trim().equalsIgnoreCase("true")) {} } pageContext.getOut().println("<div class='tituloPopup' >"); pageContext.getOut().println("<h4 id='" + this.getId() + "_title'>"); pageContext.getOut().println(this.getTitle()); pageContext.getOut().println("</h4>"); pageContext.getOut().println("<div>");; String caminhoIconeFecharPopup = "/imagens/fecharLookup.gif"; if (Constantes.getValue("JANELAPOPUP_CAMINHO_ICONE_FECHAR") != null) { caminhoIconeFecharPopup = Constantes.getValue("JANELAPOPUP_CAMINHO_ICONE_FECHAR"); } pageContext.getOut().println("<a href='#' onclick='" + this.getId() + ".maximize();' >"); pageContext.getOut().println( "<img id='IMG_" + this.getId() + "_MAXMIN' alt='Maximizar janela' src='" + Constantes.getValue("SERVER_ADDRESS") + ((HttpServletRequest) pageContext.getRequest()).getContextPath() + caminhoIconeMaxPopup + "'/>"); pageContext.getOut().println("</a>"); pageContext.getOut().println("<a href='#' onclick='" + this.getId() + "_CloseButtonPress();'>"); pageContext.getOut().println( "<img alt='Fechar janela' src='" + Constantes.getValue("SERVER_ADDRESS") + ((HttpServletRequest) pageContext.getRequest()).getContextPath() + caminhoIconeFecharPopup + "'/>"); pageContext.getOut().println("</a>"); pageContext.getOut().println("</div>"); pageContext.getOut().println("</div>"); pageContext.getOut().println("<div id='divCorpoJanelaPopup_" + this.getId() + "' style='position:absolute;'>"); } catch (final IOException e) { throw new JspException(e); } return EVAL_BODY_INCLUDE; } @Override public int doEndTag() throws JspException { try { pageContext.getOut().println("</div>\n"); pageContext.getOut().println("</div>\n"); pageContext.getOut().println("</div>\n"); pageContext.getOut().println("<script>"); pageContext.getOut().println("F" + this.getId() + "_atualizaZIndexMaior = function(idDiv){"); pageContext.getOut().println(" var divs = document.getElementsByTagName('div');"); pageContext.getOut().println(" var maiorZIndex = 0;"); pageContext.getOut().println(" if (divs == null || divs == undefined) return;"); pageContext.getOut().println(" for(var i = 0; i < divs.length; i++){"); pageContext .getOut() .println( " if (divs[i].id != 'divBarraFerramentas' && divs[i].id != 'divBoxOver' && divs[i].id != 'divBarraFerramentasAdicionais' && divs[i].id != 'divImpressosAdicionais' && divs[i].id != 'divBarraHorario' && divs[i].id != 'divBarra2' && divs[i].id != 'divBarra2Adicionais' "); pageContext.getOut().println(" && divs[i].id != 'dialog' && divs[i].id != 'dialog-mask' && divs[i].id != 'divListaNomesAgendaEspera'){"); pageContext.getOut().println(" if (divs[i].style.display != 'none'){"); pageContext.getOut().println(" if (divs[i].style.zIndex != null && divs[i].style.zIndex != undefined){"); pageContext.getOut().println(" if (maiorZIndex < divs[i].style.zIndex){"); pageContext.getOut().println(" if (divs[i].style.zIndex < 11000){"); // Este item eh para evitar sobrepor o FCKEditor (Janelas de servi�os). pageContext.getOut().println(" maiorZIndex = parseInt(divs[i].style.zIndex);"); pageContext.getOut().println(" }else{"); pageContext.getOut().println(" maiorZIndex = 11000;"); pageContext.getOut().println(" }"); pageContext.getOut().println(" }"); pageContext.getOut().println(" }"); pageContext.getOut().println(" }"); pageContext.getOut().println(" }"); pageContext.getOut().println(" }"); pageContext.getOut().println(" document.getElementById(idDiv).style.zIndex = parseInt(maiorZIndex) + 1;"); pageContext.getOut().println("};"); pageContext.getOut().println("</script>"); if ("true".equalsIgnoreCase(modal)) { // Gera a DIV de Bloqueio da Tela. pageContext.getOut().println( "<div id='divBloqueiaTela_" + this.getId() + "' style='z-index:3000;position:absolute; CURSOR: wait; BACKGROUND-COLOR:#676B70; filter:alpha(opacity=70);-moz-opacity:.70;opacity:.70;'>"); pageContext.getOut().println("</div>"); } } catch (final IOException e) { throw new JspException(e); } return super.doEndTag(); } @Override public int doAfterBody() throws JspException { return super.doAfterBody(); } @Override public BodyContent getBodyContent() { final BodyContent b = super.getBodyContent(); return b; } @Override public String getId() { return id; } @Override public void setId(final String id) { this.id = id; } public String getStyle() { return style; } public void setStyle(final String style) { this.style = style; } public String getTitle() { return title; } public void setTitle(final String title) { this.title = title; } public String getModal() { return modal; } public void setModal(final String modal) { this.modal = modal; } public String getBackgroundColorTitle() { return backgroundColorTitle; } public void setBackgroundColorTitle(final String backgroundColorTitle) { this.backgroundColorTitle = backgroundColorTitle; } public String getBackgroundColor() { return backgroundColor; } public void setBackgroundColor(final String backgroundColor) { this.backgroundColor = backgroundColor; } public String getZIndex() { return zIndex; } public void setZIndex(final String index) { zIndex = index; } public String getMaximize() { return maximize; } public void setMaximize(final String maximize) { this.maximize = maximize; } }