View Javadoc

1   /*
2    * PageableTableModelDataImpl.java
3    * Created on 26 Август 2006 г., 18:01
4    */
5   
6   package org.weda.model.impl;
7   
8   import org.weda.NamedObject;
9   import org.weda.enhance.Cache;
10  import org.weda.model.PageableTableModel;
11  import org.weda.model.PageableTableModelData;
12  import org.weda.model.TableModelData;
13  import org.weda.model.TableModelException;
14  
15  /**
16   *
17   * @author Mikhail Titov
18   */
19  public class PageableTableModelDataImpl 
20          implements PageableTableModelData, NamedObject
21  {    
22      private PageableTableModel model;
23      private TableModelData linkedModelData;    
24      @Cache()
25      private Integer pageNumber;
26      private int tempPageNumber;
27      private int pageSize;
28      
29      public PageableTableModelDataImpl(
30              PageableTableModel model, TableModelData linkedModelData) 
31      {
32          this.model = model;
33          this.linkedModelData = linkedModelData;        
34          pageSize = model.getPageSize();
35      }
36      
37      public void init() throws TableModelException {
38          if (pageNumber==null)
39              pageNumber=0;
40          else if (pageNumber>=getPageCount()-1)
41              pageNumber = getPageCount()==0? 0 : getPageCount()-1;
42          tempPageNumber = pageNumber;
43      }
44  
45      public void setPageNumber(int pageNumber) throws TableModelException {
46          if (pageNumber+1 > getPageCount())
47              pageNumber = getPageCount()==0 ? 0 : getPageCount()-1;
48          else if (pageNumber < 0)
49              pageNumber = 0;
50          this.pageNumber = pageNumber;
51          tempPageNumber = pageNumber;
52      }
53  
54      public void selectRow(int row) {
55          linkedModelData.selectRow(translateRow(row));
56      }
57  
58      public boolean isRowSelected(int row) {
59          return linkedModelData.isRowSelected(translateRow(row));
60      }
61  
62      public Object getSummaryValueAt(int col) throws TableModelException {
63          return linkedModelData.getSummaryValueAt(col);
64      }
65  
66      public void deselectRow(int row) {
67          linkedModelData.deselectRow(translateRow(row));
68      }
69  
70      public Object getValueAt(int row, int col) throws TableModelException {
71          return linkedModelData.getValueAt(translateRow(row), col);
72      }
73  
74      public int getSelectedRow() {
75          return linkedModelData.getSelectedRow();
76      }
77  
78      public int getRowCount() throws TableModelException {
79          if (tempPageNumber >= getPageCount()-1)
80              return linkedModelData.getRowCount()-tempPageNumber*pageSize;
81          else
82              return pageSize;
83      }
84  
85      public int getPageNumber() {
86          return pageNumber;
87      }
88  
89      public int getPageCount() throws TableModelException {
90          int rc = linkedModelData.getRowCount();
91          return rc == 0? 0 : (rc-1)/model.getPageSize()+1;
92      }
93  
94      public String getObjectName() {
95          return model.getName();
96      }
97      
98      private final int translateRow(int row){
99          return tempPageNumber*pageSize+row;
100     }
101 
102     public boolean hasSummaryRow() throws TableModelException {
103         return 
104                linkedModelData.hasSummaryRow() 
105             && tempPageNumber+1==getPageCount();
106     }    
107 
108     public TableModelData getLinkedTableModelData() {
109         return linkedModelData;
110     }
111 
112     public int getSelectedRowCount() {
113         return linkedModelData.getSelectedRowCount();
114     }
115 }