]> git.argeo.org Git - gpl/argeo-suite.git/blob - swt/org.argeo.app.ui/src/org/argeo/app/ui/library/DocumentsFolderUiProvider.java
Load maintenance resources relative to class
[gpl/argeo-suite.git] / swt / org.argeo.app.ui / src / org / argeo / app / ui / 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.SuiteUxEvent;
11 import org.argeo.cms.fs.CmsFsUtils;
12 import org.argeo.cms.swt.CmsSwtUtils;
13 import org.argeo.cms.ui.CmsUiProvider;
14 import org.argeo.jcr.Jcr;
15 import org.eclipse.swt.SWT;
16 import org.eclipse.swt.widgets.Composite;
17 import org.eclipse.swt.widgets.Control;
18
19 /** UI provider of a document folder. */
20 public class DocumentsFolderUiProvider implements CmsUiProvider {
21 private FileSystemProvider nodeFileSystemProvider;
22
23 @Override
24 public Control createUi(Composite parent, Node context) throws RepositoryException {
25 CmsView cmsView = CmsSwtUtils.getCmsView(parent);
26 DocumentsFolderComposite dfc = new DocumentsFolderComposite(parent, SWT.NONE, context) {
27
28 @Override
29 protected void externalNavigateTo(Path path) {
30 Node folderNode = cmsView.doAs(() -> CmsFsUtils.getNode(Jcr.getSession(context).getRepository(), path));
31 parent.addDisposeListener((e1) -> Jcr.logout(folderNode));
32 cmsView.sendEvent(SuiteUxEvent.openNewPart.topic(), SuiteUxEvent.eventProperties(folderNode));
33 }
34 };
35 dfc.setLayoutData(CmsSwtUtils.fillAll());
36 dfc.populate(cmsView.doAs(() -> CmsFsUtils.getPath(nodeFileSystemProvider, context)));
37 return dfc;
38 }
39
40 public void setNodeFileSystemProvider(FileSystemProvider nodeFileSystemProvider) {
41 this.nodeFileSystemProvider = nodeFileSystemProvider;
42 }
43
44 }