From 04882182c8357c9d5ff615b0ff8b1aa5ee4d2166 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Wed, 11 Nov 2009 14:07:24 +0000
Subject: [PATCH] Fix for issue 4355 (Control Panel: Collapsing a branch while loading aborts loading and caches the incomplete info) Mark the node that is being collapsed (if not completely loaded) to be refreshed on next expand.

---
 opends/src/guitools/org/opends/guitools/controlpanel/browser/BrowserController.java |   21 +++++++++++++++------
 1 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/browser/BrowserController.java b/opends/src/guitools/org/opends/guitools/controlpanel/browser/BrowserController.java
index a80ee90..46cbd87 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/browser/BrowserController.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/browser/BrowserController.java
@@ -796,7 +796,7 @@
       if (recursive) {
         // The root cannot be queued directly.
         // We need to queue each child individually.
-        Enumeration e = rootNode.children();
+        Enumeration<?> e = rootNode.children();
         while (e.hasMoreElements()) {
           BasicNode child = (BasicNode)e.nextElement();
           startRefreshNode(child, null, true);
@@ -807,9 +807,9 @@
       refreshQueue.queue(new NodeRefresher(node, this, localEntry, recursive));
       // The task does not *see* suffixes.
       // So we need to propagate the refresh on
-      // the subsuffixes if any.
+      // the sub-suffixes if any.
       if (recursive && (node instanceof SuffixNode)) {
-        Enumeration e = node.children();
+        Enumeration<?> e = node.children();
         while (e.hasMoreElements()) {
           BasicNode child = (BasicNode)e.nextElement();
           if (child instanceof SuffixNode) {
@@ -834,7 +834,7 @@
       refreshQueue.cancelAll();
     }
     else {
-      Enumeration e = node.children();
+      Enumeration<?> e = node.children();
       while (e.hasMoreElements()) {
         BasicNode child = (BasicNode)e.nextElement();
         stopRefreshNode(child);
@@ -850,7 +850,7 @@
    * @param parentNode the parent node.
    */
   void startRefreshReferralNodes(BasicNode parentNode) {
-    Enumeration e = parentNode.children();
+    Enumeration<?> e = parentNode.children();
     while (e.hasMoreElements()) {
       BasicNode child = (BasicNode)e.nextElement();
       if ((child.getReferral() != null) || (child.getRemoteUrl() != null)) {
@@ -914,6 +914,15 @@
     if (!(node instanceof RootNode)) {
       BasicNode basicNode = (BasicNode)node;
       stopRefreshNode(basicNode);
+      synchronized (refreshQueue)
+      {
+        boolean isWorking = refreshQueue.isWorking(basicNode);
+        refreshQueue.cancelForNode(basicNode);
+        if (isWorking)
+        {
+          basicNode.setRefreshNeededOnExpansion(true);
+        }
+      }
     }
   }
 
@@ -1462,7 +1471,7 @@
           (newState == NodeRefresher.State.SEARCHING_CHILDREN)) {
         // The children search is going to start
         if (canDoDifferentialUpdate(task)) {
-          Enumeration e = node.children();
+          Enumeration<?> e = node.children();
           while (e.hasMoreElements()) {
             BasicNode child = (BasicNode)e.nextElement();
             child.setObsolete(true);

--
Gitblit v1.10.0