From 7faa5e4d10edda3015f96a3a98cc2115aa16f1dd Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Thu, 26 Mar 2009 10:26:00 +0000
Subject: [PATCH] Fix for issue 3555 (Control panel : Manage entries menu does not refresh the view off the DIT)
---
opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java | 124 +++++++++++++++++++++++++++++++++++++---
1 files changed, 113 insertions(+), 11 deletions(-)
diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
index baf3b9d..53888ff 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
@@ -72,6 +72,7 @@
import javax.swing.event.TreeModelListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import org.opends.admin.ads.util.ApplicationTrustManager;
@@ -84,6 +85,8 @@
import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
import org.opends.guitools.controlpanel.datamodel.IndexDescriptor;
import org.opends.guitools.controlpanel.datamodel.ServerDescriptor;
+import org.opends.guitools.controlpanel.event.BackendPopulatedEvent;
+import org.opends.guitools.controlpanel.event.BackendPopulatedListener;
import org.opends.guitools.controlpanel.event.BrowserEvent;
import org.opends.guitools.controlpanel.event.BrowserEventListener;
import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent;
@@ -109,6 +112,7 @@
*
*/
public abstract class AbstractBrowseEntriesPanel extends StatusGenericPanel
+implements BackendPopulatedListener
{
private JComboBox baseDNs;
/**
@@ -239,6 +243,7 @@
}
super.setInfo(info);
treePane.setInfo(info);
+ info.addBackendPopulatedListener(this);
}
/**
@@ -707,28 +712,26 @@
{
treePane.getTree().setRootVisible(displayAll);
treePane.getTree().setShowsRootHandles(!displayAll);
- boolean isBaseDN = false;
+ boolean added = false;
for (BackendDescriptor backend :
getInfo().getServerDescriptor().getBackends())
{
for (BaseDNDescriptor baseDN : backend.getBaseDns())
{
+ boolean isBaseDN = false;
if ((theDN != null) && baseDN.getDn().equals(theDN))
{
isBaseDN = true;
}
String dn = Utilities.unescapeUtf8(baseDN.getDn().toString());
- if (displayAll)
+ if (displayAll || isBaseDN)
{
controller.addSuffix(dn, null);
- }
- else if (s.equals(dn))
- {
- controller.addSuffix(dn, null);
+ added = true;
}
}
}
- if (!isBaseDN && !displayAll)
+ if (!added && !displayAll)
{
BasicNode rootNode =
(BasicNode)controller.getTree().getModel().getRoot();
@@ -840,6 +843,103 @@
*/
protected abstract Component createMainPanel();
+
+ /**
+ * {@inheritDoc}
+ */
+ public void backendPopulated(BackendPopulatedEvent ev)
+ {
+ if (controller.getConfigurationConnection() != null)
+ {
+ boolean displayAll = false;
+ boolean errorOccurred = false;
+ DN theDN = null;
+ String s = getBaseDN();
+ if (s != null)
+ {
+ displayAll = s.equals(ALL_BASE_DNS);
+ if (!displayAll)
+ {
+ try
+ {
+ theDN = DN.decode(s);
+ }
+ catch (Throwable t)
+ {
+ errorOccurred = true;
+ }
+ }
+ }
+ else
+ {
+ errorOccurred = true;
+ }
+ if (!errorOccurred)
+ {
+ treePane.getTree().setRootVisible(displayAll);
+ treePane.getTree().setShowsRootHandles(!displayAll);
+ BasicNode rootNode =
+ (BasicNode)controller.getTree().getModel().getRoot();
+ boolean isSubordinate = false;
+ for (BackendDescriptor backend : ev.getBackends())
+ {
+ for (BaseDNDescriptor baseDN : backend.getBaseDns())
+ {
+ boolean isBaseDN = false;
+ if ((theDN != null) && baseDN.getDn().equals(theDN))
+ {
+ isBaseDN = true;
+ }
+ else if ((theDN != null) && baseDN.getDn().isAncestorOf(theDN))
+ {
+ isSubordinate = true;
+ }
+ String dn = Utilities.unescapeUtf8(baseDN.getDn().toString());
+ if (displayAll || isBaseDN)
+ {
+ try
+ {
+ if (!controller.hasSuffix(dn))
+ {
+ controller.addSuffix(dn, null);
+ }
+ else
+ {
+ int index = controller.findChildNode(rootNode, dn);
+ if (index >= 0)
+ {
+ TreeNode node = rootNode.getChildAt(index);
+ if (node != null)
+ {
+ TreePath path = new TreePath(
+ controller.getTreeModel().getPathToRoot(node));
+ controller.startRefresh(
+ controller.getNodeInfoFromPath(path));
+ }
+ }
+ }
+ }
+ catch (IllegalArgumentException iae)
+ {
+ // The suffix node exists but is not a suffix node.
+ // Simply log a message.
+ LOG.log(Level.WARNING, "Suffix: "+dn+
+ " added as a non suffix node. Exception: "+iae, iae);
+ }
+ }
+ }
+ }
+ if (isSubordinate)
+ {
+ if (controller.findChildNode(rootNode, s) == -1)
+ {
+ controller.addNodeUnderRoot(s);
+ }
+ }
+ }
+ }
+ }
+
/**
* {@inheritDoc}
*/
@@ -1322,12 +1422,13 @@
treePane.getTree().setShowsRootHandles(!displayAll);
if (s != null)
{
- boolean isBaseDN = false;
+ boolean added = false;
for (BackendDescriptor backend :
getInfo().getServerDescriptor().getBackends())
{
for (BaseDNDescriptor baseDN : backend.getBaseDns())
{
+ boolean isBaseDN = false;
String dn = Utilities.unescapeUtf8(baseDN.getDn().toString());
if ((theDN != null) && baseDN.getDn().equals(theDN))
{
@@ -1337,11 +1438,12 @@
{
try
{
- if (!controller.hasSuffix(dn))
+ if (displayAll || isBaseDN)
{
- if (displayAll || isBaseDN)
+ if (!controller.hasSuffix(dn))
{
controller.addSuffix(dn, null);
+ added = true;
}
}
}
@@ -1354,7 +1456,7 @@
}
}
}
- if (!isBaseDN && !displayAll)
+ if (!added && !displayAll)
{
BasicNode rootNode =
(BasicNode)controller.getTree().getModel().getRoot();
--
Gitblit v1.10.0