]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/AbstractDataPart.java
Refactor SWT UX.
[lgpl/argeo-commons.git] / org.argeo.cms.ux / src / org / argeo / cms / ux / widgets / AbstractDataPart.java
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 (file)
index 0000000..958fcde
--- /dev/null
@@ -0,0 +1,61 @@
+package org.argeo.cms.ux.widgets;
+
+import java.util.IdentityHashMap;
+import java.util.function.Consumer;
+
+public abstract class AbstractDataPart<INPUT, T> implements DataPart<INPUT, T> {
+
+       private Consumer<T> onSelected;
+       private Consumer<T> onAction;
+
+       private IdentityHashMap<DataView<INPUT, T>, 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<T> onSelected) {
+               this.onSelected = onSelected;
+       }
+
+       @Override
+       public void onAction(Consumer<T> onAction) {
+               this.onAction = onAction;
+       }
+
+       public Consumer<T> getOnSelected() {
+               return onSelected;
+       }
+
+       public Consumer<T> getOnAction() {
+               return onAction;
+       }
+
+       @Override
+       public void refresh() {
+               for (DataView<INPUT, T> view : views.keySet()) {
+                       view.refresh();
+               }
+       }
+
+       @Override
+       public void addView(DataView<INPUT, T> view) {
+               views.put(view, new Object());
+       }
+
+       @Override
+       public void removeView(DataView<INPUT, T> view) {
+               views.remove(view);
+       }
+
+}