-
Notifications
You must be signed in to change notification settings - Fork 188
/
PageSizePopover.java
111 lines (88 loc) · 3.66 KB
/
PageSizePopover.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package com.evolveum.midpoint.web.component.data;
import com.evolveum.midpoint.web.component.AjaxSubmitButton;
import com.evolveum.midpoint.web.component.util.SimplePanel;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.web.util.SearchFormEnterBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.IModel;
import org.apache.wicket.validation.validator.RangeValidator;
/**
* @author lazyman
*/
public class PageSizePopover extends SimplePanel {
private static final String ID_POP_BUTTON = "popButton";
private static final String ID_POPOVER = "popover";
private static final String ID_FORM = "form";
private static final String ID_INPUT = "input";
private static final String ID_BUTTON = "button";
public PageSizePopover(String id) {
super(id);
setRenderBodyOnly(true);
}
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
StringBuilder sb = new StringBuilder();
sb.append("initPageSizePopover('").append(get(ID_POP_BUTTON).getMarkupId());
sb.append("','").append(get(ID_POPOVER).getMarkupId());
sb.append("');");
response.render(OnDomReadyHeaderItem.forScript(sb.toString()));
}
@Override
protected void initLayout() {
Button popButton = new Button(ID_POP_BUTTON);
popButton.setOutputMarkupId(true);
add(popButton);
WebMarkupContainer popover = new WebMarkupContainer(ID_POPOVER);
popover.setOutputMarkupId(true);
add(popover);
Form form = new Form(ID_FORM);
popover.add(form);
AjaxSubmitButton button = new AjaxSubmitButton(ID_BUTTON) {
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
super.onError(target, form);
target.add(getPageBase().getFeedbackPanel());
}
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
super.onSubmit(target, form);
pageSizeChanged(target);
}
};
form.add(button);
TextField input = new TextField(ID_INPUT, createInputModel());
input.add(new RangeValidator(5, 50));
input.setLabel(createStringResource("PageSizePopover.title"));
input.add(new SearchFormEnterBehavior(button));
input.setType(Integer.class);
form.add(input);
}
private IModel<Integer> createInputModel() {
return new IModel<Integer>() {
@Override
public Integer getObject() {
TablePanel tablePanel = findParent(TablePanel.class);
UserProfileStorage.TableId tableId = tablePanel.getTableId();
return getPageBase().getSessionStorage().getUserProfile().getPagingSize(tableId);
}
@Override
public void setObject(Integer o) {
TablePanel tablePanel = findParent(TablePanel.class);
UserProfileStorage.TableId tableId = tablePanel.getTableId();
getPageBase().getSessionStorage().getUserProfile().setPagingSize(tableId, o);
}
@Override
public void detach() {
}
};
}
protected void pageSizeChanged(AjaxRequestTarget target) {
}
}