X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.cms.ux%2Fsrc%2Forg%2Fargeo%2Fcms%2Fux%2Fwidgets%2FAbstractDataPart.java;fp=org.argeo.cms.ux%2Fsrc%2Forg%2Fargeo%2Fcms%2Fux%2Fwidgets%2FAbstractDataPart.java;h=958fcde6a32d1fad4306c51753fbd49b5eb4e226;hb=43dc6cd030cab486347ffef4d339406bee7a8dec;hp=0000000000000000000000000000000000000000;hpb=54dac5debb27cc585200b3117b99f3de0015efef;p=lgpl%2Fargeo-commons.git
diff --git a/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/AbstractDataPart.java b/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/AbstractDataPart.java
new file mode 100644
index 000000000..958fcde6a
--- /dev/null
+++ b/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/AbstractDataPart.java
@@ -0,0 +1,61 @@
+package org.argeo.cms.ux.widgets;
+
+import java.util.IdentityHashMap;
+import java.util.function.Consumer;
+
+public abstract class AbstractDataPart implements DataPart {
+
+ private Consumer onSelected;
+ private Consumer onAction;
+
+ private IdentityHashMap, Object> views = new IdentityHashMap<>();
+
+ private INPUT data;
+
+ @Override
+ public void setInput(INPUT data) {
+ this.data = data;
+ refresh();
+ }
+
+ @Override
+ public INPUT getInput() {
+ return data;
+ }
+
+ @Override
+ public void onSelected(Consumer onSelected) {
+ this.onSelected = onSelected;
+ }
+
+ @Override
+ public void onAction(Consumer onAction) {
+ this.onAction = onAction;
+ }
+
+ public Consumer getOnSelected() {
+ return onSelected;
+ }
+
+ public Consumer getOnAction() {
+ return onAction;
+ }
+
+ @Override
+ public void refresh() {
+ for (DataView view : views.keySet()) {
+ view.refresh();
+ }
+ }
+
+ @Override
+ public void addView(DataView view) {
+ views.put(view, new Object());
+ }
+
+ @Override
+ public void removeView(DataView view) {
+ views.remove(view);
+ }
+
+}