⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webtable.java

📁 struts 2 核心包 的源码 有错误是难免的
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   WebTable.java

package org.apache.struts2.components.table;

import com.opensymphony.xwork2.util.ValueStack;
import java.io.Writer;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.table.TableModel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.StrutsException;
import org.apache.struts2.components.GenericUIBean;
import org.apache.struts2.components.table.renderer.CellRenderer;

// Referenced classes of package org.apache.struts2.components.table:
//			SortableTableModel, WebTableColumn, SortFilterModel

public class WebTable extends GenericUIBean
{
	public class WebTableRowIterator
		implements Iterator
	{

		public static final int FORMATTED_DATA = 0;
		public static final int RAW_DATA = 1;
		protected WebTable _table;
		protected int _curRow;
		protected int _mode;
		final WebTable this$0;

		public boolean hasNext()
		{
			if (_table == null)
				return false;
			else
				return _table.getRowCount() > _curRow;
		}

		public Object next()
			throws NoSuchElementException
		{
			if (_table == null)
				throw new NoSuchElementException("WebTable is null");
			if (!hasNext())
				throw new NoSuchElementException("Beyond end of WebTable");
			if (_mode == 1)
				return ((Object) (_table.getRow(_curRow++)));
			else
				return _table.getFormattedRow(_curRow++);
		}

		public void remove()
			throws UnsupportedOperationException, IllegalStateException
		{
			throw new UnsupportedOperationException("Remove not supported in WebTable");
		}

		protected WebTableRowIterator(WebTable table)
		{
			this(table, 0);
		}

		protected WebTableRowIterator(WebTable table, int mode)
		{
			this$0 = WebTable.this;
			super();
			_curRow = 0;
			_mode = 0;
			_table = table;
			_mode = mode;
		}
	}


	private static final Log LOG = LogFactory.getLog(org/apache/struts2/components/table/WebTable);
	public static final String TEMPLATE = "table";
	protected String sortOrder;
	protected String modelName;
	protected TableModel model;
	protected WebTableColumn columns[];
	protected boolean sortableAttr;
	protected int sortColumn;
	protected int curRow;

	public WebTable(ValueStack stack, HttpServletRequest request, HttpServletResponse response)
	{
		super(stack, request, response);
		sortOrder = "NONE";
		modelName = null;
		model = null;
		columns = null;
		sortableAttr = false;
		sortColumn = -1;
		curRow = 0;
	}

	protected String getDefaultTemplate()
	{
		return "table";
	}

	public boolean end(Writer writer, String body)
	{
		if (sortableAttr && (model instanceof SortableTableModel))
		{
			LOG.debug((new StringBuilder()).append("we are looking for ").append(getSortColumnLinkName()).toString());
			String sortColumn = request.getParameter(getSortColumnLinkName());
			String sortOrder = request.getParameter(getSortOrderLinkName());
			try
			{
				if (sortColumn != null || sortOrder != null)
				{
					if (sortColumn != null)
						try
						{
							this.sortColumn = Integer.parseInt(sortColumn);
						}
						catch (Exception ex)
						{
							if (LOG.isDebugEnabled())
								LOG.debug("coudn't convert column, take default");
						}
					if (sortOrder != null)
						this.sortOrder = sortOrder;
				} else
				{
					LOG.debug("no sorting info in the request");
				}
				if (this.sortColumn >= 0)
				{
					LOG.debug((new StringBuilder()).append("we have the sortColumn ").append(Integer.toString(this.sortColumn)).toString());
					LOG.debug((new StringBuilder()).append("we have the sortOrder ").append(this.sortOrder).toString());
					try
					{
						((SortableTableModel)model).sort(this.sortColumn, this.sortOrder);
					}
					catch (Exception ex)
					{
						if (LOG.isDebugEnabled())
							LOG.debug("couldn't sort the data");
					}
					LOG.debug("we just sorted the data");
				}
			}
			catch (Exception e)
			{
				throw new StrutsException((new StringBuilder()).append("Error with WebTable: ").append(toString(e)).toString(), e);
			}
		}
		return super.end(writer, body);
	}

	public WebTableColumn getColumn(int index)
	{
		return columns[index];
		Exception E;
		E;
		return null;
	}

