1 package org.weda.model.actions;
2
3 import org.weda.action.Action;
4 import org.weda.action.ActionContainer;
5 import org.weda.action.ActionState;
6 import org.weda.action.Parameter;
7 import org.weda.action.Parameter.Direction;
8 import org.weda.model.PageableTableModel;
9 import org.weda.model.PageableTableModelData;
10 import org.weda.model.TableModel;
11 import org.weda.model.TableModelData;
12 import org.weda.store.ObjectSource;
13 import org.weda.action.impl.AbstractAction;
14 import org.weda.action.impl.ActionStateImpl;
15
16 /**Цель: переход на произвольную страницу
17 *
18 * @author tim
19 */
20 public class PageableTableModelGoToPageAction extends AbstractAction {
21 private int pageNumber;
22 private String pageAndRowCount;
23
24 public ActionState getActionState(ActionContainer targetObject)
25 throws Exception
26 {
27 PageableTableModel model = (PageableTableModel)targetObject;
28 if (model.getMode()==TableModel.Mode.VIEW){
29 PageableTableModelData data = model.getData();
30 TableModelData linkedData = data.getLinkedTableModelData();
31 pageNumber = data.getPageNumber()+1;
32 pageAndRowCount=
33 String.format(
34 "(%d/%d/%d)"
35 , linkedData.getRowCount()
36 , linkedData.getSelectedRowCount()
37 , data.getPageCount());
38 return new ActionStateImpl(true, data.getPageCount()>1);
39 }
40 return new ActionStateImpl(true, false);
41 }
42
43 public Object execute(ActionContainer targetObject) throws Exception {
44 PageableTableModel model = (PageableTableModel)targetObject;
45 model.getData().setPageNumber(pageNumber-1);
46 return null;
47 }
48
49 @Parameter(direction=Direction.READ_WRITE)
50 public Integer getPageNumber() {
51 return pageNumber;
52 }
53
54 public void setPageNumber(Integer pageNumber) {
55 this.pageNumber = pageNumber;
56 }
57
58 @Parameter(direction=Direction.READ)
59 public String getPageAndRowCount() {
60 return pageAndRowCount;
61 }
62
63 }