1
2
3
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 }