📄 webtable.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 + -