]> git.argeo.org Git - lgpl/argeo-commons.git/blob - AbstractDataPart.java
958fcde6a32d1fad4306c51753fbd49b5eb4e226
[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, 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 @Override
52 public void addView(DataView<INPUT, T> view) {
53 views.put(view, new Object());
54 }
55
56 @Override
57 public void removeView(DataView<INPUT, T> view) {
58 views.remove(view);
59 }
60
61 }