From: Bruno Sinou Date: Mon, 9 Jul 2012 16:09:50 +0000 (+0000) Subject: fix bug 85 : JCR explorer refresh was not implemented for TreeParent objects of type... X-Git-Tag: argeo-commons-2.1.30~901 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=a6cc0b150a8cd6a127465efe356bece167dbbe51;p=lgpl%2Fargeo-commons.git fix bug 85 : JCR explorer refresh was not implemented for TreeParent objects of type RepositoryNode and RepositoriesNode git-svn-id: https://svn.argeo.org/commons/trunk@5426 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/utils/JcrUiUtils.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/utils/JcrUiUtils.java index 756748bb4..414bd1a7b 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/utils/JcrUiUtils.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/utils/JcrUiUtils.java @@ -20,30 +20,44 @@ import javax.jcr.RepositoryException; import org.argeo.ArgeoException; import org.argeo.eclipse.ui.TreeParent; +import org.argeo.jcr.ui.explorer.model.RepositoriesNode; +import org.argeo.jcr.ui.explorer.model.RepositoryNode; import org.argeo.jcr.ui.explorer.model.SingleJcrNode; import org.argeo.jcr.ui.explorer.model.WorkspaceNode; -/** Centralizes some useful methods to build Uis with JCR */ +/** Centralizes some useful methods to build UIs with JCR */ public class JcrUiUtils { - /** Insure that the UI componant is not stale, refresh if needed */ + /** Insure that the UI component is not stale, refresh if needed */ public static void forceRefreshIfNeeded(TreeParent element) { - Node curNode; + Node curNode = null; - if (element instanceof SingleJcrNode) - curNode = ((SingleJcrNode) element).getNode(); - else if (element instanceof WorkspaceNode) - curNode = ((WorkspaceNode) element).getRootNode(); - else - return; - // TODO implement specific methods for other cases + boolean doRefresh = false; try { - // we mainly rely on nb of children - if (element.getChildren().length == curNode.getNodes().getSize()) - return; - else { - // get rid of children of UI object + if (element instanceof SingleJcrNode) { + curNode = ((SingleJcrNode) element).getNode(); + } else if (element instanceof WorkspaceNode) { + curNode = ((WorkspaceNode) element).getRootNode(); + } + + if (curNode != null + && element.getChildren().length != curNode.getNodes() + .getSize()) + doRefresh = true; + else if (element instanceof RepositoryNode) { + RepositoryNode rn = (RepositoryNode) element; + String[] wkpNames = rn.getDefaultSession().getWorkspace() + .getAccessibleWorkspaceNames(); + if (element.getChildren().length != wkpNames.length) + doRefresh = true; + } else if (element instanceof RepositoriesNode) { + RepositoriesNode rn = (RepositoriesNode) element; + if (element.getChildren().length != rn.getRepositoryRegister() + .getRepositories().size()) + doRefresh = true; + } + if (doRefresh) { element.clearChildren(); element.getChildren(); }