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

📄 abstracttablemodel.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 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 + -