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
.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
;
19 /** UI provider of a document folder. */
20 public class DocumentsFolderUiProvider
implements CmsUiProvider
{
21 private FileSystemProvider nodeFileSystemProvider
;
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
) {
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
));
35 dfc
.setLayoutData(CmsSwtUtils
.fillAll());
36 dfc
.populate(cmsView
.doAs(() -> CmsFsUtils
.getPath(nodeFileSystemProvider
, context
)));
40 public void setNodeFileSystemProvider(FileSystemProvider nodeFileSystemProvider
) {
41 this.nodeFileSystemProvider
= nodeFileSystemProvider
;