]> git.argeo.org Git - lgpl/argeo-commons.git/blob - ux/widgets/AbstractDataPart.java
Prepare next development cycle
[lgpl/argeo-commons.git] / ux / widgets / AbstractDataPart.java
1 package org.argeo.cms.ux.widgets;
2
3 import java.util.IdentityHashMap;
4 import java.util.function.Consumer;
5
6 public abstract class AbstractDataPart<INPUT, T> implements DataPart<INPUT, T> {
7
8 private Consumer<T> onSelected;
9 private Consumer<T> onAction;
10
11 private IdentityHashMap<DataView<INPUT, T>, Object> views = new IdentityHashMap<>();
12
13 private INPUT data;
14
15 @Override
16 public void setInput(INPUT data) {
17 this.data = data;
18 refresh();
19 }
20
21 @Override
22 public INPUT getInput() {
23 return data;
24 }
25
26 @Override
27 public void onSelected(Consumer<T> onSelected) {
28 this.onSelected = onSelected;
29 }
30
31 @Override
32 public void onAction(Consumer<T> onAction) {
33 this.onAction = onAction;
34 }
35
36 public Consumer<T> getOnSelected() {
37 return onSelected;
38 }
39
40 public Consumer<T> getOnAction() {
41 return onAction;
42 }
43
44 @Override
45 public void refresh() {
46 for (DataView<INPUT, T> view : views.keySet()) {
47 view.refresh();
48 }
49 }
50
51 protected void notifyItemCountChange() {
52 for (DataView<INPUT, T> view : views.keySet()) {
53 view.notifyItemCountChange();
54 }
55 }
56
57 @Override
58 public void addView(DataView<INPUT, T> view) {
59 views.put(view, new Object());
60 }
61
62 @Override
63 public void removeView(DataView<INPUT, T> view) {
64 views.remove(view);
65 }
66
67 }