X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.app.ui%2Fsrc%2Forg%2Fargeo%2Fapp%2Fui%2Flibrary%2FContentEntryArea.java;h=e5b474bc178e192fd489225999d2a4ba3defebcc;hb=f1b87af2e0de38f1f49ab8fe68f9988018914811;hp=42c7e69867cf946e8c20f3d8de448bf5f51bdeef;hpb=c6b561fc1d45dd5abcbf86f99ae546bdc3b42b8d;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.app.ui/src/org/argeo/app/ui/library/ContentEntryArea.java b/org.argeo.app.ui/src/org/argeo/app/ui/library/ContentEntryArea.java index 42c7e69..e5b474b 100644 --- a/org.argeo.app.ui/src/org/argeo/app/ui/library/ContentEntryArea.java +++ b/org.argeo.app.ui/src/org/argeo/app/ui/library/ContentEntryArea.java @@ -1,178 +1,54 @@ package org.argeo.app.ui.library; -import java.util.SortedMap; -import java.util.TreeMap; - -import javax.jcr.Node; -import javax.jcr.NodeIterator; -import javax.jcr.RepositoryException; -import javax.jcr.Session; -import javax.jcr.nodetype.NodeType; -import javax.jcr.query.Query; - import org.argeo.api.acr.Content; -import org.argeo.api.cms.CmsConstants; +import org.argeo.api.acr.spi.ProvidedContent; +import org.argeo.api.cms.CmsLog; +import org.argeo.api.cms.ux.CmsView; import org.argeo.app.api.EntityType; import org.argeo.app.ui.SuiteEvent; -import org.argeo.app.ui.SuiteIcon; -import org.argeo.app.ui.widgets.TreeOrSearchArea; -import org.argeo.cms.jcr.acr.JcrContentProvider; -import org.argeo.cms.swt.CmsSwtTheme; import org.argeo.cms.swt.CmsSwtUtils; -import org.argeo.cms.ui.CmsUiProvider; -import org.argeo.jcr.Jcr; -import org.argeo.jcr.JcrException; -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.argeo.cms.swt.acr.SwtUiProvider; +import org.argeo.cms.swt.widgets.SwtTreeView; +import org.argeo.cms.ux.acr.ContentHierarchicalPart; 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 { - private JcrContentProvider jcrContentProvider; +public class ContentEntryArea implements SwtUiProvider { + private final static CmsLog log = CmsLog.getLog(ContentEntryArea.class); @Override public Control createUiPart(Composite parent, Content context) { - CmsSwtTheme theme = CmsSwtUtils.getCmsTheme(parent); + CmsView cmsView = CmsSwtUtils.getCmsView(parent); parent.setLayout(new GridLayout()); - Ui ui = new Ui(parent, SWT.NONE); - ui.setLayoutData(CmsSwtUtils.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 = theme.getSmallIcon(SuiteIcon.folder); - } else if (Jcr.isNodeType(node, NodeType.NT_FILE)) { - // TODO check recognized document types - icon = theme.getSmallIcon(SuiteIcon.document); - } else if (Jcr.isNodeType(node, EntityType.document.get())) { - icon = theme.getSmallIcon(SuiteIcon.document); - } else { - if (!isLeaf(node)) - icon = theme.getSmallIcon(SuiteIcon.folder); - else - icon = null; - } - return icon; - } + new Label(parent, 0).setText(context.toString()); - }); + Content rootContent = ((ProvidedContent) context).getSession().getRepository().get().get("/srv"); - ui.getTreeViewer().addDoubleClickListener(new IDoubleClickListener() { + ContentHierarchicalPart contentPart = new ContentHierarchicalPart() { @Override - public void doubleClick(DoubleClickEvent event) { - Node user = (Node) ui.getTreeViewer().getStructuredSelection().getFirstElement(); - if (user != null) { - CmsSwtUtils.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) { - CmsSwtUtils.getCmsView(parent).sendEvent(SuiteEvent.refreshPart.topic(), - SuiteEvent.eventProperties(user)); - } + protected boolean isLeaf(Content content) { + if (content.hasContentClass(EntityType.document.qName())) + return true; + return super.isLeaf(content); } - }); - - ui.getTreeViewer().setContentProvider(new SpacesContentProvider()); - Session session = jcrContentProvider.getJcrSession(context, CmsConstants.SYS_WORKSPACE); - ui.getTreeViewer().setInput(session); - return ui; - } + }; + contentPart.setInput(rootContent); - protected boolean isLeaf(Node node) { - return Jcr.isNodeType(node, EntityType.entity.get()) || Jcr.isNodeType(node, EntityType.document.get()) - || Jcr.isNodeType(node, NodeType.NT_FILE); - } - - public void setJcrContentProvider(JcrContentProvider jcrContentProvider) { - this.jcrContentProvider = jcrContentProvider; - } - - class Ui extends TreeOrSearchArea { - - public Ui(Composite parent, int style) { - super(parent, style); - } - - } - - class SpacesContentProvider implements ITreeContentProvider { - - @Override - public Object[] getElements(Object inputElement) { - Session session = (Session) inputElement; - try { - Query query = session.getWorkspace().getQueryManager() - .createQuery("SELECT * FROM [" + EntityType.space.get() + "]", Query.JCR_SQL2); - NodeIterator spacesIt = query.execute().getNodes(); - SortedMap map = new TreeMap<>(); - while (spacesIt.hasNext()) { - Node space = spacesIt.nextNode(); - String path = space.getPath(); - map.put(path, space); - } - return map.values().toArray(); - } catch (RepositoryException e) { - throw new JcrException(e); - } - } - - @Override - public Object[] getChildren(Object parentElement) { - Node parent = (Node) parentElement; - if (isLeaf(parent)) - return null; - return Jcr.getNodes(parent).toArray(); - } - - @Override - public Object getParent(Object element) { - Node node = (Node) element; - return Jcr.getParent(node); - } - - @Override - public boolean hasChildren(Object element) { - Node node = (Node) element; - return !isLeaf(node); - } - - @Override - public void dispose() { - } - - @Override - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - } + SwtTreeView view = new SwtTreeView<>(parent, 0, contentPart); + view.setLayoutData(CmsSwtUtils.fillAll()); + contentPart.setInput(rootContent); + contentPart.onSelected((o) -> { + Content c = (Content) o; + log.debug(c.getPath()); + cmsView.sendEvent(SuiteEvent.refreshPart.topic(), SuiteEvent.eventProperties(c)); + }); + return view; } }