X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=library%2Forg.argeo.library.ui%2Fsrc%2Forg%2Fargeo%2Flibrary%2Fui%2FContentEntryArea.java;h=8b884ebcf7a4a95cfa05b36166f571855ad44da0;hp=4c8b041c949a1f558b435a843e19fe737a4b4961;hb=3f824de719b0c7998dafbee087db0e18f9d949f2;hpb=e8d31e8321bb18489b37a53a32db833f8efb5ddf diff --git a/library/org.argeo.library.ui/src/org/argeo/library/ui/ContentEntryArea.java b/library/org.argeo.library.ui/src/org/argeo/library/ui/ContentEntryArea.java index 4c8b041..8b884eb 100644 --- a/library/org.argeo.library.ui/src/org/argeo/library/ui/ContentEntryArea.java +++ b/library/org.argeo.library.ui/src/org/argeo/library/ui/ContentEntryArea.java @@ -10,35 +10,102 @@ import javax.jcr.Session; import javax.jcr.nodetype.NodeType; import javax.jcr.query.Query; +import org.argeo.cms.ui.CmsTheme; import org.argeo.cms.ui.CmsUiProvider; +import org.argeo.cms.ui.CmsView; import org.argeo.cms.ui.util.CmsUiUtils; import org.argeo.entity.EntityType; import org.argeo.jcr.Jcr; import org.argeo.jcr.JcrException; +import org.argeo.suite.ui.SuiteEvent; +import org.argeo.suite.ui.SuiteIcon; import org.argeo.suite.ui.widgets.TreeOrSearchArea; +import org.eclipse.jface.viewers.ColumnLabelProvider; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; +import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.TreeViewerColumn; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; public class ContentEntryArea implements CmsUiProvider { @Override public Control createUi(Composite parent, Node context) throws RepositoryException { + CmsTheme theme = CmsTheme.getCmsTheme(parent); + parent.setLayout(new GridLayout()); Ui ui = new Ui(parent, SWT.NONE); ui.setLayoutData(CmsUiUtils.fillAll()); + TreeViewerColumn nameCol = new TreeViewerColumn(ui.getTreeViewer(), SWT.NONE); + nameCol.getColumn().setWidth(400); + nameCol.setLabelProvider(new ColumnLabelProvider() { + + @Override + public String getText(Object element) { + Node node = (Node) element; + return Jcr.getTitle(node); + } + + @Override + public Image getImage(Object element) { + Node node = (Node) element; + Image icon; + if (Jcr.isNodeType(node, NodeType.NT_FOLDER)) { + icon = SuiteIcon.folder.getSmallIcon(theme); + } else if (Jcr.isNodeType(node, NodeType.NT_FILE)) { + // TODO check recognized document types + icon = SuiteIcon.document.getSmallIcon(theme); + } else if (Jcr.isNodeType(node, EntityType.document.get())) { + icon = SuiteIcon.document.getSmallIcon(theme); + } else { + if (!isLeaf(node)) + icon = SuiteIcon.folder.getSmallIcon(theme); + else + icon = null; + } + return icon; + } + + }); + + ui.getTreeViewer().addDoubleClickListener(new IDoubleClickListener() { + + @Override + public void doubleClick(DoubleClickEvent event) { + Node user = (Node) ui.getTreeViewer().getStructuredSelection().getFirstElement(); + if (user != null) { + CmsView.getCmsView(parent).sendEvent(SuiteEvent.openNewPart.topic(), + SuiteEvent.eventProperties(user)); + } + + } + }); + ui.getTreeViewer().addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + Node user = (Node) ui.getTreeViewer().getStructuredSelection().getFirstElement(); + if (user != null) { + CmsView.getCmsView(parent).sendEvent(SuiteEvent.refreshPart.topic(), + SuiteEvent.eventProperties(user)); + } + } + }); + ui.getTreeViewer().setContentProvider(new SpacesContentProvider()); ui.getTreeViewer().setInput(context.getSession()); return ui; } protected boolean isLeaf(Node node) { - return Jcr.isNodeType(node, EntityType.entity.get()) || Jcr.isNodeType(node, NodeType.NT_FILE); + return Jcr.isNodeType(node, EntityType.entity.get()) || Jcr.isNodeType(node, EntityType.document.get()) + || Jcr.isNodeType(node, NodeType.NT_FILE); } class Ui extends TreeOrSearchArea {