	protected void evaluateExtraParams()
	{
		if (modelName != null)
		{
			modelName = findString(modelName);
			Object obj = stack.findValue(modelName);
			if (obj instanceof TableModel)
				setModel((TableModel)obj);
		}
		super.evaluateExtraParams();
	}

	protected int getNumberOfVisibleColumns()
	{
		int count = 0;
		for (int i = 0; i < columns.length; i++)
			if (!columns[i].isHidden())
				count++;

		return count;
	}

	public int getColumnCount()
	{
		return columns.length;
	}

	public void setColumnDisplayName(int column, String displayName)
	{
		columns[column].setDisplayName(displayName);
	}

	public void getColumnDisplayName(int column)
	{
		columns[column].getDisplayName();
	}

	public void setColumnHidden(int column, boolean hide)
	{
		columns[column].setHidden(hide);
	}

	public boolean isColumnHidden(int column)
	{
		return columns[column].isHidden();
	}

	public void setColumnRenderer(int column, CellRenderer renderer)
	{
		columns[column].setRenderer(renderer);
	}

	public CellRenderer getColumnRenderer(int column)
	{
		return columns[column].getRenderer();
	}

	public WebTableColumn[] getColumns()
	{
		return columns;
	}

	public String[] getFormattedRow(int row)
	{
		ArrayList data = new ArrayList(getNumberOfVisibleColumns());
		for (int i = 0; i < getColumnCount(); i++)
			if (columns[i].isVisible())
				data.add(columns[i].getRenderer().renderCell(this, model.getValueAt(row, i), row, i));

		return (String[])(String[])data.toArray(new String[0]);
	}

	public void setModel(TableModel model)
	{
		this.model = model;
		columns = new WebTableColumn[this.model.getColumnCount()];
		for (int i = 0; i < columns.length; i++)
			columns[i] = new WebTableColumn(this.model.getColumnName(i), i);

		if (sortableAttr && !(this.model instanceof SortableTableModel))
			this.model = new SortFilterModel(this.model);
	}

	public TableModel getModel()
	{
		return model;
	}

	public void setModelName(String modelName)
	{
		this.modelName = modelName;
	}

	public String getModelName()
	{
		return modelName;
	}

	public Object getRawData(int row, int column)
	{
		return model.getValueAt(row, column);
	}

	public Iterator getRawDataRowIterator()
	{
		return new WebTableRowIterator(this, 1);
	}

	public Object[] getRow(int row)
	{
		ArrayList data = new ArrayList(getNumberOfVisibleColumns());
		for (int i = 0; i < getColumnCount(); i++)
			if (columns[i].isVisible())
				data.add(model.getValueAt(row, i));

		return data.toArray(new Object[0]);
	}

	public int getRowCount()
	{
		return model.getRowCount();
	}

	public Iterator getRowIterator()
	{
		return new WebTableRowIterator(this);
	}

	public void setSortColumn(int sortColumn)
	{
		this.sortColumn = sortColumn;
	}

	public int getSortColumn()
	{
		if (model instanceof SortableTableModel)
			return ((SortableTableModel)model).getSortedColumnNumber();
		else
			return -1;
	}

	public String getSortColumnLinkName()
	{
		return (new StringBuilder()).append("WEBTABLE_").append(modelName).append("_SORT_COLUMN").toString();
	}

	public void setSortOrder(String sortOrder)
	{
		if (sortOrder.equals("NONE"))
			this.sortOrder = "NONE";
		else
		if (sortOrder.equals("DESC"))
			this.sortOrder = "DESC";
		else
		if (sortOrder.equals("ASC"))
			this.sortOrder = "ASC";
		else
			this.sortOrder = "NONE";
	}

	public String getSortOrder()
	{
		if ((model instanceof SortableTableModel) && getSortColumn() >= 0)
			return ((SortableTableModel)model).getSortedDirection(getSortColumn());
		else
			return "NONE";
	}

	public String getSortOrderLinkName()
	{
		return (new StringBuilder()).append("WEBTABLE_").append(modelName).append("_SORT_ORDER").toString();
	}

	public void setSortable(boolean sortable)
	{
		sortableAttr = sortable;
		if (sortableAttr && model != null && !(model instanceof SortableTableModel))
			model = new SortFilterModel(model);
	}

	public boolean isSortable()
	{
		return sortableAttr;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -