package com.nfwork.dbfound.web.ui; import java.util.List; import javax.servlet.jsp.JspTagException; import javax.servlet.jsp.tagext.Tag; import com.nfwork.dbfound.util.LogUtil; import com.nfwork.dbfound.util.UUIDUtil; import com.nfwork.dbfound.exception.TagLocationException; import com.nfwork.dbfound.web.i18n.MultiLangUtil; public class Tab extends Panel implements Cloneable { private static final long serialVersionUID = 1L; private String title; private String id; private String url; private String initUrl = ""; private boolean closable; private String height; public int doStartTag() throws JspTagException { if (id == null || "".equals(id)) { id = "TAB" + UUIDUtil.getRandomString(5); } html = "<div id='" + id + "_div'>"; contentCmp = null; content = new StringBuffer(); return EVAL_BODY_INCLUDE; } public int doEndTag() throws JspTagException { // 设置第一个tab页标示 为flase pageContext.setAttribute("isFirstTab", false); html += "</div>"; Tag t = findAncestorWithClass(this, Tabs.class); if (t == null) { throw new TagLocationException("标签Tab位置不正确,只能在Tabs标签里面使用"); } Tabs parent = (Tabs) t; Tab tab = null; try { tab = (Tab) this.clone(); if (url == null || url.startsWith("/") || url.startsWith("../") || url.startsWith("./") || url.startsWith("http")) { } else { tab.setUrl(pageContext.getRequest().getAttribute("basePath") + tab.getUrl()); } } catch (CloneNotSupportedException e) { LogUtil.error(e.getMessage(), e); } List<Tab> tabs = parent.getTabs(); if (tabs.isEmpty()) { tab.initUrl = url; } tabs.add(tab); id = null; return EVAL_PAGE; } public String getContentCmp() { return contentCmp; } public void setContentCmp(String contentCmp) { this.contentCmp = contentCmp; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getTitle() { return title; } public void setTitle(String title) { this.title = MultiLangUtil.getValue(title, pageContext); } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getInitUrl() { return initUrl; } public void setInitUrl(String initUrl) { this.initUrl = initUrl; } public boolean isClosable() { return closable; } public void setClosable(boolean closable) { this.closable = closable; } public String getHtml() { return html; } public void setHtml(String html) { this.html = html; } public String getHeight() { return height; } public void setHeight(String height) { this.height = height; } }