X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fmaintenance%2FBrowse.java;h=7dafd72c4b8075678b533cf850bec25849c6a568;hb=7add600d7837fb72f019de190bd5cafd817a0a0c;hp=e0bba81682ba09c7ab402a77cdd108c59ecb1304;hpb=5ba1340812d3f14d2caecf6eab57cc9c753ef20c;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 e0bba8168..7dafd72c4 100644 --- a/org.argeo.cms/src/org/argeo/cms/maintenance/Browse.java +++ b/org.argeo.cms/src/org/argeo/cms/maintenance/Browse.java @@ -16,7 +16,6 @@ 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.CmsTypes; import org.argeo.cms.CmsUiProvider; @@ -60,8 +59,8 @@ public class Browse implements CmsUiProvider { 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"); - + private DateFormat timeFormatter = new SimpleDateFormat( + "dd-MM-yyyy', 'HH:mm"); // keep a cache of the opened nodes // Key is the path @@ -79,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; @@ -216,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); @@ -235,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); } } @@ -255,6 +255,9 @@ public class Browse implements CmsUiProvider { currParPath = JcrUtils.parentPath(currNodePath); if ("".equals(currParPath)) currParPath = "/"; + + + Object[][] colMatrix = new Object[browserCols.size()][2]; @@ -266,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 @@ -290,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); @@ -322,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 { @@ -440,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); } @@ -530,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(); @@ -539,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); } } @@ -588,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); } }