diff -r 6638abf2ed77 db/src/org/netbeans/modules/db/explorer/node/NodeRegistry.java --- a/db/src/org/netbeans/modules/db/explorer/node/NodeRegistry.java Tue Jan 15 02:35:25 2013 +0000 +++ b/db/src/org/netbeans/modules/db/explorer/node/NodeRegistry.java Wed Jan 16 13:36:55 2013 +0100 @@ -64,6 +64,7 @@ import org.openide.util.LookupEvent; import org.openide.util.LookupListener; import org.openide.util.NbBundle; +import org.openide.util.WeakListeners; import org.openide.util.lookup.Lookups; /** @@ -87,6 +88,7 @@ private final List providers = new CopyOnWriteArrayList(); private Lookup.Result lookupResult; + private LookupListener lookupListener; /** * Create an instance of NodeRegistry. @@ -117,13 +119,14 @@ initProviders(dataLookup); // listen for changes and re-init the providers when the lookup changes - lookupResult.addLookupListener( - new LookupListener() { + lookupResult.addLookupListener(WeakListeners.create(LookupListener.class, + lookupListener = new LookupListener() { public void resultChanged(LookupEvent ev) { initProviders(dataLookup); changeSupport.fireChange(); } - } + }, + lookupResult) ); }