package cn.pdsu;

import java.util.List;


/**
 * 类说明:页码显示效果类 。1:TextModel “第一页 上一页 下一页 最后一页”;2:NumModel “第一页 2 3 4 最后一页”;
 * 
 * @author 作者: LiuJunGuang
 * @version 创建时间:2011-11-9 下午04:09:22
 */
public class PageModel<T> {
	/**
	 * 文本类型:形如:“第一页 上一页 下一页 最后一页”
	 */
	public static final int TEXT_MODEL = 1;

	/**
	 * 数字类型:形如:NumModel “第一页 2 3 4 最后一页”
	 */
	public static final int NUM_MODEL = 2;
	/**
	 * 页码显示模型
	 */
	private int model = 1;
	/**
	 * 页码连接URL,不需要添加页码参数
	 */
	private String url;
	/**
	 * 页码信息的封装
	 */
	private Page page = null;
	/**
	 * 模型类型的页码
	 */
	private StringBuffer strHtml = null;

	/**
	 * 数字类型的页码模型中间数字显示个数,例如:第一页 1 2 3 4 5 最后一页,numCount = 5; 默认显示 5个数字
	 */
	private int numCount = 5;

	/**
	 * 页码的模式默认的文字类型的样式
	 * 
	 * @param page
	 *            页面信息
	 * @param url
	 *            页面的url地址
	 */
	public PageModel(Page page, String url) {
		super();
		this.url = url;
		this.page = page;
	}

	/**
	 * 页码的模型
	 * 
	 * @param page
	 *            页面信息
	 * @param url
	 *            页面的url地址
	 * @param model
	 *            页码的显示样式
	 */
	public PageModel(Page page, String url, int model) {
		super();
		this.model = model;
		this.url = url;
		this.page = page;
	}

	/**
	 * 页码的模型
	 * 
	 * @param page
	 *            页面信息
	 * @param url
	 *            页面的url地址
	 * @param model
	 *            页码的显示样式
	 * @param numCount
	 *            数字类型的页码,共显示的个数
	 */
	public PageModel(Page page, String url, int model, int numCount) {
		super();
		this.model = model;
		this.url = url;
		this.page = page;
		this.numCount = numCount;
	}

	/**
	 * 返回页面的模型
	 * 
	 * @return
	 */
	public String getPageModel() {
		// 组装页码模型
		createURL();
		return createModel();
	}

	/**
	 * 构建URL
	 */
	private void createURL() {
		url = url.contains("?") ? url + "&page=" : url + "?page=";
	}

	/**
	 * 组装页码模型
	 */
	private String createModel() {
		strHtml = new StringBuffer();
		switch (model) {
		case TEXT_MODEL:// 文本模型
			buildTextModel();
			break;
		case NUM_MODEL:// 数字模型
			buildNumModel();
			break;
		default:// 文本模型
			buildTextModel();
			break;
		}
		return strHtml.toString();
	}

	/**
	 * 组件数字类型的页码模型
	 */
	private void buildNumModel() {
		int currentPage = page.getCurrentPage();
		int countPage = page.getCountPage();
		strHtml.append(
				"<table width='100%'  border='0' cellspacing='0' cellpadding='0'>")
				.append("<tr><td height='24' align='center'>");
		// 构造格式:第一页 1 2 3 4 5 最后一页
		PageIndex pageIndex = PageIndex.getPageIndex(numCount, currentPage,
				countPage);
		// 不是第一页时,显示首页
		if (currentPage > 1) {
			strHtml.append("<a href='").append(url)
					.append("1'>首页</a>&nbsp;&nbsp;");
		}
		if (currentPage <= countPage) {
			for (int i = pageIndex.getStartIndex(); i <= pageIndex
					.getEndIndex(); i++) {
				// 当前页加粗
				if (currentPage == i) {
					strHtml.append("<b>").append(i).append("</b>&nbsp;&nbsp;");
				} else {
					strHtml.append("<a href='").append(url).append(i)
							.append("'>").append(i).append("</a>&nbsp;&nbsp;");
				}
			}
			// 不是最后一页显示末页
			if (currentPage < countPage) {
				strHtml.append("<a href='").append(url).append(countPage)
						.append("'>末页</a>");
			}
		}
		strHtml.append("</td></tr></table>");
	}

	/**
	 * 组件文本类型的页码
	 */
	private void buildTextModel() {
		int currentPage = page.getCurrentPage();
		int countPage = page.getCountPage();
		strHtml.append(
				"<table width='100%'  border='0' cellspacing='0' cellpadding='0'>")
				.append("<tr> <td height='24' align='center'>当前页数:[")
				.append(currentPage).append("/").append(countPage)
				.append("]&nbsp;&nbsp;");
		if (currentPage > 1) {
			strHtml.append("<a href='").append(url).append("1'>首页</a>")
					.append("&nbsp;&nbsp;<a href='").append(url)
					.append(currentPage - 1).append("'>上一页</a>");
		}
		if (currentPage < countPage) {
			strHtml.append("&nbsp;&nbsp;<a href='").append(url)
					.append(currentPage + 1)
					.append("'>下一页</a>&nbsp;&nbsp;<a href='").append(url)
					.append(countPage).append("'>末页</a>");
		}
		strHtml.append("</td></tr></table>");
	}

	public List<T> getList() {
		return page.getList();
	}
}
最近下载更多
asddwh  LV12 2023年12月29日
wuge123  LV8 2023年6月12日
1719863922  LV11 2022年6月17日
刚刚vv谭v  LV4 2022年1月4日
微信网友_5768552477921280  LV6 2022年1月2日
17771013609  LV4 2021年12月31日
fesdfs  LV1 2021年12月20日
3089559272  LV11 2021年12月17日
龙门客栈  LV9 2021年12月16日
 LV5 2021年12月15日
最近浏览更多
沈从文  LV2 2023年12月31日
asddwh  LV12 2023年12月25日
wodewode  LV1 2023年12月23日
微信网友_6786215447367680  LV4 2023年12月23日
好哇好哇还是 2023年12月20日
暂无贡献等级
颜菜菜  LV2 2023年12月19日
fff2003  LV6 2023年11月20日
sunshine9920  LV12 2023年11月7日
卢本伟不开挂  LV4 2023年10月22日
zdfxcv  LV1 2023年10月14日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友