/* * Copyright 2008 biaoping.yin * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.frameworkset.common.tag.pager.config; import java.io.IOException; import java.io.StringWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import com.frameworkset.common.ecs.Link; import com.frameworkset.common.ecs.Script; import com.frameworkset.common.tag.BaseTag; import com.frameworkset.util.VelocityUtil; import bboss.org.apache.velocity.Template; import bboss.org.apache.velocity.VelocityContext; import bboss.org.apache.velocity.exception.MethodInvocationException; import bboss.org.apache.velocity.exception.ParseErrorException; import bboss.org.apache.velocity.exception.ResourceNotFoundException; /** * <p>Title: PageConfig.java</p> * <p>Description: </p> * <p>bboss workgroup</p> * <p>Copyright (c) 2008</p> * @Date 2010-4-12 下午05:55:45 * @author biaoping.yin * @version 1.0 */ public class PageConfig extends BaseTag { private static final String popscript = "contextmenu/popscript.vm"; public static final String popscript_set_flag= "popscript_set_flag________"; public static final String jqueryscript_set_flag= "jqueryscript_set_flag________"; public static final String pagerscript_set_flag= "pagerscript_set_flag________"; public static final String treescript_set_flag= "treescript_set_flag________"; private boolean enablecontextmenu = true; private boolean enabletree = true; @Override public int doEndTag() throws JspException { this.enablecontextmenu = true; return super.doEndTag(); } public static final String node_parent_indent = "node_parent_indent"; public static final String easyui_css = "/include/themes/default/easyui.css"; public static final String icon_css = "/include/themes/icon.css"; public static final String jquery_easyui_js = "/include/jquery.easyui.min.js"; public static final String jquery_js = "/include/jquery-1.4.2.min.js"; public static final String pager_js = "/include/pager.js"; public static final String pager_css = "/include/pager.css"; public static String getPopScript(HttpServletRequest request ,boolean enablecontextmenu) { // if(!enablecontextmenu) //没有启用右键菜单,不输出右键菜单js脚本 // { // return ""; // } // StringBuffer output = new StringBuffer(150); String enablecontextmenu_flag = (String)request.getAttribute(popscript_set_flag); String parent_indent = request.getParameter(node_parent_indent); if(parent_indent == null || parent_indent.equals("")) { } else //启用右键菜单,但是是树的延迟加载,不需要输出右键菜单js脚本 { return ""; } if(enablecontextmenu_flag != null && enablecontextmenu_flag.equals("true")) //启用右键菜单,已经输出右键菜单js脚本不需要加 { return ""; } else //启用右键菜单,第一次输出右键菜单js脚本,并设置标记enablecontextmenu_flag为true { try { /** * <link rel="stylesheet" type="text/css" href="${contextpath}/include/themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="${contextpath}/include/themes/icon.css"> <script type="text/javascript" src="${contextpath}/include/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="${contextpath}/include/jquery.easyui.min.js"></script> */ java.io.StringWriter wi = new StringWriter(); wi.write(PageConfig.getLink(request.getContextPath() + easyui_css, request)); wi.write(PageConfig.getLink(request.getContextPath() + icon_css, request)); wi.write(PageConfig.getScript(request.getContextPath() + jquery_js, request)); wi.write(PageConfig.getScript(request.getContextPath() + jquery_easyui_js, request)); if(enablecontextmenu) { Template template = VelocityUtil.getTemplate(popscript); VelocityContext context = new VelocityContext(); context.put("contextpath",request.getContextPath()); template.merge(context,wi); } // System.out.println("wi.getBuffer()________________________________________________"); // System.out.println(wi.getBuffer()); // output.append(wi.getBuffer()); request.setAttribute(popscript_set_flag, "true"); return wi.getBuffer().toString(); } catch (ResourceNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ParseErrorException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MethodInvocationException e) { // TODO Auto-generated catch block e.printStackTrace(); } return "";//启用右键菜单,第一次输出右键菜单js脚本,加载时出现异常返回"" } // if(enablecontextmenu) // { // Template template = VelocityUtil.getTemplate(popscript); // // VelocityContext context = new VelocityContext(); // context.put("contextpath",request.getContextPath()); // // java.io.StringWriter wi = new StringWriter(); // template.merge(context,wi); // // System.out.println("wi.getBuffer()________________________________________________"); // // System.out.println(wi.getBuffer()); // output.append(wi.getBuffer()); // request.setAttribute(popscript_set_flag, "true"); // } // return output.toString(); } public static final String treeview_css = "/include/treeview.css"; public static String getTreeConfig(HttpServletRequest request,boolean enabletree) { // String configed = (String)request.getAttribute(treescript_set_flag); // if(configed == null || !configed.equals("true")) // { // StringBuffer output = new StringBuffer(150); // // output.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"").append(request.getContextPath()).append("/include/treeview.css\"/>"); // request.setAttribute(treescript_set_flag,"true"); // return output.toString(); // } // return ""; if(!enabletree ) return ""; String treecss = request.getContextPath()+treeview_css; return PageConfig.getLink(treecss, request); } public static String getJqueryConfig(HttpServletRequest request) { String src = request.getContextPath()+jquery_js; return PageConfig.getScript(src, request); // String configed = (String)request.getAttribute(jqueryscript_set_flag); // // if(configed == null || !configed.equals("true")) // { // StringBuffer output = new StringBuffer(150); // // output.append("<script src=\"").append(request.getContextPath()) // .append("/include/jquery-1.4.2.min.js\" type=\"text/javascript\"></script>"); // // request.setAttribute(jqueryscript_set_flag,"true"); // return output.toString(); // } // return ""; } public static String getPagerConfig(HttpServletRequest request) { // String configed = (String)request.getAttribute(pagerscript_set_flag); // if(configed == null || !configed.equals("true")) // { // StringBuffer output = new StringBuffer(150); // output.append("<script src=\"").append(request.getContextPath()) // .append("/include/pager.js\" type=\"text/javascript\"></script>"); // // request.setAttribute(pagerscript_set_flag,"true"); // return output.toString(); // } // return ""; String pagerjs = request.getContextPath()+pager_js; return PageConfig.getScript(pagerjs, request); } public static String getPagerCss(HttpServletRequest request) { // String configed = (String)request.getAttribute(pagerscript_set_flag); // if(configed == null || !configed.equals("true")) // { // StringBuffer output = new StringBuffer(150); // output.append("<script src=\"").append(request.getContextPath()) // .append("/include/pager.js\" type=\"text/javascript\"></script>"); // // request.setAttribute(pagerscript_set_flag,"true"); // return output.toString(); // } // return ""; String pagerjs = request.getContextPath()+pager_css; return PageConfig.getLink(pagerjs, request); } @Override public int doStartTag() throws JspException { int ret = super.doStartTag(); try { out.print(getJqueryConfig(request)); out.print(getPagerConfig(request)); out.print(getPagerCss(request)); out.print(getTreeConfig(request,enabletree)); out.print(getPopScript(request, enablecontextmenu)); } catch (Exception e) { throw new JspException(e); } return ret; } public boolean isEnablecontextmenu() { return enablecontextmenu; } public void setEnablecontextmenu(boolean enablecontextmenu) { this.enablecontextmenu = enablecontextmenu; } public static final Object lock = new Object(); public static void putScript(String src,HttpServletRequest request,JspWriter out) { if(src == null || src.equals("")) return ; if(request.getAttribute(src) != null) return ; Script script = new Script(); script.setSrc(src); script.setType("text/javascript"); try { out.print(script.toString()); request.setAttribute(src, lock); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static String getScript(String src,HttpServletRequest request) { if(src == null || src.equals("")) return ""; if(request.getAttribute(src) != null) return ""; Script script = new Script(); script.setSrc(src); script.setType("text/javascript"); request.setAttribute(src, lock); return script.toString(); } // public static String getPagerCSS(String src,HttpServletRequest request) // { // if(src == null || src.equals("")) // return ""; // if(request.getAttribute(src) != null) // return ""; // /** // * <link rel="stylesheet" // href="${pageContext.request.contextPath}/css/classic/mainnav.css" // type="text/css"> // */ // Link link = new Link(); // link.setRel("stylesheet"); // link.setHref(src); // link.setType("text/css"); // // // request.setAttribute(src, lock); // return link.toString(); // // // // } public static void putLink(String src,HttpServletRequest request,JspWriter out) { if(src == null || src.equals("")) return ; if(request.getAttribute(src) != null) return ; Link script = new Link(); script.setHref(src); script.setRel("stylesheet"); script.setType("text/css"); try { out.print(script.toString()); request.setAttribute(src, lock); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static String getLink(String src,HttpServletRequest request) { if(src == null || src.equals("")) return ""; if(request.getAttribute(src) != null) return ""; Link script = new Link(); script.setHref(src); script.setRel("stylesheet"); script.setType("text/css"); request.setAttribute(src, lock); return script.toString(); } public boolean isEnabletree() { return enabletree; } public void setEnabletree(boolean enabletree) { this.enabletree = enabletree; } }