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