]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.cms/src/org/argeo/cms/maintenance/Browse.java
Session authentication working
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / maintenance / Browse.java
index 2195e571c0cffb2aea55f90f12ec69dbafcac534..98792575bf92e982521eb4b16d7cb84cc5be5362 100644 (file)
@@ -18,11 +18,11 @@ 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 +57,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 +79,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;
@@ -253,6 +256,9 @@ public class Browse implements CmsUiProvider {
                        currParPath = JcrUtils.parentPath(currNodePath);
                if ("".equals(currParPath))
                        currParPath = "/";
+               
+               
+               
 
                Object[][] colMatrix = new Object[browserCols.size()][2];
 
@@ -264,6 +270,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
                                if (leaveOpened
                                                && (path.lastIndexOf("/") == 0
                                                                && currNodePath.lastIndexOf("/") == 0 || JcrUtils
@@ -287,6 +295,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);
 
@@ -325,6 +342,10 @@ public class Browse implements CmsUiProvider {
 
        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 {
 
@@ -372,7 +393,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 {
@@ -505,6 +525,7 @@ public class Browse implements CmsUiProvider {
                                        });
 
                        table.addKeyListener(new KeyListener() {
+                               private static final long serialVersionUID = -330694313896036230L;
 
                                @Override
                                public void keyReleased(KeyEvent e) {
@@ -526,8 +547,9 @@ public class Browse implements CmsUiProvider {
                                                        }
                                                } else if (e.keyCode == SWT.ARROW_LEFT) {
                                                        try {
-                                                               String newPath = getNode().getParent()
-                                                                               .getPath();
+                                                               selected = getNode().getParent();
+                                                               String newPath = selected.getPath(); // getNode().getParent()
+                                                               setEdited(selected);
                                                                if (browserCols.containsKey(newPath))
                                                                        browserCols.get(newPath).setFocus();
                                                        } catch (ItemNotFoundException ie) {