]> git.argeo.org Git - gpl/argeo-suite.git/blob - library/DocumentsFolderUiProvider.java
Prepare next development cycle
[gpl/argeo-suite.git] / library / DocumentsFolderUiProvider.java
1 package org.argeo.app.ui.library;
2
3 import java.nio.file.Path;
4 import java.nio.file.spi.FileSystemProvider;
5
6 import javax.jcr.Node;
7 import javax.jcr.RepositoryException;
8
9 import org.argeo.api.cms.ux.CmsView;
10 import org.argeo.app.ui.SuiteUiUtils;
11 import org.argeo.app.ux.SuiteUxEvent;
12 import org.argeo.cms.fs.CmsFsUtils;
13 import org.argeo.cms.swt.CmsSwtUtils;
14 import org.argeo.cms.ui.CmsUiProvider;
15 import org.argeo.jcr.Jcr;
16 import org.eclipse.swt.SWT;
17 import org.eclipse.swt.widgets.Composite;
18 import org.eclipse.swt.widgets.Control;
19
20 /** UI provider of a document folder. */
21 public class DocumentsFolderUiProvider implements CmsUiProvider {
22 private FileSystemProvider nodeFileSystemProvider;
23
24 @Override
25 public Control createUi(Composite parent, Node context) throws RepositoryException {
26 CmsView cmsView = CmsSwtUtils.getCmsView(parent);
27 DocumentsFolderComposite dfc = new DocumentsFolderComposite(parent, SWT.NONE, context) {
28
29 @Override
30 protected void externalNavigateTo(Path path) {
31 Node folderNode = cmsView.doAs(() -> CmsFsUtils.getNode(Jcr.getSession(context).getRepository(), path));
32 parent.addDisposeListener((e1) -> Jcr.logout(folderNode));
33 cmsView.sendEvent(SuiteUxEvent.openNewPart.topic(), SuiteUiUtils.eventProperties(folderNode));
34 }
35 };
36 dfc.setLayoutData(CmsSwtUtils.fillAll());
37 dfc.populate(cmsView.doAs(() -> CmsFsUtils.getPath(nodeFileSystemProvider, context)));
38 return dfc;
39 }
40
41 public void setNodeFileSystemProvider(FileSystemProvider nodeFileSystemProvider) {
42 this.nodeFileSystemProvider = nodeFileSystemProvider;
43 }
44
45 }