From d5e01888b4a367759aa7f399f7ecbcfaca3655e4 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sat, 17 Jun 2023 07:05:05 +0200 Subject: [PATCH] Improve Argeo Knowledge app. --- .../OSGI-INF/leadPane.xml | 3 +- .../OSGI-INF/spaceEntryArea.xml | 9 +++ .../OSGI-INF/structureLayer.xml | 10 ++++ .../OSGI-INF/swtArgeoApp.xml | 2 +- .../OSGI-INF/termsEntryArea.xml | 2 +- .../OSGI-INF/termsLayer.xml | 2 +- org.argeo.product.knowledge/bnd.bnd | 4 ++ .../config/spaceEntryArea.properties | 1 + .../config/structureLayer.properties | 6 ++ .../config/termsLayer.properties | 2 +- .../argeo/app/swt/space/SpaceEntryArea.java | 59 +++++++++++++++++++ .../argeo/app/swt/terms/TermsEntryArea.java | 2 +- 12 files changed, 96 insertions(+), 6 deletions(-) create mode 100644 org.argeo.product.knowledge/OSGI-INF/spaceEntryArea.xml create mode 100644 org.argeo.product.knowledge/OSGI-INF/structureLayer.xml create mode 100644 org.argeo.product.knowledge/config/spaceEntryArea.properties create mode 100644 org.argeo.product.knowledge/config/structureLayer.properties create mode 100644 swt/org.argeo.app.swt/src/org/argeo/app/swt/space/SpaceEntryArea.java diff --git a/org.argeo.product.knowledge/OSGI-INF/leadPane.xml b/org.argeo.product.knowledge/OSGI-INF/leadPane.xml index 968b65a..81a880c 100644 --- a/org.argeo.product.knowledge/OSGI-INF/leadPane.xml +++ b/org.argeo.product.knowledge/OSGI-INF/leadPane.xml @@ -6,7 +6,8 @@ - argeo.product.knowledge.termsLayer + argeo.product.knowledge.structureLayer +argeo.product.knowledge.termsLayer diff --git a/org.argeo.product.knowledge/OSGI-INF/spaceEntryArea.xml b/org.argeo.product.knowledge/OSGI-INF/spaceEntryArea.xml new file mode 100644 index 0000000..34f9278 --- /dev/null +++ b/org.argeo.product.knowledge/OSGI-INF/spaceEntryArea.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/org.argeo.product.knowledge/OSGI-INF/structureLayer.xml b/org.argeo.product.knowledge/OSGI-INF/structureLayer.xml new file mode 100644 index 0000000..68753f6 --- /dev/null +++ b/org.argeo.product.knowledge/OSGI-INF/structureLayer.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/org.argeo.product.knowledge/OSGI-INF/swtArgeoApp.xml b/org.argeo.product.knowledge/OSGI-INF/swtArgeoApp.xml index a278899..1d93582 100644 --- a/org.argeo.product.knowledge/OSGI-INF/swtArgeoApp.xml +++ b/org.argeo.product.knowledge/OSGI-INF/swtArgeoApp.xml @@ -1,5 +1,5 @@ - + diff --git a/org.argeo.product.knowledge/OSGI-INF/termsEntryArea.xml b/org.argeo.product.knowledge/OSGI-INF/termsEntryArea.xml index 404ebc3..07b259d 100644 --- a/org.argeo.product.knowledge/OSGI-INF/termsEntryArea.xml +++ b/org.argeo.product.knowledge/OSGI-INF/termsEntryArea.xml @@ -1,5 +1,5 @@ - + diff --git a/org.argeo.product.knowledge/OSGI-INF/termsLayer.xml b/org.argeo.product.knowledge/OSGI-INF/termsLayer.xml index 3fec7ef..5849ebc 100644 --- a/org.argeo.product.knowledge/OSGI-INF/termsLayer.xml +++ b/org.argeo.product.knowledge/OSGI-INF/termsLayer.xml @@ -1,5 +1,5 @@ - + diff --git a/org.argeo.product.knowledge/bnd.bnd b/org.argeo.product.knowledge/bnd.bnd index a91678c..c3754ce 100644 --- a/org.argeo.product.knowledge/bnd.bnd +++ b/org.argeo.product.knowledge/bnd.bnd @@ -1,11 +1,15 @@ Service-Component:\ OSGI-INF/swtArgeoApp.xml,\ OSGI-INF/leadPane.xml,\ +OSGI-INF/spaceEntryArea.xml,\ +OSGI-INF/structureLayer.xml,\ OSGI-INF/termsEntryArea.xml,\ OSGI-INF/termsLayer.xml,\ Import-Package:\ +org.argeo.app.api,\ org.argeo.cms.swt.acr,\ org.argeo.app.swt.ux,\ org.argeo.app.swt.terms,\ +org.argeo.app.swt.space,\ * \ No newline at end of file diff --git a/org.argeo.product.knowledge/config/spaceEntryArea.properties b/org.argeo.product.knowledge/config/spaceEntryArea.properties new file mode 100644 index 0000000..09bbf25 --- /dev/null +++ b/org.argeo.product.knowledge/config/spaceEntryArea.properties @@ -0,0 +1 @@ +service.pid=argeo.product.knowledge.spaceEntryArea diff --git a/org.argeo.product.knowledge/config/structureLayer.properties b/org.argeo.product.knowledge/config/structureLayer.properties new file mode 100644 index 0000000..14b9f6b --- /dev/null +++ b/org.argeo.product.knowledge/config/structureLayer.properties @@ -0,0 +1,6 @@ +service.pid=argeo.product.knowledge.structureLayer + +title=Structure +icon=folder + +#entity.type=entity:space \ No newline at end of file diff --git a/org.argeo.product.knowledge/config/termsLayer.properties b/org.argeo.product.knowledge/config/termsLayer.properties index be7abcc..e6b9a09 100644 --- a/org.argeo.product.knowledge/config/termsLayer.properties +++ b/org.argeo.product.knowledge/config/termsLayer.properties @@ -3,4 +3,4 @@ service.pid=argeo.product.knowledge.termsLayer title=Terms icon=dashboard -entity.type=entity:terms,entity:term \ No newline at end of file +entity.type=entity:terms,entity:term,entity:typologies \ No newline at end of file diff --git a/swt/org.argeo.app.swt/src/org/argeo/app/swt/space/SpaceEntryArea.java b/swt/org.argeo.app.swt/src/org/argeo/app/swt/space/SpaceEntryArea.java new file mode 100644 index 0000000..2c28a79 --- /dev/null +++ b/swt/org.argeo.app.swt/src/org/argeo/app/swt/space/SpaceEntryArea.java @@ -0,0 +1,59 @@ +package org.argeo.app.swt.space; + +import java.net.URI; +import java.util.List; + +import org.argeo.api.acr.Content; +import org.argeo.api.acr.NamespaceUtils; +import org.argeo.api.acr.spi.ProvidedContent; +import org.argeo.api.cms.ux.CmsView; +import org.argeo.app.api.EntityType; +import org.argeo.cms.swt.CmsSwtUtils; +import org.argeo.cms.swt.acr.SwtUiProvider; +import org.argeo.cms.swt.widgets.SwtTreeView; +import org.argeo.cms.ux.acr.ContentHierarchicalPart; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; + +/** Entry area for managing the typologies. */ +public class SpaceEntryArea implements SwtUiProvider { + @Override + public Control createUiPart(Composite parent, Content content) { + CmsView cmsView = CmsSwtUtils.getCmsView(parent); + + parent.setLayout(new GridLayout()); + + ContentHierarchicalPart contentPart = new ContentHierarchicalPart() { + + @Override + public List getChildren(Content parent) { + if (parent != null) + return super.getChildren(parent); + List res = ((ProvidedContent) content).getSession().search((bs) -> { + bs.from(URI.create("/sys")).where((f) -> f.isContentClass(EntityType.space)); + }).filter((c) -> noSpaceParent((ProvidedContent) c)).toList(); + return res; + } + + }; + contentPart.addColumn((c) -> NamespaceUtils.toPrefixedName(c.getName())); +// contentPart.setInput(content); + + SwtTreeView view = new SwtTreeView<>(parent, 0, contentPart); + view.setLayoutData(CmsSwtUtils.fillAll()); + + contentPart.setInput(null); + return view; + + } + + private static boolean noSpaceParent(ProvidedContent content) { + if (content.isRoot() || !content.isParentAccessible())// end condition + return true; + ProvidedContent parent = (ProvidedContent) content.getParent(); + if (parent.hasContentClass(EntityType.space)) + return false; + return noSpaceParent(parent); + } +} diff --git a/swt/org.argeo.app.swt/src/org/argeo/app/swt/terms/TermsEntryArea.java b/swt/org.argeo.app.swt/src/org/argeo/app/swt/terms/TermsEntryArea.java index 7ae2531..912c43f 100644 --- a/swt/org.argeo.app.swt/src/org/argeo/app/swt/terms/TermsEntryArea.java +++ b/swt/org.argeo.app.swt/src/org/argeo/app/swt/terms/TermsEntryArea.java @@ -48,7 +48,7 @@ public class TermsEntryArea implements SwtUiProvider { }; contentPart.addColumn((c) -> NamespaceUtils.toPrefixedName(c.getName())); - contentPart.setInput(rootContent); +// contentPart.setInput(rootContent); SwtTreeView view = new SwtTreeView<>(parent, 0, contentPart); view.setLayoutData(CmsSwtUtils.fillAll()); -- 2.30.2