Revision: 3974
Author: [email protected]
Date: Thu Nov 4 09:35:52 2010
Log: Refreshing from the Universal SQL Access panel no longer results in an
NPE.
http://code.google.com/p/power-architect/source/detail?r=3974
Modified:
/trunk/src/main/java/ca/sqlpower/architect/swingui/DBTree.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/action/RefreshAction.java
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/DBTree.java Wed Nov
3 13:56:26 2010
+++ /trunk/src/main/java/ca/sqlpower/architect/swingui/DBTree.java Thu Nov
4 09:35:52 2010
@@ -563,7 +563,7 @@
p.getLastPathComponent() != treeModel.getSnapshotContainer()) {
// clicked on DBCS item in DBTree
newMenu.addSeparator();
- newMenu.add(new RefreshAction(session));
+ newMenu.add(new RefreshAction(session, this));
newMenu.addSeparator();
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/action/RefreshAction.java
Thu Jul 22 12:40:28 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/action/RefreshAction.java
Thu Nov 4 09:35:52 2010
@@ -20,6 +20,7 @@
package ca.sqlpower.architect.swingui.action;
import java.awt.Component;
+import java.awt.Window;
import java.awt.event.ActionEvent;
import java.util.HashSet;
import java.util.Set;
@@ -31,6 +32,7 @@
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
+import javax.swing.SwingUtilities;
import javax.swing.tree.TreePath;
import ca.sqlpower.architect.swingui.ASUtils;
@@ -52,6 +54,8 @@
public class RefreshAction extends AbstractArchitectAction {
+ private DBTree dbTree;
+
/**
* This will refresh all of the databases on a different thread and
* allows the refresh to be monitorable.
@@ -128,9 +132,22 @@
"Refreshes the tree to match current structure in the
selected database",
new
ImageIcon(RefreshAction.class.getResource("/icons/database_refresh.png")));
}
+
+ /**
+ * Refreshes based on selections in a specific tree.
+ */
+ public RefreshAction(ArchitectSwingSession session, DBTree tree) {
+ super(session,
+ "Refresh",
+ "Refreshes the tree to match current structure in the
selected database",
+ new
ImageIcon(RefreshAction.class.getResource("/icons/database_refresh.png")));
+ dbTree = tree;
+ }
public void actionPerformed(ActionEvent e) {
- DBTree dbTree = getSession().getDBTree();
+ if (dbTree == null) {
+ dbTree = getSession().getDBTree();
+ }
Set<SQLDatabase> databasesToRefresh = new HashSet<SQLDatabase>();
for (TreePath tp : dbTree.getSelectionPaths()) {
@@ -146,14 +163,14 @@
return;
}
- final SPSwingWorker worker = new
RefreshMonitorableWorker(getSession(), getSession().getArchitectFrame(),
databasesToRefresh);
+ final SPSwingWorker worker = new
RefreshMonitorableWorker(getSession(),
(Window)SwingUtilities.getRoot(dbTree), databasesToRefresh);
final Thread thread = new Thread(worker, "Refresh database
worker");
JProgressBar progressBar = new JProgressBar();
progressBar.setIndeterminate(true);
JLabel messageLabel = new JLabel("Refreshing selected databases.");
ProgressWatcher.watchProgress(progressBar, worker, messageLabel);
- final JDialog dialog = new
JDialog(getSession().getArchitectFrame(), "Refresh");
+ final JDialog dialog = new
JDialog((Window)SwingUtilities.getRoot(dbTree), "Refresh");
DefaultFormBuilder builder = new DefaultFormBuilder(new
FormLayout("pref:grow, 5dlu, pref"));
builder.setDefaultDialogBorder();
builder.append(messageLabel, 3);