X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fmaintenance%2FBrowse.java;h=98792575bf92e982521eb4b16d7cb84cc5be5362;hb=92ac99f3ededbcd28def2bf9601bb33c02a351b3;hp=3fff4e421343a31e24204b0a554a840abbf76521;hpb=e243ed2a4539ac6b47d0bd946a9219ea5e8fe0fb;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/maintenance/Browse.java b/org.argeo.cms/src/org/argeo/cms/maintenance/Browse.java index 3fff4e421..98792575b 100644 --- a/org.argeo.cms/src/org/argeo/cms/maintenance/Browse.java +++ b/org.argeo.cms/src/org/argeo/cms/maintenance/Browse.java @@ -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,7 +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 + // 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 +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); @@ -326,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 { @@ -373,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 { @@ -529,7 +548,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();