Revision: 6220
http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6220&view=rev
Author: gerdwagner
Date: 2011-03-28 20:42:37 +0000 (Mon, 28 Mar 2011)
Log Message:
-----------
Detached result windows now can be rerun
Modified Paths:
--------------
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/TabbedStyleHintController.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/resources/SquirrelResources.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/ISQLPanelAPI.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/SQLPanelAPI.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ErrorPanel.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ISQLResultExecuter.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrame.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTab.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLPanel.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanel.java
trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/squirrel.properties
trunk/sql12/doc/src/main/resources/changes.txt
Added Paths:
-----------
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrameListener.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTabFactory.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanelFacade.java
Removed Paths:
-------------
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/IResultTabListener.java
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/ResultTabAdapter.java
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/TabbedStyleHintController.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/TabbedStyleHintController.java 2011-03-27 19:58:47 UTC (rev 6219)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/gui/desktopcontainer/TabbedStyleHintController.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -50,7 +50,7 @@
- _dlg.setSize(350, 180);
+ _dlg.setSize(350, 250);
GUIUtils.centerWithinParent(_dlg);
_dlg.setVisible(true);
}
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/resources/SquirrelResources.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/resources/SquirrelResources.java 2011-03-27 19:58:47 UTC (rev 6219)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/resources/SquirrelResources.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -79,6 +79,7 @@
String PREV_SCALE = "prevScale";
String NEXT_SCALE = "nextScale";
+ String RERUN = "rerun";
}
public SquirrelResources(String rsrcBundleBaseName)
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/ISQLPanelAPI.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/ISQLPanelAPI.java 2011-03-27 19:58:47 UTC (rev 6219)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/ISQLPanelAPI.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -22,7 +22,6 @@
import javax.swing.JMenu;
import javax.swing.JMenuItem;
-import net.sourceforge.squirrel_sql.client.session.event.IResultTabListener;
import net.sourceforge.squirrel_sql.client.session.event.ISQLExecutionListener;
import net.sourceforge.squirrel_sql.client.session.event.ISQLPanelListener;
import net.sourceforge.squirrel_sql.client.session.event.ISQLResultExecuterTabListener;
@@ -65,21 +64,8 @@
*/
void removeSQLExecutionListener(ISQLExecutionListener lis);
- /**
- * Add a listener for events in this sessions result tabs.
- *
- * @param lis The listener.
- */
- void addResultTabListener(IResultTabListener lis);
/**
- * Remove a listener for events in this sessions result tabs.
- *
- * @param lis The listener.
- */
- void removeResultTabListener(IResultTabListener lis);
-
- /**
* Add a listener for events in this SQL Panel.
*
* @param lis Listener
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/SQLPanelAPI.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/SQLPanelAPI.java 2011-03-27 19:58:47 UTC (rev 6219)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/SQLPanelAPI.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -38,7 +38,6 @@
import net.sourceforge.squirrel_sql.client.preferences.SquirrelPreferences;
import net.sourceforge.squirrel_sql.client.resources.SquirrelResources;
import net.sourceforge.squirrel_sql.client.session.action.*;
-import net.sourceforge.squirrel_sql.client.session.event.IResultTabListener;
import net.sourceforge.squirrel_sql.client.session.event.ISQLExecutionListener;
import net.sourceforge.squirrel_sql.client.session.event.ISQLPanelListener;
import net.sourceforge.squirrel_sql.client.session.event.ISQLResultExecuterTabListener;
@@ -331,36 +330,6 @@
}
/**
- * Add a listener for events in this sessions result tabs.
- *
- * @param lis The listener.
- */
-// JASON: Do we need these?
- public synchronized void addResultTabListener(IResultTabListener lis)
- {
-// if (lis == null)
-// {
-// throw new IllegalArgumentException("null IResultTabListener passed");
-// }
-// _session.getSessionSheet().getSQLPanel().addResultTabListener(lis);
- }
-
- /**
- * Remove a listener for events in this sessions result tabs.
- *
- * @param lis The listener.
- */
-// JASON: Do we need these?
- public synchronized void removeResultTabListener(IResultTabListener lis)
- {
-// if (lis == null)
-// {
-// throw new IllegalArgumentException("null IResultTabListener passed");
-// }
-// _session.getSessionSheet().getSQLPanel().removeResultTabListener(lis);
- }
-
- /**
* Add a listener for events in this sql panel executer tabs.
*
* @param lis The listener.
Deleted: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/IResultTabListener.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/IResultTabListener.java 2011-03-27 19:58:47 UTC (rev 6219)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/IResultTabListener.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -1,57 +0,0 @@
-package net.sourceforge.squirrel_sql.client.session.event;
-/*
- * Copyright (C) 2001-2002 Colin Bell
- * co...@us...
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-import java.util.EventListener;
-
-/**
- * This listener is called for events to do with the SQL result tabs.
- *
- * @author <A HREF="mailto:co...@us...">Colin Bell</A>
- */
-public interface IResultTabListener extends EventListener
-{
- /**
- * An SQL results tab has been added to the tabbed folder.
- *
- * @param evt The event.
- */
- void resultTabAdded(ResultTabEvent evt);
-
- /**
- * An SQL results tab has been removed from the tabbed folder.
- *
- * @param evt The event.
- */
- void resultTabRemoved(ResultTabEvent evt);
-
- /**
- * An SQL results tab has been "torn off" from the tabbed folder into
- * its own frame.
- *
- * @param evt The event.
- */
- void resultTabTornOff(ResultTabEvent evt);
-
- /**
- * A "torn off" SQL results tab has been returned to the tabbed folder.
- *
- * @param evt The event.
- */
- void tornOffResultTabReturned(ResultTabEvent evt);
-}
Deleted: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/ResultTabAdapter.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/ResultTabAdapter.java 2011-03-27 19:58:47 UTC (rev 6219)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/event/ResultTabAdapter.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -1,68 +0,0 @@
-package net.sourceforge.squirrel_sql.client.session.event;
-/*
- * Copyright (C) 2001 Colin Bell
- * co...@us...
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-/**
- * An adapter for <TT>IResultTabListener</TT> with empty methods.
- *
- * @author <A HREF="mailto:co...@us...">Colin Bell</A>
- */
-public class ResultTabAdapter implements IResultTabListener
-{
- /**
- * An SQL results tab has been added to the tabbed folder.
- *
- * @param evt The event.
- */
- public void resultTabAdded(ResultTabEvent evt)
- {
- // Empty body.
- }
-
- /**
- * An SQL results tab has been removed from the tabbed folder.
- *
- * @param evt The event.
- */
- public void resultTabRemoved(ResultTabEvent evt)
- {
- // Empty body.
- }
-
- /**
- * An SQL results tab has been "torn off" from the tabbed folder into
- * its own frame.
- *
- * @param evt The event.
- */
- public void resultTabTornOff(ResultTabEvent evt)
- {
- // Empty body.
- }
-
- /**
- * A "torn off" SQL results tab has been returned to the tabbed folder.
- *
- * @param evt The event.
- */
- public void tornOffResultTabReturned(ResultTabEvent evt)
- {
- // Empty body.
- }
-}
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ErrorPanel.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ErrorPanel.java 2011-03-27 19:58:47 UTC (rev 6219)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ErrorPanel.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -25,6 +25,7 @@
private JPopupMenu _popUp = new JPopupMenu();
private JTextArea _txtArea;
+ private TabButton _btnClose;
public ErrorPanel(ISession session, ErrorPanelListener errorPanelListener, ArrayList<String> sqlExecErrorMsgs, String lastExecutedStatement)
@@ -153,11 +154,17 @@
gbc = new GridBagConstraints(1,0,1,1,0,0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(0,0,0,0),0,0 );
- ret.add(new TabButton(new CloseAction(session)), gbc);
+ _btnClose = new TabButton(new CloseAction(session));
+ ret.add(_btnClose, gbc);
return ret;
}
+ public void hideCloseButton()
+ {
+ _btnClose.setVisible(false);
+ }
+
private class CloseAction extends SquirrelAction
{
CloseAction(ISession session)
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ISQLResultExecuter.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ISQLResultExecuter.java 2011-03-27 19:58:47 UTC (rev 6219)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ISQLResultExecuter.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -28,18 +28,8 @@
*/
public interface ISQLResultExecuter
{
- /** The factory interface that will create ISQLResultExecuter objects
- * that will be attached to SQLPanels. The factory is required because
- * there will be potentially many sqlpanels for a session each with their own
- * set of resultexecuters
- */
- public static interface ISQLResultExecuterFactory
- {
- public ISQLResultExecuter createSQLResultExecuter(ISession session,
- ISQLPanelAPI sqlpanel);
- }
- /** Returns the title of this executor.*/
+ /** Returns the title of this executor.*/
public String getTitle();
public JComponent getComponent();
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrame.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrame.java 2011-03-27 19:58:47 UTC (rev 6219)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrame.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -21,11 +21,16 @@
*/
import net.sourceforge.squirrel_sql.client.IApplication;
+import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.DialogWidget;
import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.SessionDialogWidget;
-import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.DesktopContainerFactory;
-import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.DesktopStyle;
+import net.sourceforge.squirrel_sql.client.resources.SquirrelResources;
import net.sourceforge.squirrel_sql.client.session.ISession;
+import net.sourceforge.squirrel_sql.client.session.SQLExecutionInfo;
import net.sourceforge.squirrel_sql.client.session.action.ReturnResultTabAction;
+import net.sourceforge.squirrel_sql.client.session.event.ISQLExecutionListener;
+import net.sourceforge.squirrel_sql.fw.datasetviewer.IDataSetUpdateableTableModel;
+import net.sourceforge.squirrel_sql.fw.datasetviewer.ResultSetDataSet;
+import net.sourceforge.squirrel_sql.fw.datasetviewer.ResultSetMetaDataDataSet;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
import net.sourceforge.squirrel_sql.fw.util.log.ILogger;
@@ -35,6 +40,8 @@
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.util.ArrayList;
+
/**
* JASON: Rename to ResultInternalFrame
* Torn off frame that contains SQL results.
@@ -46,69 +53,232 @@
/** Logger for this class. */
private static ILogger s_log = LoggerController.createLogger(ResultFrame.class);
- private static final StringManager s_stringMgr =
- StringManagerFactory.getStringManager(ResultFrame.class);
+ private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(ResultFrame.class);
+ private ISession _session;
/** SQL Results. */
private IResultTab _tab;
+ private ResultTabFactory _resultTabFactory;
+ private ResultFrameListener _resultFrameListener;
+ private JButton _btnReturnToTab;
private JCheckBox _chkOnTop;
+ private JButton _btnReRun;
+ private JPanel _centerPanel;
/**
* Ctor.
*
+ *
+ *
+ *
+ *
* @param session Current session.
* @param tab SQL results tab.
*
- * @throws IllegalArgumentException
+ * @param resultTabFactory
+ * @param resultFrameListener
+ *@param isOnRerun @throws IllegalArgumentException
* If a <TT>null</TT> <TT>ISession</TT> or
* <TT>ResultTab</TT> passed.
*/
- public ResultFrame(ISession session, IResultTab tab)
+ public ResultFrame(final ISession session, IResultTab tab, ResultTabFactory resultTabFactory, ResultFrameListener resultFrameListener, boolean checkStayOnTop, boolean isOnRerun)
{
super(getFrameTitle(session, tab), true, true, true, true, session);
+ _session = session;
_tab = tab;
+ _resultTabFactory = resultTabFactory;
+ _resultFrameListener = resultFrameListener;
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
- final Container cont = getContentPane();
- cont.setLayout(new BorderLayout());
+ getContentPane().setLayout(new BorderLayout());
final IApplication app = session.getApplication();
+ getContentPane().add(createButtonPanel(session, app, checkStayOnTop), BorderLayout.NORTH);
+ _centerPanel = new JPanel(new GridLayout(1,1));
+ getContentPane().add(_centerPanel, BorderLayout.CENTER);
+ _centerPanel.add(_tab.getOutputComponent());
+
+ _chkOnTop.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ onStayOnTopChanged();
+ }
+ });
+
+ _btnReRun.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ onRerun();
+ }
+ });
+
+ if (false == isOnRerun)
+ {
+ showFrame(this, false);
+ }
+ }
+
+ private void onRerun()
+ {
+ _btnReturnToTab.setEnabled(false);
+ _btnReRun.setEnabled(false);
+ _centerPanel.removeAll();
+ new SQLExecutionHandler(_tab, _session, _tab.getSqlString(), createSQLExecutionHandlerListener(), new ISQLExecutionListener[0]);
+ }
+
+ private ISQLExecutionHandlerListener createSQLExecutionHandlerListener()
+ {
+ return new ISQLExecutionHandlerListener()
+ {
+ @Override
+ public void addResultsTab(SQLExecutionInfo info, ResultSetDataSet rsds, ResultSetMetaDataDataSet rsmdds, IDataSetUpdateableTableModel creator, IResultTab resultTabToReplace)
+ {
+ onAddResultsTab(info, rsds, rsmdds, creator, resultTabToReplace);
+ }
+
+ @Override
+ public void removeCancelPanel(CancelPanelCtrl cancelPanelCtrl, IResultTab resultTabToReplace)
+ {
+ onRemoveCancelPanel(cancelPanelCtrl, resultTabToReplace);
+ }
+
+ @Override
+ public void setCancelPanel(CancelPanelCtrl cancelPanelCtrl)
+ {
+ onSetCancelPanel(cancelPanelCtrl);
+ }
+
+ @Override
+ public void displayErrors(ArrayList<String> sqlExecErrorMsgs, String lastExecutedStatement)
+ {
+ onDisplayErrors(sqlExecErrorMsgs, lastExecutedStatement);
+ }
+ };
+ }
+
+ private void onDisplayErrors(final ArrayList<String> sqlExecErrorMsgs, final String lastExecutedStatement)
+ {
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ _centerPanel.removeAll();
+ ErrorPanel errorPanel = _resultTabFactory.createErrorPanel(sqlExecErrorMsgs, lastExecutedStatement);
+ errorPanel.hideCloseButton();
+ _centerPanel.add(errorPanel);
+ _btnReRun.setEnabled(true);
+ }
+ });
+ }
+
+ private void onSetCancelPanel(final CancelPanelCtrl cancelPanelCtrl)
+ {
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ _centerPanel.removeAll();
+ _centerPanel.add(cancelPanelCtrl.getPanel(), BorderLayout.CENTER);
+ }
+ });
+ }
+
+ private void onRemoveCancelPanel(CancelPanelCtrl cancelPanelCtrl, IResultTab resultTabToReplace)
+ {
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ _centerPanel.removeAll();
+ }
+ });
+ }
+
+ private void onAddResultsTab(final SQLExecutionInfo info, final ResultSetDataSet rsds, final ResultSetMetaDataDataSet rsmdds, final IDataSetUpdateableTableModel creator, IResultTab resultTabToReplace)
+ {
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ try
+ {
+ _centerPanel.removeAll();
+ ResultTab tab = _resultTabFactory.createResultTab(info, creator, rsds, rsmdds);
+ ResultFrame frame = new ResultFrame(_session, tab, _resultTabFactory, _resultFrameListener, _chkOnTop.isSelected(), true);
+ showFrame(frame, true);
+ setVisible(false);
+ dispose();
+
+ _resultFrameListener.frameReplaced(ResultFrame.this, frame);
+ }
+ catch (Throwable t)
+ {
+ _session.showErrorMessage(t);
+ }
+ }
+ });
+ }
+
+ private void showFrame(ResultFrame frame, boolean isOnRerun)
+ {
+ _session.getApplication().getMainFrame().addWidget(frame);
+ if (isOnRerun)
+ {
+ frame.setBounds(getBounds());
+ }
+ else
+ {
+ frame.pack();
+ DialogWidget.centerWithinDesktop(frame);
+ }
+
+ frame.setVisible(true);
+ frame.toFront();
+ frame.requestFocus();
+ }
+
+ private JPanel createButtonPanel(ISession session, IApplication app, boolean checkStayOnTop)
+ {
JPanel pnlButtons = new JPanel(new GridBagLayout());
GridBagConstraints gbc;
- JButton rtnBtn = new JButton(new ReturnResultTabAction(app, this));
+ _btnReturnToTab = new JButton(new ReturnResultTabAction(app, this));
gbc = new GridBagConstraints(0,0,1,1,0,0,GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(0,5,0,5), 0,0);
- pnlButtons.add(rtnBtn, gbc);
+ pnlButtons.add(_btnReturnToTab, gbc);
// i18n[resultFrame.stayOnTop=Stay on top]
_chkOnTop = new JCheckBox(s_stringMgr.getString("resultFrame.stayOnTop"));
gbc = new GridBagConstraints(1,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,5,0,5), 0,0);
pnlButtons.add(_chkOnTop, gbc);
- _chkOnTop.setSelected(true);
+ _chkOnTop.setSelected(checkStayOnTop);
+ initLayer();
_chkOnTop.setVisible(session.getApplication().getDesktopStyle().supportsLayers());
- _chkOnTop.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- onStayOnTopChanged();
- }
- });
-
- gbc = new GridBagConstraints(2,0,1,1,1,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,5,0,5), 0,0);
+ gbc = new GridBagConstraints(2,0,1,1,1,0,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,5,0,5), 0,0);
pnlButtons.add(new JPanel(), gbc);
+ ImageIcon icon = session.getApplication().getResources().getIcon(SquirrelResources.IImageNames.RERUN);
+ _btnReRun = new JButton(icon);
+ gbc = new GridBagConstraints(3,0,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0,5,0,5), 0,0);
+ pnlButtons.add(_btnReRun, gbc);
-
- cont.add(pnlButtons, BorderLayout.NORTH);
- cont.add(tab.getOutputComponent(), BorderLayout.CENTER);
+ return pnlButtons;
}
private void onStayOnTopChanged()
{
+ initLayer();
+ toFront();
+ }
+
+ private void initLayer()
+ {
if(_chkOnTop.isSelected())
{
setLayer(JLayeredPane.PALETTE_LAYER.intValue());
@@ -117,10 +287,6 @@
{
setLayer(JLayeredPane.DEFAULT_LAYER.intValue());
}
-
- // Needs to be done in both cases because if the window goes back to
- // the default layer it goes back behind all other windows too.
- toFront();
}
/**
Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrameListener.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrameListener.java (rev 0)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultFrameListener.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -0,0 +1,6 @@
+package net.sourceforge.squirrel_sql.client.session.mainpanel;
+
+public interface ResultFrameListener
+{
+ void frameReplaced(ResultFrame oldFrame, ResultFrame newFrame);
+}
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTab.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTab.java 2011-03-27 19:58:47 UTC (rev 6219)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTab.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -32,6 +32,8 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.text.NumberFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
@@ -84,7 +86,7 @@
private JTabbedPane _tp;
/** <TT>SQLExecuterPanel</TT> that this tab is showing results for. */
- private SQLResultExecuterPanel _sqlPanel;
+ private SQLResultExecuterPanelFacade _sqlResultExecuterPanelFacade;
/** Label shows the current SQL script. */
private JLabel _currentSqlLbl = new JLabel();
@@ -113,7 +115,7 @@
* Ctor.
*
* @param session Current session.
- * @param sqlPanel <TT>SQLResultExecuterPanel</TT> that this tab is
+ * @param sqlResultExecuterPanelFacade <TT>SQLResultExecuterPanel</TT> that this tab is
* showing results for.
* @param id Unique ID for this object.
*
@@ -121,7 +123,7 @@
* Thrown if a <TT>null</TT> <TT>ISession</TT>,
* <<TT>SQLResultExecuterPanel</TT> or <TT>IIdentifier</TT> passed.
*/
- public ResultTab(ISession session, SQLResultExecuterPanel sqlPanel,
+ public ResultTab(ISession session, SQLResultExecuterPanelFacade sqlResultExecuterPanelFacade,
IIdentifier id, SQLExecutionInfo exInfo,
IDataSetUpdateableTableModel creator, ResultTabListener resultTabListener)
throws IllegalArgumentException
@@ -132,7 +134,7 @@
{
throw new IllegalArgumentException("Null ISession passed");
}
- if (sqlPanel == null)
+ if (sqlResultExecuterPanelFacade == null)
{
throw new IllegalArgumentException("Null SQLPanel passed");
}
@@ -142,7 +144,7 @@
}
_session = session;
- _sqlPanel = sqlPanel;
+ _sqlResultExecuterPanelFacade = sqlResultExecuterPanelFacade;
_id = id;
init(creator, exInfo);
@@ -326,7 +328,7 @@
public void closeTab()
{
add(_tp, BorderLayout.CENTER);
- _sqlPanel.closeResultTab(this);
+ _sqlResultExecuterPanelFacade.closeResultTab(this);
}
/**
@@ -335,12 +337,9 @@
public void returnToTabbedPane()
{
add(_tp, BorderLayout.CENTER);
- _sqlPanel.returnToTabbedPane(this);
+ _sqlResultExecuterPanelFacade.returnToTabbedPane(this);
}
- /**
- * @see net.sourceforge.squirrel_sql.client.session.mainpanel.IResultTab#getOutputComponent()
- */
public Component getOutputComponent()
{
return _tp;
@@ -510,7 +509,7 @@
public void actionPerformed(ActionEvent evt)
{
- _sqlPanel.createSQLResultFrame(ResultTab.this);
+ _sqlResultExecuterPanelFacade.createSQLResultFrame(ResultTab.this);
}
}
@@ -550,9 +549,8 @@
private static class QueryInfoPanel extends JPanel
{
- private static final long serialVersionUID = 2124193091025851544L;
-
- private MultipleLineLabel _queryLbl = new MultipleLineLabel();
+
+ private MultipleLineLabel _queryLbl = new MultipleLineLabel();
private JLabel _rowCountLbl = new JLabel();
private JLabel _executedLbl = new JLabel();
private JLabel _elapsedLbl = new JLabel();
Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTabFactory.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTabFactory.java (rev 0)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTabFactory.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -0,0 +1,56 @@
+package net.sourceforge.squirrel_sql.client.session.mainpanel;
+
+import net.sourceforge.squirrel_sql.client.session.ISession;
+import net.sourceforge.squirrel_sql.client.session.SQLExecutionInfo;
+import net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetException;
+import net.sourceforge.squirrel_sql.fw.datasetviewer.IDataSetUpdateableTableModel;
+import net.sourceforge.squirrel_sql.fw.datasetviewer.ResultSetDataSet;
+import net.sourceforge.squirrel_sql.fw.datasetviewer.ResultSetMetaDataDataSet;
+import net.sourceforge.squirrel_sql.fw.id.IntegerIdentifierFactory;
+
+import java.util.ArrayList;
+
+public class ResultTabFactory
+{
+ private IntegerIdentifierFactory _idFactory = new IntegerIdentifierFactory();
+ private ISession _session;
+ private SQLResultExecuterPanelFacade _sqlResultExecuterPanelFacade;
+
+ public ResultTabFactory(ISession session, SQLResultExecuterPanelFacade sqlResultExecuterPanelFacade)
+ {
+ _session = session;
+ _sqlResultExecuterPanelFacade = sqlResultExecuterPanelFacade;
+ }
+
+ public ResultTab createResultTab(SQLExecutionInfo exInfo, IDataSetUpdateableTableModel creator, ResultSetDataSet rsds, ResultSetMetaDataDataSet mdds) throws DataSetException
+ {
+ final ResultTabListener resultTabListener = new ResultTabListener()
+ {
+ public void rerunSQL(String sql, IResultTab resultTab)
+ {
+ _sqlResultExecuterPanelFacade.rerunSQL(sql, resultTab);
+ }
+ };
+
+
+ ResultTab tab = new ResultTab(_session, _sqlResultExecuterPanelFacade, _idFactory.createIdentifier(), exInfo, creator, resultTabListener);
+ tab.showResults(rsds, mdds, exInfo);
+ return tab;
+ }
+
+ public ErrorPanel createErrorPanel(ArrayList<String> sqlExecErrorMsgs, String lastExecutedStatement)
+ {
+ ErrorPanelListener errorPanelListener = new ErrorPanelListener()
+ {
+ @Override
+ public void removeErrorPanel(ErrorPanel errorPanel)
+ {
+ _sqlResultExecuterPanelFacade.removeErrorPanel(errorPanel);
+ }
+ };
+
+ return new ErrorPanel(_session, errorPanelListener, sqlExecErrorMsgs, lastExecutedStatement);
+ }
+
+
+}
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLPanel.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLPanel.java 2011-03-27 19:58:47 UTC (rev 6219)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLPanel.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -66,14 +66,7 @@
import net.sourceforge.squirrel_sql.client.session.ISession;
import net.sourceforge.squirrel_sql.client.session.SQLPanelAPI;
import net.sourceforge.squirrel_sql.client.session.action.OpenSqlHistoryAction;
-import net.sourceforge.squirrel_sql.client.session.event.IResultTabListener;
-import net.sourceforge.squirrel_sql.client.session.event.ISQLExecutionListener;
-import net.sourceforge.squirrel_sql.client.session.event.ISQLPanelListener;
-import net.sourceforge.squirrel_sql.client.session.event.ISQLResultExecuterTabListener;
-import net.sourceforge.squirrel_sql.client.session.event.ResultTabEvent;
-import net.sourceforge.squirrel_sql.client.session.event.SQLExecutionAdapter;
-import net.sourceforge.squirrel_sql.client.session.event.SQLPanelEvent;
-import net.sourceforge.squirrel_sql.client.session.event.SQLResultExecuterTabEvent;
+import net.sourceforge.squirrel_sql.client.session.event.*;
import net.sourceforge.squirrel_sql.client.session.properties.SessionProperties;
import net.sourceforge.squirrel_sql.fw.gui.FontInfo;
import net.sourceforge.squirrel_sql.fw.gui.IntegerField;
@@ -83,6 +76,19 @@
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
import net.sourceforge.squirrel_sql.fw.util.log.ILogger;
import net.sourceforge.squirrel_sql.fw.util.log.LoggerController;
+
+import javax.swing.*;
+import javax.swing.event.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.prefs.Preferences;
/**
* This is the panel where SQL scripts can be entered and executed.
*
@@ -613,50 +619,6 @@
}
}
- @SuppressWarnings("unused")
- private void fireTabTornOffEvent(IResultTab tab)
- {
- // Guaranteed to be non-null.
- Object[] listeners = _listeners.getListenerList();
- // Process the listeners last to first, notifying
- // those that are interested in this event.
- ResultTabEvent evt = null;
- for (int i = listeners.length - 2; i >= 0; i -= 2)
- {
- if (listeners[i] == IResultTabListener.class)
- {
- // Lazily create the event:
- if (evt == null)
- {
- evt = new ResultTabEvent(_session, tab);
- }
- ((IResultTabListener) listeners[i + 1]).resultTabTornOff(evt);
- }
- }
- }
-
- @SuppressWarnings("unused")
- private void fireTornOffResultTabReturned(IResultTab tab)
- {
- // Guaranteed to be non-null.
- Object[] listeners = _listeners.getListenerList();
- // Process the listeners last to first, notifying
- // those that are interested in this event.
- ResultTabEvent evt = null;
- for (int i = listeners.length - 2; i >= 0; i -= 2)
- {
- if (listeners[i] == IResultTabListener.class)
- {
- // Lazily create the event:
- if (evt == null)
- {
- evt = new ResultTabEvent(_session, tab);
- }
- ((IResultTabListener) listeners[i + 1]).tornOffResultTabReturned(evt);
- }
- }
- }
-
private void fireExecuterTabAdded(ISQLResultExecuter exec)
{
// Guaranteed to be non-null.
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanel.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanel.java 2011-03-27 19:58:47 UTC (rev 6219)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanel.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -17,34 +17,10 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.sql.SQLException;
-import java.util.*;
-import javax.swing.Action;
-import javax.swing.ImageIcon;
-import javax.swing.JComponent;
-import javax.swing.JLayeredPane;
-import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.JTabbedPane;
-import javax.swing.KeyStroke;
-import javax.swing.SwingUtilities;
-import javax.swing.event.EventListenerList;
-
import net.sourceforge.squirrel_sql.client.action.ActionCollection;
import net.sourceforge.squirrel_sql.client.gui.builders.UIFactory;
import net.sourceforge.squirrel_sql.client.gui.desktopcontainer.DialogWidget;
-import net.sourceforge.squirrel_sql.client.preferences.SquirrelPreferences;
import net.sourceforge.squirrel_sql.client.session.ISQLEntryPanel;
import net.sourceforge.squirrel_sql.client.session.ISession;
import net.sourceforge.squirrel_sql.client.session.SQLExecutionInfo;
@@ -52,19 +28,27 @@
import net.sourceforge.squirrel_sql.client.session.action.CloseAllSQLResultTabsButCurrentAction;
import net.sourceforge.squirrel_sql.client.session.action.CloseCurrentSQLResultTabAction;
import net.sourceforge.squirrel_sql.client.session.action.ToggleCurrentSQLResultTabStickyAction;
-import net.sourceforge.squirrel_sql.client.session.event.IResultTabListener;
import net.sourceforge.squirrel_sql.client.session.event.ISQLExecutionListener;
-import net.sourceforge.squirrel_sql.client.session.event.ResultTabEvent;
import net.sourceforge.squirrel_sql.client.session.properties.SessionProperties;
import net.sourceforge.squirrel_sql.fw.datasetviewer.*;
-import net.sourceforge.squirrel_sql.fw.datasetviewer.cellcomponent.DataTypeClob;
-import net.sourceforge.squirrel_sql.fw.id.IntegerIdentifierFactory;
import net.sourceforge.squirrel_sql.fw.sql.ISQLConnection;
import net.sourceforge.squirrel_sql.fw.util.Resources;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
import net.sourceforge.squirrel_sql.fw.util.log.ILogger;
import net.sourceforge.squirrel_sql.fw.util.log.LoggerController;
+
+import javax.swing.*;
+import javax.swing.event.EventListenerList;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.sql.SQLException;
+import java.util.ArrayList;
/**
* This is the panel where SQL scripts are executed and results presented.
*
@@ -103,11 +87,9 @@
/** Listeners */
private EventListenerList _listeners = new EventListenerList();
- /** Factory for generating unique IDs for new <TT>ResultTab</TT> objects. */
- private IntegerIdentifierFactory _idFactory = new IntegerIdentifierFactory();
+ private ResultTabFactory _resultTabFactory;
+
private IResultTab _stickyTab;
-
- private SquirrelPreferences _prefs = null;
/**
* Ctor.
@@ -119,13 +101,49 @@
*/
public SQLResultExecuterPanel(ISession session)
{
- super();
+ _resultTabFactory = new ResultTabFactory(session, createSQLResultExecuterPanelFacade());
setSession(session);
createGUI();
propertiesHaveChanged(null);
}
- public String getTitle()
+ private SQLResultExecuterPanelFacade createSQLResultExecuterPanelFacade()
+ {
+ return new SQLResultExecuterPanelFacade()
+ {
+ @Override
+ public void closeResultTab(ResultTab resultTab)
+ {
+ SQLResultExecuterPanel.this.closeResultTab(resultTab);
+ }
+
+ @Override
+ public void returnToTabbedPane(ResultTab resultTab)
+ {
+ SQLResultExecuterPanel.this.returnToTabbedPane(resultTab);
+ }
+
+ @Override
+ public void createSQLResultFrame(ResultTab resultTab)
+ {
+ SQLResultExecuterPanel.this.createSQLResultFrame(resultTab);
+ }
+
+ @Override
+ public void rerunSQL(String sql, IResultTab resultTab)
+ {
+ SQLResultExecuterPanel.this.rerunSQL(sql, resultTab);
+ }
+
+ @Override
+ public void removeErrorPanel(ErrorPanel errorPanel)
+ {
+ SQLResultExecuterPanel.this.removeErrorPanel(errorPanel);
+ }
+ };
+ }
+
+ public String getTitle()
{
// i18n[SQLResultExecuterPanel.title=Results]
return s_stringMgr.getString("SQLResultExecuterPanel.title");
@@ -152,7 +170,6 @@
}
sessionClosing();
_session = session;
- _prefs = _session.getApplication().getSquirrelPreferences();
_propsListener = new MyPropertiesListener();
_session.getProperties().addPropertyChangeListener(_propsListener);
}
@@ -197,40 +214,7 @@
_listeners.remove(ISQLExecutionListener.class, lis);
}
- /**
- * Add a listener listening for events on result tabs.
- *
- * @param lis Listener
- *
- * @throws IllegalArgumentException
- * If a null <TT>IResultTabListener</TT> passed.
- */
- public synchronized void addResultTabListener(IResultTabListener lis)
- {
- if (lis == null)
- {
- throw new IllegalArgumentException("IResultTabListener == null");
- }
- _listeners.add(IResultTabListener.class, lis);
- }
- /**
- * Remove a listener listening for events on result tabs.
- *
- * @param lis Listener
- *
- * @throws IllegalArgumentException
- * If a null <TT>IResultTabListener</TT> passed.
- */
- public synchronized void removeResultTabListener(IResultTabListener lis)
- {
- if (lis == null)
- {
- throw new IllegalArgumentException("IResultTabListener == null");
- }
- _listeners.remove(IResultTabListener.class, lis);
- }
-
public void execute(ISQLEntryPanel sqlPanel)
{
removeErrorPanels();
@@ -343,22 +327,19 @@
private void showErrorPanel(ArrayList<String> sqlExecErrorMsgs, String lastExecutedStatement)
{
- ErrorPanelListener errorPanelListener = new ErrorPanelListener()
- {
- @Override
- public void removeErrorPanel(ErrorPanel errorPanel)
- {
- _tabbedExecutionsPanel.remove(errorPanel);
- }
- };
-
- ErrorPanel errorPanel = new ErrorPanel(_session, errorPanelListener, sqlExecErrorMsgs, lastExecutedStatement);
+ ErrorPanel errorPanel = _resultTabFactory.createErrorPanel(sqlExecErrorMsgs, lastExecutedStatement);
_tabbedExecutionsPanel.add(s_stringMgr.getString("SQLResultExecuterPanel.ErrorTabHeader"), errorPanel);
_tabbedExecutionsPanel.setSelectedComponent(errorPanel);
}
- private void onRerunSQL(String sql, IResultTab resultTab)
+
+ private void removeErrorPanel(ErrorPanel errorPanel)
{
+ _tabbedExecutionsPanel.remove(errorPanel);
+ }
+
+ private void rerunSQL(String sql, IResultTab resultTab)
+ {
new SQLExecutionHandler(resultTab, _session, sql, createSQLExecutionHandlerListener(), new ISQLExecutionListener[0]);
}
@@ -539,7 +520,7 @@
* @throws IllegalArgumentException
* Thrown if a <TT>null</TT> <TT>ResultTab</TT> passed.
*/
- public void closeResultTab(ResultTab tab)
+ private void closeResultTab(ResultTab tab)
{
if (tab == null)
{
@@ -547,10 +528,9 @@
}
s_log
.debug("SQLPanel.closeResultTab(" + tab.getIdentifier().toString()
- + ")");
+ + ")");
tab.clear();
_tabbedExecutionsPanel.remove(tab);
- fireTabRemovedEvent(tab);
}
/**
@@ -587,91 +567,7 @@
}
}
- protected void fireTabAddedEvent(IResultTab tab)
- {
- // Guaranteed to be non-null.
- Object[] listeners = _listeners.getListenerList();
- // Process the listeners last to first, notifying
- // those that are interested in this event.
- ResultTabEvent evt = null;
- for (int i = listeners.length - 2; i >= 0; i -= 2)
- {
- if (listeners[i] == IResultTabListener.class)
- {
- // Lazily create the event:
- if (evt == null)
- {
- evt = new ResultTabEvent(_session, tab);
- }
- ((IResultTabListener)listeners[i + 1]).resultTabAdded(evt);
- }
- }
- }
- protected void fireTabRemovedEvent(IResultTab tab)
- {
- // Guaranteed to be non-null.
- Object[] listeners = _listeners.getListenerList();
- // Process the listeners last to first, notifying
- // those that are interested in this event.
- ResultTabEvent evt = null;
- for (int i = listeners.length - 2; i >= 0; i -= 2)
- {
- if (listeners[i] == IResultTabListener.class)
- {
- // Lazily create the event:
- if (evt == null)
- {
- evt = new ResultTabEvent(_session, tab);
- }
- ((IResultTabListener)listeners[i + 1]).resultTabRemoved(evt);
- }
- }
- }
-
- protected void fireTabTornOffEvent(IResultTab tab)
- {
- // Guaranteed to be non-null.
- Object[] listeners = _listeners.getListenerList();
- // Process the listeners last to first, notifying
- // those that are interested in this event.
- ResultTabEvent evt = null;
- for (int i = listeners.length - 2; i >= 0; i -= 2)
- {
- if (listeners[i] == IResultTabListener.class)
- {
- // Lazily create the event:
- if (evt == null)
- {
- evt = new ResultTabEvent(_session, tab);
- }
- ((IResultTabListener)listeners[i + 1]).resultTabTornOff(evt);
- }
- }
- }
-
- protected void fireTornOffResultTabReturned(IResultTab tab)
- {
- // Guaranteed to be non-null.
- Object[] listeners = _listeners.getListenerList();
- // Process the listeners last to first, notifying
- // those that are interested in this event.
- ResultTabEvent evt = null;
- for (int i = listeners.length - 2; i >= 0; i -= 2)
- {
- if (listeners[i] == IResultTabListener.class)
- {
- // Lazily create the event:
- if (evt == null)
- {
- evt = new ResultTabEvent(_session, tab);
- }
- ((IResultTabListener)listeners[i + 1])
- .tornOffResultTabReturned(evt);
- }
- }
- }
-
protected String fireSQLToBeExecutedEvent(String sql)
{
// Guaranteed to be non-null.
@@ -703,7 +599,7 @@
* @throws IllegalArgumentException
* Thrown if a <TT>null</TT> <TT>ResultTab</TT> passed.
*/
- public void createSQLResultFrame(ResultTab tab)
+ private void createSQLResultFrame(ResultTab tab)
{
if (tab == null)
{
@@ -712,28 +608,26 @@
s_log.debug("SQLPanel.createSQLResultFrame(" + tab.getIdentifier().toString()
+ ")");
_tabbedExecutionsPanel.remove(tab);
- ResultFrame frame = new ResultFrame(_session, tab);
- _sqlResultFrames.add(frame);
- _session.getApplication().getMainFrame().addWidget(frame);
- frame.setLayer(JLayeredPane.PALETTE_LAYER);
- fireTabTornOffEvent(tab);
-
- if (false == _session.getApplication().getDesktopStyle().supportsLayers())
+ ResultFrameListener resultFrameListener = new ResultFrameListener()
{
- frame.pack();
- DialogWidget.centerWithinDesktop(frame);
- }
- frame.setVisible(true);
+ @Override
+ public void frameReplaced(ResultFrame oldFrame, ResultFrame newFrame)
+ {
+ onFrameReplaced(oldFrame, newFrame);
+ }
+ };
- // There used to be a frame.pack() here but it resized the frame
- // to be very wide if text output was used.
- frame.toFront();
- frame.requestFocus();
+ ResultFrame frame = new ResultFrame(_session, tab, _resultTabFactory, resultFrameListener,true, false);
+ _sqlResultFrames.add(frame);
+ }
-
+ private void onFrameReplaced(ResultFrame oldFrame, ResultFrame newFrame)
+ {
+ _sqlResultFrames.remove(oldFrame);
+ _sqlResultFrames.add(newFrame);
}
/**
@@ -744,7 +638,7 @@
* @throws IllegalArgumentException
* Thrown if a <TT>null</TT> <TT>ResultTab</TT> passed.
*/
- public void returnToTabbedPane(ResultTab tab)
+ private void returnToTabbedPane(ResultTab tab)
{
if (tab == null)
{
@@ -765,7 +659,6 @@
addResultsTab(tab, null);
- fireTornOffResultTabReturned(tab);
}
/**
@@ -774,63 +667,23 @@
public IResultTab getSelectedResultTab() {
return (IResultTab)_tabbedExecutionsPanel.getSelectedComponent();
}
-
- /**
- * The idea here is to allow the caller to force the result to be re-run,
- * potentially altering the output in the case where readFully is true and
- * the result previously contained data placeholders (<clob>). This will
- * be useful for automating export to CSV/Excel of CLOB data, where it is
- * most likely that the user doesn't want to see <clob> in the resultant
- * export file.
- *
- * @param readFully if true, then the configuration will (temporarily) be
- * set so that clob data is read and displayed.
- */
- public void reRunSelectedResultTab(boolean readFully) {
- boolean clobReadOrigVal = DataTypeClob.getReadCompleteClob();
- if (readFully) {
- DataTypeClob.setReadCompleteClob(true);
- }
- IResultTab rt = (IResultTab)_tabbedExecutionsPanel.getSelectedComponent();
- rt.reRunSQL();
- if (readFully) {
- DataTypeClob.setReadCompleteClob(clobReadOrigVal);
- }
- }
- private void onAddResultsTab(final SQLExecutionInfo exInfo,
+ private void onAddResultsTab(final SQLExecutionInfo exInfo,
final ResultSetDataSet rsds,
final ResultSetMetaDataDataSet mdds,
final IDataSetUpdateableTableModel creator,
final IResultTab resultTabToReplace)
{
- final ResultTabListener resultTabListener = new ResultTabListener()
- {
- public void rerunSQL(String sql, IResultTab resultTab)
- {
- onRerunSQL(sql, resultTab);
- }
- };
-
- // We are in a thread. Do GUI work on event queque
-
-
-
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
try
{
- ResultTab tab = new ResultTab(_session, SQLResultExecuterPanel.this, _idFactory.createIdentifier(), exInfo, creator, resultTabListener);
- s_log.debug("Created new tab " + tab.getIdentifier().toString()
- + " for results.");
+ ResultTab tab = _resultTabFactory.createResultTab(exInfo, creator, rsds, mdds);
- tab.showResults(rsds, mdds, exInfo);
-
addResultsTab(tab, resultTabToReplace);
_tabbedExecutionsPanel.setSelectedComponent(tab);
- fireTabAddedEvent(tab);
}
catch (Throwable t)
{
Added: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanelFacade.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanelFacade.java (rev 0)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/SQLResultExecuterPanelFacade.java 2011-03-28 20:42:37 UTC (rev 6220)
@@ -0,0 +1,14 @@
+package net.sourceforge.squirrel_sql.client.session.mainpanel;
+
+public interface SQLResultExecuterPanelFacade
+{
+ void closeResultTab(ResultTab resultTab);
+
+ void returnToTabbedPane(ResultTab resultTab);
+
+ void createSQLResultFrame(ResultTab resultTab);
+
+ void rerunSQL(String sql, IResultTab resultTab);
+
+ void removeErrorPanel(ErrorPanel errorPanel);
+}
Modified: trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/squirrel.properties
===================================================================
--- trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/squirrel.properties 2011-03-27 19:58:47 UTC (rev 6219)
+++ trunk/sql12/app/src/main/resources/net/sourceforge/squirrel_sql/client/resources/squirrel.properties 2011-03-28 20:42:37 UTC (rev 6220)
@@ -65,6 +65,7 @@
prevScale.image=prev.png
nextScale.image=next.png
+rerun.image=eclipse/active/run_exc.gif
########
Modified: trunk/sql12/doc/src/main/resources/changes.txt
===================================================================
--- trunk/sql12/doc/src/main/resources/changes.txt 2011-03-27 19:58:47 UTC (rev 6219)
+++ trunk/sql12/doc/src/main/resources/changes.txt 2011-03-28 20:42:37 UTC (rev 6220)
@@ -7,6 +7,8 @@
Enhancements:
+Detached result windows now can be rerun.
+
Feature Request 3185630: SQL Panel layout:
- Squirrel uses a vertical layout for the SQL Panel. Now, this layout can be changed to horizontal,
which might be useful on wide screen displays. This can be configured within the
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|