]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/maintenance/Browse.java
Merge security.ui bundle in the cms.ui.workbench bundle
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / maintenance / Browse.java
index 3fff4e421343a31e24204b0a554a840abbf76521..7dafd72c4b8075678b533cf850bec25849c6a568 100644 (file)
@@ -16,13 +16,12 @@ import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
 import javax.jcr.Value;
 
-import org.argeo.ArgeoException;
 import org.argeo.cms.CmsException;
-import org.argeo.cms.CmsLink;
 import org.argeo.cms.CmsTypes;
 import org.argeo.cms.CmsUiProvider;
-import org.argeo.cms.CmsUtils;
 import org.argeo.cms.text.Img;
+import org.argeo.cms.util.CmsLink;
+import org.argeo.cms.util.CmsUtils;
 import org.argeo.cms.widgets.EditableImage;
 import org.argeo.jcr.JcrUtils;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
@@ -57,9 +56,11 @@ import org.eclipse.swt.widgets.Text;
 public class Browse implements CmsUiProvider {
 
        // Some local constants to experiment. should be cleaned
-       private final static String BROWSE_PREFIX = "#browse";
+       private final static String BROWSE_PREFIX = "browse#";
        private final static int THUMBNAIL_WIDTH = 400;
        private final static int COLUMN_WIDTH = 160;
+       private DateFormat timeFormatter = new SimpleDateFormat(
+                       "dd-MM-yyyy', 'HH:mm");
 
        // keep a cache of the opened nodes
        // Key is the path
@@ -77,6 +78,7 @@ public class Browse implements CmsUiProvider {
        public Control createUi(Composite parent, Node context)
                        throws RepositoryException {
                if (context == null)
+                       // return null;
                        throw new CmsException("Context cannot be null");
                GridLayout layout = CmsUtils.noSpaceGridLayout();
                layout.numColumns = 2;
@@ -214,7 +216,7 @@ public class Browse implements CmsUiProvider {
                                                e.doit = false;
                                        }
                                } catch (RepositoryException e1) {
-                                       throw new ArgeoException(
+                                       throw new CmsException(
                                                        "Unexpected error in key management for "
                                                                        + currEdited + "with filter "
                                                                        + filterTxt.getText(), e1);
@@ -233,7 +235,7 @@ public class Browse implements CmsUiProvider {
                        refreshFilters(node);
                        refreshBrowser(node);
                } catch (RepositoryException re) {
-                       throw new ArgeoException("Unable to update browser for " + node, re);
+                       throw new CmsException("Unable to update browser for " + node, re);
                }
        }
 
@@ -253,6 +255,9 @@ public class Browse implements CmsUiProvider {
                        currParPath = JcrUtils.parentPath(currNodePath);
                if ("".equals(currParPath))
                        currParPath = "/";
+               
+               
+               
 
                Object[][] colMatrix = new Object[browserCols.size()][2];
 
@@ -264,7 +269,8 @@ public class Browse implements CmsUiProvider {
                                boolean leaveOpened = path.startsWith(currNodePath);
 
                                // workaround for same name siblings
-                               // fix me weird side effect when we go left or click on anb already selected, unfocused node
+                               // fix me weird side effect when we go left or click on anb
+                               // already selected, unfocused node
                                if (leaveOpened
                                                && (path.lastIndexOf("/") == 0
                                                                && currNodePath.lastIndexOf("/") == 0 || JcrUtils
@@ -288,6 +294,15 @@ public class Browse implements CmsUiProvider {
                                ((FilterEntitiesVirtualTable) colMatrix[l][1]).dispose();
                        }
 
+               // Remove disposed columns
+               // TODO investigate and fix the mechanism that leave them there after
+               // disposal
+               if (browserCols.containsKey(currNodePath)) {
+                       FilterEntitiesVirtualTable currCol = browserCols.get(currNodePath);
+                       if (currCol.isDisposed())
+                               browserCols.remove(currNodePath);
+               }
+
                if (!browserCols.containsKey(currNodePath))
                        createBrowserColumn(colViewer, node);
 
@@ -320,12 +335,16 @@ public class Browse implements CmsUiProvider {
                try {
                        return node.getPath();
                } catch (RepositoryException e) {
-                       throw new ArgeoException("Unable to get path for node " + node, e);
+                       throw new CmsException("Unable to get path for node " + node, e);
                }
        }
 
        private Point imageWidth = new Point(250, 0);
 
+       /**
+        * Recreates the content of the box that displays information about the
+        * current selected node.
+        */
        private Control createNodeView(Composite parent, Node context)
                        throws RepositoryException {
 
@@ -373,7 +392,6 @@ public class Browse implements CmsUiProvider {
        private String getPropAsString(Property property)
                        throws RepositoryException {
                String result = "";
-               DateFormat timeFormatter = new SimpleDateFormat("");
                if (property.isMultiple()) {
                        result = getMultiAsString(property, ", ");
                } else {
@@ -439,7 +457,7 @@ public class Browse implements CmsUiProvider {
                                NodeIterator nit = context.getNodes(filter);
                                refreshFilteredList(nit);
                        } catch (RepositoryException e) {
-                               throw new ArgeoException("Unable to filter " + getNode()
+                               throw new CmsException("Unable to filter " + getNode()
                                                + " children with filter " + filter, e);
                        }
 
@@ -529,7 +547,7 @@ public class Browse implements CmsUiProvider {
                                                } else if (e.keyCode == SWT.ARROW_LEFT) {
                                                        try {
                                                                selected = getNode().getParent();
-                                                               String newPath = selected.getPath(); //getNode().getParent()
+                                                               String newPath = selected.getPath(); // getNode().getParent()
                                                                setEdited(selected);
                                                                if (browserCols.containsKey(newPath))
                                                                        browserCols.get(newPath).setFocus();
@@ -538,7 +556,7 @@ public class Browse implements CmsUiProvider {
                                                        }
                                                }
                                        } catch (RepositoryException ie) {
-                                               throw new ArgeoException("Error while managing arrow "
+                                               throw new CmsException("Error while managing arrow "
                                                                + "events in the browser for " + selected, ie);
                                        }
                                }
@@ -587,7 +605,7 @@ public class Browse implements CmsUiProvider {
                                        try {
                                                return curr.getName();
                                        } catch (RepositoryException e) {
-                                               throw new ArgeoException("Unable to get name for"
+                                               throw new CmsException("Unable to get name for"
                                                                + curr);
                                        }
                                }