1 package org
.argeo
.app
.ui
.library
;
3 import java
.nio
.file
.Path
;
4 import java
.nio
.file
.spi
.FileSystemProvider
;
7 import javax
.jcr
.RepositoryException
;
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
;
20 /** UI provider of a document folder. */
21 public class DocumentsFolderUiProvider
implements CmsUiProvider
{
22 private FileSystemProvider nodeFileSystemProvider
;
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
) {
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
));
36 dfc
.setLayoutData(CmsSwtUtils
.fillAll());
37 dfc
.populate(cmsView
.doAs(() -> CmsFsUtils
.getPath(nodeFileSystemProvider
, context
)));
41 public void setNodeFileSystemProvider(FileSystemProvider nodeFileSystemProvider
) {
42 this.nodeFileSystemProvider
= nodeFileSystemProvider
;