From: Mathieu Baudier Date: Mon, 24 Oct 2022 06:35:40 +0000 (+0200) Subject: Improve UX part framework X-Git-Tag: v2.3.10~1 X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=commitdiff_plain;h=1afc194a1c02c9b1287ae7b319f831792fe96e8d Improve UX part framework --- 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 index 958fcde6a..49856efb5 100644 --- 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 @@ -48,6 +48,12 @@ public abstract class AbstractDataPart implements DataPart { } } + protected void notifyItemCountChange() { + for (DataView view : views.keySet()) { + view.notifyItemCountChange(); + } + } + @Override public void addView(DataView view) { views.put(view, new Object()); diff --git a/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/AbstractTabularPart.java b/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/AbstractTabularPart.java index 7e63ea85b..400f9c885 100644 --- a/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/AbstractTabularPart.java +++ b/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/AbstractTabularPart.java @@ -14,6 +14,7 @@ public abstract class AbstractTabularPart extends AbstractDataPart column) { columns.add(column); } diff --git a/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/Column.java b/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/Column.java index 973fddb5a..9ee141c90 100644 --- a/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/Column.java +++ b/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/Column.java @@ -2,6 +2,8 @@ package org.argeo.cms.ux.widgets; import org.argeo.api.cms.ux.CmsIcon; +/** A column in a data representation. */ +@FunctionalInterface public interface Column { String getText(T model); diff --git a/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/DataView.java b/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/DataView.java index 9768c68ec..311cf924e 100644 --- a/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/DataView.java +++ b/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/DataView.java @@ -2,4 +2,6 @@ package org.argeo.cms.ux.widgets; public interface DataView { void refresh(); + + void notifyItemCountChange(); } diff --git a/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/HierarchicalPart.java b/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/HierarchicalPart.java index 372c295dc..1f42c6aa5 100644 --- a/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/HierarchicalPart.java +++ b/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/HierarchicalPart.java @@ -4,6 +4,7 @@ import java.util.List; import org.argeo.api.cms.ux.CmsIcon; +/** A hierarchical representation of data. */ public interface HierarchicalPart extends ColumnsPart { List getChildren(T parent); diff --git a/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/TabularPart.java b/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/TabularPart.java index 6adc0c3e6..2ed077c42 100644 --- a/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/TabularPart.java +++ b/org.argeo.cms.ux/src/org/argeo/cms/ux/widgets/TabularPart.java @@ -1,5 +1,6 @@ package org.argeo.cms.ux.widgets; +/** A tabular presentation of data. */ public interface TabularPart extends ColumnsPart { int getItemCount(); @@ -7,5 +8,7 @@ public interface TabularPart extends ColumnsPart { Column getColumn(int index); + void addColumn(Column column); + int getColumnCount(); } diff --git a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/AbstractSwtView.java b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/AbstractSwtView.java index efdc45a8a..e3a268153 100644 --- a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/AbstractSwtView.java +++ b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/AbstractSwtView.java @@ -3,6 +3,7 @@ package org.argeo.cms.swt.widgets; import org.argeo.cms.swt.CmsSwtUtils; import org.argeo.cms.ux.widgets.DataPart; import org.argeo.cms.ux.widgets.DataView; +import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.widgets.Composite; @@ -16,8 +17,8 @@ public abstract class AbstractSwtView extends Composite implements protected final SelectionListener selectionListener; @SuppressWarnings("unchecked") - public AbstractSwtView(Composite parent, int style, DataPart dataPart) { - super(parent, style); + public AbstractSwtView(Composite parent, DataPart dataPart) { + super(parent, SWT.NONE); setLayout(CmsSwtUtils.noSpaceGridLayout()); this.dataPart = dataPart; diff --git a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTableView.java b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTableView.java index b136f36e1..a58a5a478 100644 --- a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTableView.java +++ b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTableView.java @@ -22,10 +22,10 @@ public class SwtTableView extends AbstractSwtView { private CmsSwtTheme theme; public SwtTableView(Composite parent, int style, TabularPart tabularPart) { - super(parent, style, tabularPart); + super(parent, tabularPart); theme = CmsSwtUtils.getCmsTheme(parent); - table = new Table(this, SWT.VIRTUAL | SWT.BORDER); + table = new Table(this, SWT.VIRTUAL | style); table.setLinesVisible(true); table.setLayoutData(CmsSwtUtils.fillAll()); @@ -75,6 +75,11 @@ public class SwtTableView extends AbstractSwtView { } } + @Override + public void notifyItemCountChange() { + table.setItemCount(tabularPart.getItemCount()); + } + protected Table getTable() { return table; } diff --git a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTreeView.java b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTreeView.java index 79543e9f8..a0ac24836 100644 --- a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTreeView.java +++ b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/widgets/SwtTreeView.java @@ -22,10 +22,10 @@ public class SwtTreeView extends AbstractSwtView { private CmsSwtTheme theme; public SwtTreeView(Composite parent, int style, HierarchicalPart hierarchicalPart) { - super(parent, style, hierarchicalPart); + super(parent, hierarchicalPart); theme = CmsSwtUtils.getCmsTheme(parent); - tree = new Tree(this, SWT.BORDER); + tree = new Tree(this, style); tree.setLayoutData(CmsSwtUtils.fillAll()); this.hierarchicalPart = hierarchicalPart; @@ -82,6 +82,14 @@ public class SwtTreeView extends AbstractSwtView { new TreeItem(item, SWT.NONE); return item; } + + + + @Override + public void notifyItemCountChange() { + // TODO what to update ? + + } protected Tree getTree() { return tree;