Refactor DocBook attributes.
[gpl/argeo-suite.git] / org.argeo.suite.ui / src / org / argeo / suite / ui / RecentItems.java
index 108b77fdc56f50eee8b611544803f9b475569b29..b9aa5b721784ecc309dcd943ff2a495d4eb94fe8 100644 (file)
@@ -20,10 +20,10 @@ import org.argeo.cms.ui.CmsUiProvider;
 import org.argeo.cms.ui.CmsView;
 import org.argeo.cms.ui.util.CmsUiUtils;
 import org.argeo.eclipse.ui.EclipseUiUtils;
-import org.argeo.entity.EntityConstants;
-import org.argeo.entity.EntityTypes;
+import org.argeo.entity.EntityType;
 import org.argeo.jcr.Jcr;
 import org.argeo.jcr.JcrUtils;
+import org.argeo.suite.ui.widgets.DelayedText;
 import org.argeo.suite.util.XPathUtils;
 import org.eclipse.jface.layout.TableColumnLayout;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
@@ -60,6 +60,10 @@ public class RecentItems implements CmsUiProvider {
 
        private String entityType;
 
+       static enum Property {
+               entityTypes;
+       }
+
        @Override
        public Control createUi(Composite parent, Node context) throws RepositoryException {
                theme = CmsTheme.getCmsTheme(parent);
@@ -104,8 +108,8 @@ public class RecentItems implements CmsUiProvider {
                        public void doubleClick(DoubleClickEvent event) {
                                Node node = (Node) entityViewer.getViewer().getStructuredSelection().getFirstElement();
                                if (node != null)
-                                       CmsView.getCmsView(parent).sendEvent(SuiteEvent.openNewPart.topic(), SuiteEvent.NODE_ID,
-                                                       Jcr.getIdentifier(node));
+                                       CmsView.getCmsView(parent).sendEvent(SuiteEvent.openNewPart.topic(),
+                                                       SuiteEvent.eventProperties(node));
 
                        }
                });
@@ -113,8 +117,8 @@ public class RecentItems implements CmsUiProvider {
                        public void selectionChanged(SelectionChangedEvent event) {
                                Node node = (Node) entityViewer.getViewer().getStructuredSelection().getFirstElement();
                                if (node != null) {
-                                       CmsView.getCmsView(parent).sendEvent(SuiteEvent.refreshPart.topic(), SuiteEvent.NODE_ID,
-                                                       Jcr.getIdentifier(node));
+                                       CmsView.getCmsView(parent).sendEvent(SuiteEvent.refreshPart.topic(),
+                                                       SuiteEvent.eventProperties(node));
                                        deleteItem.setEnabled(true);
                                } else {
                                        deleteItem.setEnabled(false);
@@ -127,7 +131,8 @@ public class RecentItems implements CmsUiProvider {
        }
 
        public void init(Map<String, String> properties) {
-               entityType = properties.get(EntityConstants.TYPE);
+               // TODO manage multiple entities
+               entityType = properties.get(Property.entityTypes.name());
        }
 
        class SingleEntityViewer {
@@ -262,8 +267,8 @@ public class RecentItems implements CmsUiProvider {
 //                     });
                        table.setLinesVisible(true);
                        table.setHeaderVisible(false);
-                       CmsUiUtils.markup(table);
-                       CmsUiUtils.setItemHeight(table, 26);
+                       // CmsUiUtils.markup(table);
+                       // CmsUiUtils.setItemHeight(table, 26);
 
                        viewer.setContentProvider(new BasicNodeListContentProvider());
                        return viewer;
@@ -289,11 +294,17 @@ public class RecentItems implements CmsUiProvider {
 
                                // XPATH Query
                                String xpathQueryStr;
-                               if (entityType != null)
-                                       xpathQueryStr = entityType.contains(":") ? "//element(*, " + entityType + ")"
-                                                       : "//element(*, " + EntityTypes.ENTITY_ENTITY + ")[@entity:type='" + entityType + "']";
-                               else
-                                       xpathQueryStr = "//element(*, " + EntityTypes.ENTITY_ENTITY + ")";
+                               if (entityType != null) {
+                                       int indexColumn = entityType.indexOf(':');
+                                       if (indexColumn > 0) {// JCR node type
+                                               xpathQueryStr = "//element(*, " + entityType + ") order by @jcr:created descending";
+                                       } else {
+                                               xpathQueryStr = entityType.contains(":") ? "//element(*, " + entityType + ")"
+                                                               : "//element(*, " + EntityType.entity.get() + ")[@entity:type='" + entityType + "']";
+                                       }
+                               } else {
+                                       xpathQueryStr = "//element(*, " + EntityType.entity.get() + ")";
+                               }
 //                     String xpathQueryStr = "//element(*, " + ConnectTypes.CONNECT_ENTITY + ")";
                                String xpathFilter = XPathUtils.getFreeTextConstraint(filter);
                                if (notEmpty(xpathFilter))