]> git.argeo.org Git - gpl/argeo-suite.git/blob - swt/space/SpaceEntryArea.java
Prepare next development cycle
[gpl/argeo-suite.git] / swt / space / SpaceEntryArea.java
1 package org.argeo.app.swt.space;
2
3 import java.net.URI;
4 import java.util.List;
5
6 import org.argeo.api.acr.Content;
7 import org.argeo.api.acr.NamespaceUtils;
8 import org.argeo.api.acr.spi.ProvidedContent;
9 import org.argeo.api.cms.ux.CmsView;
10 import org.argeo.app.api.EntityType;
11 import org.argeo.cms.swt.CmsSwtUtils;
12 import org.argeo.cms.swt.acr.SwtUiProvider;
13 import org.argeo.cms.swt.widgets.SwtTreeView;
14 import org.argeo.cms.ux.acr.ContentHierarchicalPart;
15 import org.eclipse.swt.layout.GridLayout;
16 import org.eclipse.swt.widgets.Composite;
17 import org.eclipse.swt.widgets.Control;
18
19 /** Entry area for managing the typologies. */
20 public class SpaceEntryArea implements SwtUiProvider {
21 @Override
22 public Control createUiPart(Composite parent, Content content) {
23 CmsView cmsView = CmsSwtUtils.getCmsView(parent);
24
25 parent.setLayout(new GridLayout());
26
27 ContentHierarchicalPart contentPart = new ContentHierarchicalPart() {
28
29 @Override
30 public List<Content> getChildren(Content parent) {
31 if (parent != null)
32 return super.getChildren(parent);
33 List<Content> res = ((ProvidedContent) content).getSession().search((bs) -> {
34 bs.from(URI.create("/sys")).where((f) -> f.isContentClass(EntityType.space));
35 }).filter((c) -> noSpaceParent((ProvidedContent) c)).toList();
36 return res;
37 }
38
39 };
40 contentPart.addColumn((c) -> NamespaceUtils.toPrefixedName(c.getName()));
41 // contentPart.setInput(content);
42
43 SwtTreeView<Content> view = new SwtTreeView<>(parent, 0, contentPart);
44 view.setLayoutData(CmsSwtUtils.fillAll());
45
46 contentPart.setInput(null);
47 return view;
48
49 }
50
51 private static boolean noSpaceParent(ProvidedContent content) {
52 if (content.isRoot() || !content.isParentAccessible())// end condition
53 return true;
54 ProvidedContent parent = (ProvidedContent) content.getParent();
55 if (parent.hasContentClass(EntityType.space))
56 return false;
57 return noSpaceParent(parent);
58 }
59 }