Author: [EMAIL PROTECTED]
Date: Mon Sep 29 09:51:56 2008
New Revision: 2725
Modified:
trunk/src/ca/sqlpower/architect/swingui/query/SQLQueryEntryPanel.java
Log:
Rearranged some of the buttons to move towards a better UI.
Added a DBCS manager button to edit the data sources that can be connected
to.
Modified:
trunk/src/ca/sqlpower/architect/swingui/query/SQLQueryEntryPanel.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/swingui/query/SQLQueryEntryPanel.java
(original)
+++ trunk/src/ca/sqlpower/architect/swingui/query/SQLQueryEntryPanel.java
Mon Sep 29 09:51:56 2008
@@ -45,7 +45,10 @@
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
+import javax.swing.JToolBar;
import javax.swing.KeyStroke;
+import javax.swing.event.AncestorEvent;
+import javax.swing.event.AncestorListener;
import org.apache.log4j.Logger;
@@ -55,7 +58,10 @@
import ca.sqlpower.architect.swingui.ArchitectSwingSession;
import ca.sqlpower.architect.swingui.DBTree;
import ca.sqlpower.architect.swingui.DnDTreePathTransferable;
+import
ca.sqlpower.architect.swingui.action.DatabaseConnectionManagerAction;
import ca.sqlpower.sql.CachedRowSet;
+import ca.sqlpower.sql.DatabaseListChangeEvent;
+import ca.sqlpower.sql.DatabaseListChangeListener;
import ca.sqlpower.sql.SPDataSource;
import ca.sqlpower.swingui.SPSUtils;
@@ -69,6 +75,10 @@
private static Logger logger =
Logger.getLogger(SQLQueryEntryPanel.class);
+ /**
+ * The entry value in the input map that will map a key press to our
+ * "Execute" action.
+ */
private static final String EXECUTE_QUERY_ACTION = "Execute Query";
/**
@@ -217,20 +227,67 @@
private DropTarget dt;
+ /**
+ * Listeners that will have it's sqlQueryExecuted method called when a
successful
+ * query is run.
+ */
private List<ExecuteActionListener> executeListeners;
+ private final ArchitectSwingSession session;
+
+ /**
+ * This recreates the database combo box when the list of databases
changes.
+ */
+ private DatabaseListChangeListener dbListChangeListener = new
DatabaseListChangeListener() {
+
+ public void databaseAdded(DatabaseListChangeEvent e) {
+ recreateComboBox();
+ }
+
+ private void recreateComboBox() {
+ databases.removeAllItems();
+ for (SPDataSource ds : session.getContext().getConnections()) {
+ databases.addItem(ds);
+ }
+ }
+
+ public void databaseRemoved(DatabaseListChangeEvent e) {
+ recreateComboBox();
+ }
+
+ };
+
+ /**
+ * Creates a SQLQueryEntryPanel and attaches a drag and drop listener
+ * to a DB Tree.
+ */
public SQLQueryEntryPanel(ArchitectSwingSession session, DBTree
dbTree) {
this(session);
dt = new DropTarget(queryArea, new QueryDropListener(dbTree));
}
- public SQLQueryEntryPanel(ArchitectSwingSession session) {
+ public SQLQueryEntryPanel(ArchitectSwingSession s) {
super();
-
+ this.session = s;
executeListeners = new ArrayList<ExecuteActionListener>();
queryArea = new JTextArea();
- databases = new
JComboBox(session.getContext().getConnections().toArray());
+ databases = new
JComboBox(s.getContext().getConnections().toArray());
+
+
+ addAncestorListener(new AncestorListener(){
+
+ public void ancestorAdded(AncestorEvent event) {
+
session.getContext().getPlDotIni().addDatabaseListChangeListener(dbListChangeListener);
+ }
+
+ public void ancestorMoved(AncestorEvent event) {
+ }
+
+ public void ancestorRemoved(AncestorEvent event) {
+
session.getContext().getPlDotIni().removeDatabaseListChangeListener(dbListChangeListener);
+
+ }});
getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())
@@ -240,21 +297,31 @@
buildUI();
}
+ /**
+ * Builds the UI of the [EMAIL PROTECTED] SQLQueryEntryPanel}.
+ */
private void buildUI() {
- FormLayout textAreaLayout = new FormLayout("max(250dlu;pref):grow,
10dlu, pref", "fill:max(100dlu;pref):grow, pref, pref");
+ JToolBar toolbar = new JToolBar();
+ toolbar.add(executeAction);
+ toolbar.add(new AbstractAction("Clear"){
+ public void actionPerformed(ActionEvent arg0) {
+ queryArea.setText("");
+ }});
+ FormLayout textAreaLayout = new FormLayout(
+ "max(250dlu;pref):grow, 10dlu, pref"
+ , "pref, pref, fill:max(100dlu;pref):grow");
DefaultFormBuilder textAreaBuilder = new
DefaultFormBuilder(textAreaLayout, this);
textAreaBuilder.setDefaultDialogBorder();
- textAreaBuilder.append(new JScrollPane(queryArea), 3);
+ textAreaBuilder.append(toolbar);
textAreaBuilder.nextLine();
textAreaBuilder.append(databases);
-
- textAreaBuilder.append(new JButton(executeAction));
+ JButton dbcsManagerButton = new JButton(new
DatabaseConnectionManagerAction(session));
+ dbcsManagerButton.setText("Manage Connections...");
+ textAreaBuilder.append(dbcsManagerButton);
textAreaBuilder.nextLine();
- textAreaBuilder.append("");
- textAreaBuilder.append(new JButton(new AbstractAction("Clear"){
- public void actionPerformed(ActionEvent arg0) {
- queryArea.setText("");
- }}));
+ textAreaBuilder.append(new JScrollPane(queryArea), 3);
+
+
}
public void addExecuteAction(ExecuteActionListener l) {