diff -r 8d4322cbb61a db/src/org/netbeans/modules/db/explorer/DatabaseConnection.java --- a/db/src/org/netbeans/modules/db/explorer/DatabaseConnection.java Fri Nov 11 14:56:22 2011 +0100 +++ b/db/src/org/netbeans/modules/db/explorer/DatabaseConnection.java Fri Nov 11 21:18:19 2011 +0100 @@ -123,6 +123,8 @@ private static final Logger LOGGER = Logger.getLogger(DatabaseConnection.class.getName()); private static final boolean LOG = LOGGER.isLoggable(Level.FINE); + static final String[] DONT_SAVE_EVENTS = new String[] {"connected", "failed", "connected", "disconnected"}; + static final long serialVersionUID =4554639187416958735L; private final Set exceptionListeners = Collections.synchronizedSet (new HashSet ()); @@ -660,10 +662,14 @@ private void waitForReading(final Runnable toRun) { if (SwingUtilities.isEventDispatchThread()) { + LOGGER.finest("Showing a wait dialog..."); showWaitingDialog(toRun); + LOGGER.finest("Showing a wait dialog - done."); } else { if (keyringTask != null && ! keyringTask.isFinished()) { + LOGGER.finest("Wait for finished keyringTask"); keyringTask.waitFinished(); + LOGGER.finest("keyringTask done."); toRun.run(); return ; } @@ -672,10 +678,12 @@ @Override public void run() { + LOGGER.finest("Showing a wait dialog..."); showWaitingDialog(toRun); synchronized (lock) { lock.notifyAll(); } + LOGGER.finest("Showing a wait dialog - done."); } }); try { @@ -695,7 +703,7 @@ ProgressHandle progress = ProgressHandleFactory.createHandle("keyring"); JComponent progressComponent = ProgressHandleFactory.createProgressComponent(progress); - progressComponent.setPreferredSize(new Dimension(350, 20)); + progress.start(); ConnectProgressDialog panel = new ConnectProgressDialog(progressComponent, NbBundle.getMessage(DatabaseConnection.class, "DatabaseConnection_PleaseWaitMessage")); // NOI18N); panel.getAccessibleContext().setAccessibleDescription(NbBundle.getMessage (ConnectAction.class, "ACS_ConnectingDialogTextA11yDesc")); // NOI18N @@ -703,6 +711,8 @@ NbBundle.getMessage(DatabaseConnection.class, "DatabaseConnection_PleaseWaitTitle"), // NOI18N true); d.add(panel); + d.setSize(new Dimension(500, 100)); + d.setLocationRelativeTo(WindowManager.getDefault().getMainWindow()); keyringTask = RP.post(new Runnable() { @Override @@ -715,6 +725,7 @@ @Override public void run() { if (d != null) { + LOGGER.finest("Hide Waiting For Access to Keyring dialog."); d.setVisible(false); d.dispose(); } @@ -723,6 +734,7 @@ } } }); + LOGGER.finest("Show Waiting For Access to Keyring dialog."); d.setVisible(true); } @@ -744,7 +756,8 @@ if (rpwd == null) { restorePassword(); } - return rpwd.booleanValue(); + assert rpwd != null : "rpwd must be set to true or false"; + return rpwd == null ? false : rpwd.booleanValue(); } /** Sets password should be remembered @@ -786,7 +799,7 @@ propertySupport.firePropertyChange(PROP_PASSWORD, oldpwd, pwd); } } - + /** Creates JDBC connection * Uses DriverManager to create connection to specified database. Throws * DDLException if none of driver/database/user/password is set or if diff -r 8d4322cbb61a db/src/org/netbeans/modules/db/explorer/DatabaseConnectionConvertor.java --- a/db/src/org/netbeans/modules/db/explorer/DatabaseConnectionConvertor.java Fri Nov 11 14:56:22 2011 +0100 +++ b/db/src/org/netbeans/modules/db/explorer/DatabaseConnectionConvertor.java Fri Nov 11 21:18:19 2011 +0100 @@ -58,6 +58,7 @@ import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.nio.charset.CoderResult; +import java.util.Arrays; import java.util.LinkedList; import java.util.Map; import java.util.WeakHashMap; @@ -496,12 +497,14 @@ @Override public void propertyChange(PropertyChangeEvent evt) { - synchronized (this) { - if (saveTask == null) - saveTask = RP.create(this); - keepAlive.add(evt); + if (! Arrays.asList(DatabaseConnection.DONT_SAVE_EVENTS).contains(evt.getPropertyName())) { + synchronized (this) { + if (saveTask == null) + saveTask = RP.create(this); + keepAlive.add(evt); + } + saveTask.schedule(DELAY); } - saveTask.schedule(DELAY); } @Override