]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/DefaultTabularPart.java
Refactor SWT UX.
[lgpl/argeo-commons.git] / org.argeo.cms.ux / src / org / argeo / cms / ux / widgets / DefaultTabularPart.java
diff --git a/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/DefaultTabularPart.java b/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/DefaultTabularPart.java
new file mode 100644 (file)
index 0000000..cb30af6
--- /dev/null
@@ -0,0 +1,46 @@
+package org.argeo.cms.ux.widgets;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DefaultTabularPart<INPUT, T> extends AbstractTabularPart<INPUT, T> implements TabularPart<INPUT, T> {
+       private List<T> content;
+
+       @Override
+       public int getItemCount() {
+               return content.size();
+       }
+
+       @Override
+       public T getData(int row) {
+               assert row < getItemCount();
+               return content.get(row);
+       }
+
+       @Override
+       public void refresh() {
+               INPUT input = getInput();
+               if (input == null) {
+                       content = new ArrayList<>();
+                       return;
+               }
+               content = asList(input);
+               super.refresh();
+       }
+
+       protected List<T> asList(INPUT input) {
+               List<T> res = new ArrayList<>();
+               content.clear();
+               if (input instanceof List) {
+                       content = (List<T>) input;
+               } else if (input instanceof Iterable) {
+                       for (T item : (Iterable<T>) input)
+                               content.add(item);
+               } else {
+                       throw new IllegalArgumentException(
+                                       "Unsupported class " + input.getClass() + ", method should be overridden.");
+               }
+               return res;
+       }
+
+}