/*****************************************************************************
* *
* This file is part of the tna framework distribution. *
* Documentation and updates may be get from biaoping.yin the author of *
* this framework *
* *
* Sun Public License Notice: *
* *
* The contents of this file are subject to the Sun Public License Version *
* 1.0 (the "License"); you may not use this file except in compliance with *
* the License. A copy of the License is available at http://www.sun.com *
* *
* The Original Code is tag. The Initial Developer of the Original *
* Code is biaoping yin. Portions created by biaoping yin are Copyright *
* (C) 2000. All Rights Reserved. *
* *
* GNU Public License Notice: *
* *
* Alternatively, the contents of this file may be used under the terms of *
* the GNU Lesser General Public License (the "LGPL"), in which case the *
* provisions of LGPL are applicable instead of those above. If you wish to *
* allow use of your version of this file only under the terms of the LGPL *
* and not to allow others to use your version of this file under the SPL, *
* indicate your decision by deleting the provisions above and replace *
* them with the notice and other provisions required by the LGPL. If you *
* do not delete the provisions above, a recipient may use your version of *
* this file under either the SPL or the LGPL. *
* *
* biaoping.yin (yin-bp@163.com) *
* Author of Learning Java *
* *
*****************************************************************************/
package com.frameworkset.common.tag.pager.tags;
import java.io.OutputStream;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import org.frameworkset.util.I18NUtil;
import com.frameworkset.common.ecs.A;
import com.frameworkset.common.ecs.Span;
import com.frameworkset.common.ecs.TD;
import com.frameworkset.common.ecs.TH;
import com.frameworkset.util.StringUtil;
//import com.frameworkset.common.tag.BaseTag;
/**
* @author biaoping.yin
* 显示表头标题的tag
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class TitleTag extends PagerTagSupport
{
private String bgColor = "#8da6c4";
private String title = null;
/**标题国际化code*/
private String titlecode = null;
private boolean sort = false;
private String desc ;
private int colid = -1;
/**标题样式名称*/
private String className = null;
/**标题对齐样式名称*/
private String align = null;
/**控制内容是否折行*/
private boolean nowrap = false;
/**控制标题跨行*/
private int colspan = 0;
/**
* 指定标题的宽度
*/
private String width = null;
private int pageItems = 0;
private String type = "th";
private String extend = null;
private int rowspan = 0;
/**
* 指定标题对应的属性名称
*/
private String colName = null;
public int doEndTag() throws JspException
{
return super.doEndTag();
}
public int doStartTag() throws JspException
{
super.doStartTag();
if(pagerContext == null)
{
PagerDataSet listTag = (PagerDataSet) findAncestorWithClass(this, PagerDataSet.class);
if(listTag != null)
{
this.pagerContext = listTag.getPagerContext();
fieldHelper = pagerContext;
}
}
try
{
JspWriter out = this.getJspWriter();
if(pagerContext.isWapflag())
{
out.print(generateContent());
}
else
{
if(this.type != null && this.type.equals("td"))
{
out.print(generateTDContent());
}
else
{
out.print(generateTHContent());
}
}
// if(pagerTag == null)
// {
// if(!this.detailTag.isWapflag())
// {
// out.print(generateContent());
// }
// else
// out.print(generateWapContent());
// }
// else
// {
// if(!this.pagerTag.isWapflag())
// {
// out.print(generateContent());
// }
// else
// out.print(generateWapContent());
// }
}
catch(Exception e)
{
e.printStackTrace();
throw new JspException("Title tag must be set in header tag in list or pager tag:" +e.getMessage());
}
return SKIP_BODY;
}
public String generateWapContent() {
StringBuilder ret = new StringBuilder();
TD td = new TD();
if(this.getTitle() == null)//如果没有设定标题
{
/**
* 如果改字段需要排序,构建排序的href
* 并且反转排序顺序
*
*/
if(isSortKey())
{
A a = new A();
String href = null;
String sortKey = "";
if(this.getColName() != null)
sortKey = getColName();
else if(getColid() >= 0)
{
sortKey = getSortKey(getColid());
}
if(pagerContext != null)
{
if(!pagerContext.ListMode())
{
href = pagerContext.getOffsetUrl(pagerContext.getOffset(),sortKey,!desc());
href = StringUtil.replace(href,"&","&");
}
else
{
//href = pagerContext.hasParams()?"&":"?" + "sortKey=" + getSortKey(getColId());
href = pagerContext.getUrl(sortKey,!desc());
href = StringUtil.replace(href,"&","&");
}
a.setHref(href);
//a.setTagText( "<strong>" + getTitle(getColId()) + "</strong>");
a.setTagText( getTitle(getColid()) );
td.addElement(a);
}
}
else
td.setTagText(getTitle(getColid()));
}
else //如果不需要排序直接输出标题
{
String title = getTitle();
if(isSortKey())
{
A a = new A();
String href = null;
String sortKey = "";
if(this.getColName() != null)
sortKey = getColName();
else if(getColid() >= 0)
{
sortKey = getSortKey(getColid());
}
if(pagerContext != null)
{
if(!pagerContext.ListMode())
{
href = pagerContext.getOffsetUrl(pagerContext.getOffset(),sortKey,!desc());
href = StringUtil.replace(href,"&","&");
}
else
{
//href = pagerContext.hasParams()?"&":"?" + "sortKey=" + getSortKey(getColId());
href = pagerContext.getUrl(sortKey,!desc());
href = StringUtil.replace(href,"&","&");
}
a.setHref(href);
//a.setTagText( "<strong>" + getTitle(getColId()) + "</strong>");
a.setTagText( title );
td.addElement(a);
}
}
else
td.setTagText(title);
}
if(this.getClassName() != null)
td.setClass(this.getClassName());
ret.append(td.toString());
return ret.toString();
}
private boolean desc()
{
if(pagerContext.isDescfromrequest() )
{
if(this.getColName() != null && pagerContext.getSortKey() != null && pagerContext.getSortKey().equals(this.getColName()))
{
return pagerContext.getDesc();
}
else
{
if(this.getDesc() == null)
return pagerContext.isDefaultDesc();
else
return this.desc.equals("true");
}
}
else
{
if(this.getDesc() == null)
return pagerContext.isDefaultDesc();
else
return this.desc.equals("true");
}
}
/* (non-Javadoc)
* @see com.frameworkset.common.tag.BaseTag#generateContent()
*/
public String generateTHContent() {
StringBuilder ret = new StringBuilder();
TH td = new TH();
String title_lable = this.titlecode == null?this.getTitle():convertTitlei18n();
//td.setBgColor(getBgColor());
String fwidth = getWidth(getColid());
if(width != null && !width.equals(""))
td.setWidth(width);
else if(!fwidth.equals(""))
td.setWidth(fwidth);
if(this.align != null)
td.setAlign(align);
td.setNoWrap(nowrap);
if(this.getColspan() != 0)
td.setColSpan(getColspan());
if(this.getRowspan() != 0)
td.setRowSpan(getRowspan());
if(StringUtil.isNotEmpty(this.getExtend()))
{
td.setExtend(getExtend());
}
if(title_lable == null)//如果没有设定标题
{
/**
* 如果改字段需要排序,构建排序的href
* 并且反转排序顺序
*
*/
if(isSortKey())
{
A a = new A();
String href = null;
String sortKey = "";
if(this.getColName() != null)
sortKey = getColName();
else if(getColid() >= 0)
{
sortKey = getSortKey(getColid());
}
if(pagerContext != null)
{
if( !pagerContext.ListMode())
{
href = pagerContext.getOffsetUrl(pagerContext.getOffset(),sortKey,!desc());
if(pagerContext.getForm() != null)
href = pagerContext.getCustomUrl(pagerContext.getForm(),
pagerContext.getQueryString(pagerContext.getOffset(),sortKey,!desc()),
pagerContext.getPromotion(),
href,pagerContext.getId());
}
else
{
//href = pagerContext.hasParams()?"&":"?" + "sortKey=" + getSortKey(getColId());
href = pagerContext.getUrl(sortKey,!desc());
if(pagerContext.getForm() != null)
href = pagerContext.getCustomUrl(pagerContext.getForm(),
pagerContext.getQueryString(sortKey,!desc()),
pagerContext.getPromotion(),
href,pagerContext.getId());
}
if(pagerContext.getForm() == null)
{
if(pagerContext.getContainerid() == null || pagerContext.getContainerid().equals(""))
{
a.setHref(href);
}
else
{
a.setOnClick(IndexTag.getJqueryUrl(href,pagerContext.getContainerid(),pagerContext.getSelector()));
}
//a.setTagText( "<strong>" + getTitle(getColId()) + "</strong>");
a.setTagText( getTitle(getColid()) );
td.addElement(a);
Span span = new Span();
if(desc())
span.setClass("pg-sort-desc");
else
span.setClass("pg-sort-asc");
span.setTagText(" ");
td.addElement(span);
}
else
{
a.setHref(href);
//a.setTagText( "<strong>" + getTitle(getColId()) + "</strong>");
a.setTagText( getTitle(getColid()) );
td.addElement(a);
Span span = new Span();
if(desc())
span.setClass("pg-sort-desc");
else
span.setClass("pg-sort-asc");
span.setTagText(" ");
td.addElement(span);
}
// a.setHref(href);
// //a.setTagText( "<strong>" + getTitle(getColId()) + "</strong>");
// a.setTagText( getTitle(getColid()) );
// td.addElement(a);
}
}
else
td.setTagText(getTitle(getColid()));
}
else //如果不需要排序直接输出标题
{
String title = title_lable;
if(isSortKey())
{
A a = new A();
String href = null;
String sortKey = "";
if(this.getColName() != null)
sortKey = getColName();
else if(getColid() >= 0)
{
sortKey = getSortKey(getColid());
}
if(pagerContext != null)
{
if(!pagerContext.ListMode())
{
href = pagerContext.getOffsetUrl(pagerContext.getOffset(),sortKey,!desc());
if(pagerContext.getForm() != null)
href = pagerContext.getCustomUrl(pagerContext.getForm(),
pagerContext.getQueryString(pagerContext.getOffset(),sortKey,!desc()),
pagerContext.getPromotion(),
href,pagerContext.getId());
}
else
{
//href = pagerContext.hasParams()?"&":"?" + "sortKey=" + getSortKey(getColId());
href = pagerContext.getUrl(sortKey,!desc());
if(pagerContext.getForm() != null)
href = pagerContext.getCustomUrl(pagerContext.getForm(),
pagerContext.getQueryString(sortKey,!desc()),
pagerContext.getPromotion(),
href,pagerContext.getId());
}
if(pagerContext.getForm() == null)
{
if(pagerContext.getContainerid() == null || pagerContext.getContainerid().equals(""))
{
a.setHref(href);
}
else
{
a.setOnClick(IndexTag.getJqueryUrl(href,pagerContext.getContainerid(),pagerContext.getSelector()));
}
//a.setTagText( "<strong>" + getTitle(getColId()) + "</strong>");
a.setTagText( title );
td.addElement(a);
Span span = new Span();
if(desc())
span.setClass("pg-sort-desc");
else
span.setClass("pg-sort-asc");
span.setTagText(" ");
td.addElement(span);
}
else
{
a.setHref(href);
//a.setTagText( "<strong>" + getTitle(getColId()) + "</strong>");
a.setTagText( title );
td.addElement(a);
Span span = new Span();
if(desc())
span.setClass("pg-sort-desc");
else
span.setClass("pg-sort-asc");
span.setTagText(" ");
td.addElement(span);
}
// a.setHref(href);
// //a.setTagText( "<strong>" + getTitle(getColId()) + "</strong>");
// a.setTagText( title );
// td.addElement(a);
}
}
else
td.setTagText(title);
}
if(this.getClassName() != null)
td.setClass(this.getClassName());
ret.append(td.toString());
return ret.toString();
}
private String convertTitlei18n()
{
// MessageSource source = WebApplicationContextUtils.getWebApplicationContext();
//
// return source.getMessage(this.titlecode, RequestContextUtils.getRequestContextLocal(request));
return I18NUtil.getI18nMessage(titlecode, this.title,request);
}
/**
* @see com.frameworkset.common.tag.BaseTag#generateContent()
*/
public String generateTDContent() {
StringBuilder ret = new StringBuilder();
TD td = new TD();
String title_lable = this.titlecode == null?this.getTitle():convertTitlei18n();
//td.setBgColor(getBgColor());
String fwidth = getWidth(getColid());
if(width != null && !width.equals(""))
td.setWidth(width);
else if(!fwidth.equals(""))
td.setWidth(fwidth);
if(this.align != null)
td.setAlign(align);
td.setNoWrap(nowrap);
if(this.getColspan() != 0)
td.setColSpan(getColspan());
if(this.getRowspan() != 0)
td.setRowSpan(getRowspan());
if(StringUtil.isNotEmpty(this.getExtend()))
{
td.setExtend(getExtend());
}
if(title_lable == null)//如果没有设定标题
{
/**
* 如果改字段需要排序,构建排序的href
* 并且反转排序顺序
*
*/
if(isSortKey())
{
A a = new A();
String href = null;
String sortKey = "";
if(this.getColName() != null)
sortKey = getColName();
else if(getColid() >= 0)
{
sortKey = getSortKey(getColid());
}
if(pagerContext != null)
{
if( !pagerContext.ListMode())
{
href = pagerContext.getOffsetUrl(pagerContext.getOffset(),sortKey,!desc());
if(pagerContext.getForm() != null)
href = pagerContext.getCustomUrl(pagerContext.getForm(),
pagerContext.getQueryString(pagerContext.getOffset(),sortKey,!desc()),
pagerContext.getPromotion(),
href,pagerContext.getId());
}
else
{
//href = pagerContext.hasParams()?"&":"?" + "sortKey=" + getSortKey(getColId());
href = pagerContext.getUrl(sortKey,!desc());
if(pagerContext.getForm() != null)
href = pagerContext.getCustomUrl(pagerContext.getForm(),
pagerContext.getQueryString(sortKey,!desc()),
pagerContext.getPromotion(),
href,pagerContext.getId());
}
if(pagerContext.getForm() == null)
{
if(pagerContext.getContainerid() == null || pagerContext.getContainerid().equals(""))
{
a.setHref(href);
}
else
{
a.setOnClick(IndexTag.getJqueryUrl(href,pagerContext.getContainerid(),pagerContext.getSelector()));
}
//a.setTagText( "<strong>" + getTitle(getColId()) + "</strong>");
a.setTagText( getTitle(getColid()) );
td.addElement(a);
Span span = new Span();
if(desc())
span.setClass("pg-sort-desc");
else
span.setClass("pg-sort-asc");
span.setTagText(" ");
td.addElement(span);
}
else
{
a.setHref(href);
//a.setTagText( "<strong>" + getTitle(getColId()) + "</strong>");
a.setTagText( getTitle(getColid()) );
td.addElement(a);
Span span = new Span();
if(desc())
span.setClass("pg-sort-desc");
else
span.setClass("pg-sort-asc");
span.setTagText(" ");
td.addElement(span);
}
}
}
else
td.setTagText(getTitle(getColid()));
}
else //如果不需要排序直接输出标题
{
String title = title_lable;
if(isSortKey())
{
A a = new A();
String href = null;
String sortKey = "";
if(this.getColName() != null)
sortKey = getColName();
else if(getColid() >= 0)
{
sortKey = getSortKey(getColid());
}
if(pagerContext != null)
{
if(!pagerContext.ListMode())
{
href = pagerContext.getOffsetUrl(pagerContext.getOffset(),sortKey,!desc());
if(pagerContext.getForm() != null)
href = pagerContext.getCustomUrl(pagerContext.getForm(),
pagerContext.getQueryString(pagerContext.getOffset(),sortKey,!desc()),
pagerContext.getPromotion(),
href,pagerContext.getId());
}
else
{
//href = pagerContext.hasParams()?"&":"?" + "sortKey=" + getSortKey(getColId());
href = pagerContext.getUrl(sortKey,!desc());
if(pagerContext.getForm() != null)
href = pagerContext.getCustomUrl(pagerContext.getForm(),
pagerContext.getQueryString(sortKey,!desc()),
pagerContext.getPromotion(),
href,pagerContext.getId());
}
if(pagerContext.getForm() == null)
{
if(pagerContext.getContainerid() == null || pagerContext.getContainerid().equals(""))
{
a.setHref(href);
}
else
{
a.setOnClick(IndexTag.getJqueryUrl(href,pagerContext.getContainerid(),pagerContext.getSelector()));
}
//a.setTagText( "<strong>" + getTitle(getColId()) + "</strong>");
a.setTagText( title );
td.addElement(a);
Span span = new Span();
if(desc())
span.setClass("pg-sort-desc");
else
span.setClass("pg-sort-asc");
span.setTagText(" ");
td.addElement(span);
}
else
{
a.setHref(href);
//a.setTagText( "<strong>" + getTitle(getColId()) + "</strong>");
a.setTagText( title );
td.addElement(a);
Span span = new Span();
if(desc())
span.setClass("pg-sort-desc");
else
span.setClass("pg-sort-asc");
span.setTagText(" ");
td.addElement(span);
}
// a.setHref(href);
// //a.setTagText( "<strong>" + getTitle(getColId()) + "</strong>");
// a.setTagText( title );
// td.addElement(a);
}
}
else
td.setTagText(title);
}
if(this.getClassName() != null)
td.setClass(this.getClassName());
ret.append(td.toString());
return ret.toString();
}
private String getTitle(int i)
{
String[] temp = fieldHelper.getTitles();
return temp == null?"":temp[i] ;
}
private String getSortKey(int i)
{
String[] temp = fieldHelper.getFields();
return temp == null?"":temp[i] ;
}
private String getWidth(int i)
{
String[] temp = fieldHelper.getWidths();
if(temp == null)
return "";
if(i >= temp.length || i < 0)
return "";
return temp[i] ;
}
/* (non-Javadoc)
* @see com.frameworkset.common.tag.BaseTag#write(java.io.OutputStream)
*/
public void write(OutputStream output) {
// TODO Auto-generated method stub
}
/**
* @return int
*/
public long getOffset()
{
return pagerContext.getOffset();
}
/**
* @return int
*/
public int getPageItems() {
return pageItems;
}
/**
* 判断是否是排序字段
* @return boolean
*/
public boolean isSortKey() {
return sort;
}
/**
* @param i
*/
public void setPageItems(int i) {
pageItems = i;
}
/**
* @param string
*/
public void setSort(boolean string) {
sort = string;
}
/**
* @return int
*/
public int getColid() {
return colid;
}
/**
* @param colid
*/
public void setColid(int colid) {
this.colid = colid;
}
/**
* @return String
*/
public String getBgColor() {
return bgColor == null?"#8da6c4":bgColor;
}
/**
* @param string
*/
public void setBgColor(String string) {
bgColor = string;
}
/**
* @return String
*/
public String getTitle() {
return title;
}
/**
* @param string
*/
public void setTitle(String string) {
title = string;
}
/**
* Description:
* @return
* String
*/
public String getWidth() {
return width;
}
/**
* Description:
* @param string
* void
*/
public void setWidth(String string) {
width = string;
}
/**
* @return Returns the className.
*/
public String getClassName() {
return className;
}
/**
* @param className The className to set.
*/
public void setClassName(String className) {
this.className = className;
}
/**
* @return Returns the align.
*/
public String getAlign() {
return align;
}
/**
* @param align The align to set.
*/
public void setAlign(String align) {
this.align = align;
}
/**
* @return Returns the nowrap.
*/
public boolean isNowrap() {
return nowrap;
}
/**
* @param nowrap The nowrap to set.
*/
public void setNowrap(boolean nowrap) {
this.nowrap = nowrap;
}
/**
* @return Returns the colspan.
*/
public int getColspan() {
return colspan;
}
/**
* @param colspan The colspan to set.
*/
public void setColspan(int colspan) {
this.colspan = colspan;
}
/**
* @return Returns the colName.
*/
public String getColName() {
return colName;
}
/**
* @param colName The colName to set.
*/
public void setColName(String colName) {
this.colName = colName;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getTitlecode() {
return titlecode;
}
public void setTitlecode(String titlecode) {
this.titlecode = titlecode;
}
public String getExtend() {
return extend;
}
public void setExtend(String extend) {
this.extend = extend;
}
public int getRowspan() {
return rowspan;
}
public void setRowspan(int rowspan) {
this.rowspan = rowspan;
}
@Override
public void doFinally() {
bgColor = "#8da6c4";
title = null;
this.titlecode = null;
sort = false;
colid = -1;
className = null;
align = null;
nowrap = false;
colspan = 0;
width = null;
pageItems = 0;
colName = null;
extend = null;
rowspan = 0;
type = "th";
this.pagerContext = null;
this.fieldHelper = null;
this.desc = null;
super.doFinally();
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}