📄 abstracttablemodel.java
字号:
package com.esri.solutions.jitk.web.data.results;
import java.util.ArrayList;
import java.util.EventListener;
import java.util.List;
/**
* This class is an implementation of <code>TableModel</code> that wraps
* an <code>java.util.List</code> of Java objects.
*
* @author Carsten Piepel
*
* @see java.util.List
*/
public abstract class AbstractTableModel extends RenderControlledResults implements TableModel {
/**
* The number of rows per page. If all rows
* will be displayed on one page, this variable will have the value
* <code>0</code>.
*/
protected int pageSize = 0;
/**
* The 0-based index of the currently selected page. If no <code>data</code>
* is available, this variable will have the value <code>-1</code>.
*/
protected int pageIndex = -1;
/**
* The list of registered {@link RowSelectionListener}s for this
* {@link TableModel}. This variable will be <code>null</code> unless
* there is at least one registered listener.
*/
@SuppressWarnings("unchecked")
protected List rowSelectionListeners = null;
/**
* The list of registered {@link PageChangeListener}s for this
* {@link TableModel}. This variable will be <code>null</code> unless
* there is at least one registered listener.
*/
@SuppressWarnings("unchecked")
protected List pageChangeListeners = null;
/**
* The list of registered {@link DataBindingListener}s for this
* {@link TableModel}. This variable will be <code>null</code> unless
* there is at least one registered listener.
*/
@SuppressWarnings("unchecked")
protected List dataBindingListeners = null;
/**
* Construct a new table model. This constructor calls
* <code>setData(null)</code>.
*/
public AbstractTableModel() {
setData(null);
}
public final int getPageCount() {
int rowCount = getRowCount();
if (pageSize > 0) {
int pageCount = rowCount/pageSize;
int remained = rowCount%pageSize;
if(remained >0)
pageCount = pageCount + 1;
return pageCount;
} else if (rowCount > 0){
return 1;
} else {
return 0;
}
}
public final int getPageIndex() {
return pageIndex;
}
public final void setPageIndex(int pageIndex) {
if (pageIndex < -1 && getData() == null) {
throw new IllegalArgumentException("pageIndex < -1");
}
if (getData() != null) {
if (pageIndex > 0 && pageIndex >= getPageCount()) {
throw new IllegalArgumentException("pageIndex >= pageCount");
}
}
int oldPageIndex = this.pageIndex;
this.pageIndex = pageIndex;
if (getData() != null) {
if (oldPageIndex != pageIndex) {
PageChangeEvent event = new PageChangeEvent(this, this.pageIndex);
firePageChangedEvent(event);
}
}
}
public final int getPageSize() {
return pageSize;
}
/**
* This method will update the current page index according to the new
* page size by calling <code>setPageIndex(int)</code>.
*/
public final void setPageSize(int pageSize) {
if (pageSize < 0) {
throw new IllegalArgumentException("pageSize < 0");
}
int oldPageSize = this.pageSize;
this.pageSize = pageSize;
if (oldPageSize != pageSize) {
pageIndex = 0;
PageChangeEvent event = new PageChangeEvent(this, this.pageIndex);
firePageChangedEvent(event);
}
}
public void addDataBindingListener(DataBindingListener listener) {
dataBindingListeners = addListener(listener, dataBindingListeners);
}
public void removeDataBindingListener(DataBindingListener listener) {
dataBindingListeners = removeListener(listener, dataBindingListeners);
}
public void addPageChangeListener(PageChangeListener listener) {
pageChangeListeners = addListener(listener, pageChangeListeners);
}
public void removePageChangeListener(PageChangeListener listener) {
pageChangeListeners = removeListener(listener, pageChangeListeners);
}
public void addRowSelectionListener(RowSelectionListener listener) {
rowSelectionListeners = addListener(listener, rowSelectionListeners);
}
public void removeRowSelectionListener(RowSelectionListener listener) {
rowSelectionListeners = removeListener(listener, rowSelectionListeners);
}
/**
* Generic method to add an event listener to a {@link java.util.List}.
* If the list is null, a new instance of {@link java.util.ArrayList} will
* be created.
*
* @return the list of listeners
*
* @throws java.lang.NullpointerException if the specified listener is null.
*/
@SuppressWarnings("unchecked")
protected List addListener(EventListener listener, List listeners) {
if (listener == null) {
throw new NullPointerException();
}
if (listeners == null) {
listeners = new ArrayList();
}
listeners.add(listener);
return listeners;
}
/**
* Generic method to remove an event listener from the specified list of
* listeners.
*
* <p/>
* If the specified list is null nothing happens.
*
* <p/>
* This method returns the specified list or null, if the list
* was empty after removing the listener.
*
* @return the list of listeners or null if the list was empty after
* removing the listener.
*
* @throws java.lang.NullpointerException if the specified listener is null.
*/
@SuppressWarnings("unchecked")
protected List removeListener(EventListener listener, List listeners) {
if (listener == null) {
throw new NullPointerException();
}
if (listeners != null) {
listeners.remove(listener);
if (listeners.size() == 0) {
listeners = null;
}
}
return listeners;
}
protected void firePageChangedEvent(PageChangeEvent event) {
if (pageChangeListeners != null) {
for (Object obj : pageChangeListeners) {
PageChangeListener listener = (PageChangeListener)obj;
listener.pageChanged(event);
}
}
}
protected void fireRowSelectedEvent(RowSelectionEvent event) {
if (rowSelectionListeners != null) {
for (Object obj : rowSelectionListeners) {
RowSelectionListener listener = (RowSelectionListener)obj;
listener.rowSelected(event);
}
}
}
protected void fireDataBoundEvent(DataBindingEvent event) {
if (dataBindingListeners != null) {
for (Object obj : dataBindingListeners) {
DataBindingListener listener = (DataBindingListener)obj;
listener.dataBound(event);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -