put connection Listener and report listener as seperate threads.
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / view / bookmark / BookmarkNode.java
index c74c555..aca7002 100644 (file)
@@ -24,7 +24,7 @@ public class BookmarkNode extends TreeNode implements PropertyChangeListener {
         this.bookmark.addPropertyChangeListener(this);
     }
 
-       public Object[] getChildren() {
+       public Object[] getChildren() throws NotConnectedException, SQLException {
                if (bookmark.isConnected() && this.children.isEmpty()) {
             initializeChildren();
                }
@@ -35,7 +35,7 @@ public class BookmarkNode extends TreeNode implements PropertyChangeListener {
         }
        }
 
-    protected void initializeChildren() {
+    protected void initializeChildren() throws NotConnectedException, SQLException {
         boolean changed = false;
         Map temp = new HashMap();
         for (Iterator i = this.children.iterator(); i.hasNext(); ) {
@@ -74,7 +74,7 @@ public class BookmarkNode extends TreeNode implements PropertyChangeListener {
             changed = true;
         }
         
-        if (changed) {
+        if (temp.size() > 0 || changed ) {
             firePropertyChange("children", null, null);
         }
     }
@@ -129,7 +129,13 @@ public class BookmarkNode extends TreeNode implements PropertyChangeListener {
             }
             firePropertyChange("connected", event.getOldValue(), event.getNewValue());
         } else if ("schemas".equals(event.getPropertyName())) {
-            initializeChildren();
+               try {
+                       initializeChildren();
+               } catch (NotConnectedException e) {
+                       this.children.clear();
+               } catch (SQLException e) {
+                       this.children.clear();
+               }
             firePropertyChange("children", event.getOldValue(), event.getNewValue());
         } else if ("name".equals(event.getPropertyName())) {
             firePropertyChange("name", event.getOldValue(), event.getNewValue());