Improve default app.
[gpl/argeo-suite.git] / library / org.argeo.documents.ui / src / org / argeo / documents / ui / DocumentsFolderUiProvider.java
index 2210b9fec8ac3b420f59cad3eabc87b08a1ebf86..e525a9e61cff9b43e75bb53b751e88b45361a4a1 100644 (file)
@@ -1,5 +1,6 @@
 package org.argeo.documents.ui;
 
+import java.nio.file.Path;
 import java.nio.file.spi.FileSystemProvider;
 
 import javax.jcr.Node;
@@ -9,6 +10,8 @@ import org.argeo.cms.fs.CmsFsUtils;
 import org.argeo.cms.ui.CmsUiProvider;
 import org.argeo.cms.ui.CmsView;
 import org.argeo.cms.ui.util.CmsUiUtils;
+import org.argeo.jcr.Jcr;
+import org.argeo.suite.ui.SuiteEvent;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
@@ -20,7 +23,15 @@ public class DocumentsFolderUiProvider implements CmsUiProvider {
        @Override
        public Control createUi(Composite parent, Node context) throws RepositoryException {
                CmsView cmsView = CmsView.getCmsView(parent);
-               DocumentsFolderComposite dfc = new DocumentsFolderComposite(parent, SWT.NONE, context);
+               DocumentsFolderComposite dfc = new DocumentsFolderComposite(parent, SWT.NONE, context) {
+
+                       @Override
+                       protected void externalNavigateTo(Path path) {
+                               Node folderNode = cmsView.doAs(() -> CmsFsUtils.getNode(Jcr.getSession(context).getRepository(), path));
+                               parent.addDisposeListener((e1) -> Jcr.logout(folderNode));
+                               cmsView.sendEvent(SuiteEvent.openNewPart.topic(), SuiteEvent.eventProperties(folderNode));
+                       }
+               };
                dfc.setLayoutData(CmsUiUtils.fillAll());
                dfc.populate(cmsView.doAs(() -> CmsFsUtils.getPath(nodeFileSystemProvider, context)));
                return dfc;