Thread: [Squirrel-sql-commits] sql12/app/src/net/sourceforge/squirrel_sql/client/session ISQLPanelAPI.java,1
A Java SQL client for any JDBC compliant database
Brought to you by:
colbell,
gerdwagner
Update of /cvsroot/squirrel-sql/sql12/app/src/net/sourceforge/squirrel_sql/client/session In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14338/sql12/app/src/net/sourceforge/squirrel_sql/client/session Modified Files: ISQLPanelAPI.java ISession.java SQLPanelAPI.java Session.java SessionManager.java Log Message: 1456463: update to allow the user to override the closing of a session in the event that there are unsaved edits and they decide not to save them right away. They can always choose to not save and discard, but this change will make it so that if they choose to not discard, and something happens during the save that causes the edits not to get saved, the session will not be closed. Index: SQLPanelAPI.java =================================================================== RCS file: /cvsroot/squirrel-sql/sql12/app/src/net/sourceforge/squirrel_sql/client/session/SQLPanelAPI.java,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** SQLPanelAPI.java 10 Mar 2006 20:39:58 -0000 1.30 --- SQLPanelAPI.java 23 Mar 2006 13:03:59 -0000 1.31 *************** *** 39,44 **** 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.SessionAdapter; - import net.sourceforge.squirrel_sql.client.session.event.SessionEvent; import net.sourceforge.squirrel_sql.client.session.mainpanel.ISQLResultExecuter; import net.sourceforge.squirrel_sql.client.session.mainpanel.SQLHistoryItem; --- 39,42 ---- *************** *** 86,90 **** _panel.getSQLEntryPanel().addUndoableEditListener(new SQLEntryUndoListener()); _toolsPopupController = new ToolsPopupController(getSession().getApplication(), _panel, getSession()); - getSession().getApplication().getSessionManager().addSessionListener(new MySessionListener()); createStandardEntryAreaMenuItems(); --- 84,87 ---- *************** *** 117,121 **** } ! public void fileSave() { if (_fileManager.save()) { --- 114,118 ---- } ! public boolean fileSave() { if (_fileManager.save()) { *************** *** 126,129 **** --- 123,129 ---- getSession().getApplication().getActionCollection(); actions.enableAction(FileSaveAction.class, false); + return true; + } else { + return false; } } *************** *** 673,677 **** } ! private void showConfirmSaveDialog() { String msg = s_stringMgr.getString("SQLPanelAPI.unsavedchanges"); --- 673,684 ---- } ! public boolean confirmClose() { ! if (unsavedEdits) { ! return showConfirmSaveDialog(); ! } ! return true; ! } ! ! private boolean showConfirmSaveDialog() { String msg = s_stringMgr.getString("SQLPanelAPI.unsavedchanges"); *************** *** 686,691 **** JOptionPane.YES_NO_OPTION); if (option == JOptionPane.YES_OPTION) { ! fileSave(); } } --- 693,699 ---- JOptionPane.YES_NO_OPTION); if (option == JOptionPane.YES_OPTION) { ! return fileSave(); } + return true; } *************** *** 700,705 **** */ public void undoableEditHappened(UndoableEditEvent e) { if (fileOpened || fileSaved) { - unsavedEdits = true; getSession().getActiveSessionWindow().setUnsavedEdits(true); ActionCollection actions = --- 708,713 ---- */ public void undoableEditHappened(UndoableEditEvent e) { + unsavedEdits = true; if (fileOpened || fileSaved) { getSession().getActiveSessionWindow().setUnsavedEdits(true); ActionCollection actions = *************** *** 709,728 **** } ! } ! ! /** ! * A session listener that will detect unsaved edits and prompt the user to ! * save them when the session is about to be closed. ! */ ! private class MySessionListener extends SessionAdapter ! { ! public void sessionClosing(SessionEvent evt) ! { ! if (evt.getSession().equals(_panel.getSession()) && unsavedEdits) ! { ! showConfirmSaveDialog(); ! } ! getSession().getApplication().getSessionManager().removeSessionListener(this); ! } ! } } --- 717,720 ---- } ! } } Index: ISQLPanelAPI.java =================================================================== RCS file: /cvsroot/squirrel-sql/sql12/app/src/net/sourceforge/squirrel_sql/client/session/ISQLPanelAPI.java,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** ISQLPanelAPI.java 10 Mar 2006 20:39:58 -0000 1.17 --- ISQLPanelAPI.java 23 Mar 2006 13:03:59 -0000 1.18 *************** *** 288,292 **** void addToToolsPopUp(String selectionString, Action action); ! void fileSave(); void fileSaveAs(); --- 288,292 ---- void addToToolsPopUp(String selectionString, Action action); ! boolean fileSave(); void fileSaveAs(); *************** *** 303,306 **** --- 303,308 ---- void showToolsPopup(); + + boolean confirmClose(); } Index: ISession.java =================================================================== RCS file: /cvsroot/squirrel-sql/sql12/app/src/net/sourceforge/squirrel_sql/client/session/ISession.java,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** ISession.java 28 Feb 2006 03:33:29 -0000 1.24 --- ISession.java 23 Mar 2006 13:03:59 -0000 1.25 *************** *** 278,281 **** --- 278,290 ---- */ public void setPluginsfinishedLoading(boolean _finishedLoading); + + /** + * Determine from the session whether or not it is ok to close it. It might + * be the case that the session's SQLPanel has unsaved edits that require + * the user's approval to discard. + * + * @return true if it's ok to close the session; false otherwise. + */ + public boolean confirmClose(); } Index: Session.java =================================================================== RCS file: /cvsroot/squirrel-sql/sql12/app/src/net/sourceforge/squirrel_sql/client/session/Session.java,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** Session.java 28 Feb 2006 03:33:29 -0000 1.42 --- Session.java 23 Mar 2006 13:03:59 -0000 1.43 *************** *** 970,972 **** --- 970,985 ---- return _finishedLoading && _pluginsFinishedLoading; } + + /* (non-Javadoc) + * @see net.sourceforge.squirrel_sql.client.session.ISession#confirmCloseWithUnsavedEdits() + */ + public boolean confirmClose() { + if (getSQLPanelAPIOfActiveSessionWindow().confirmClose()) { + return true; + } else { + return false; + } + } + + } Index: SessionManager.java =================================================================== RCS file: /cvsroot/squirrel-sql/sql12/app/src/net/sourceforge/squirrel_sql/client/session/SessionManager.java,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** SessionManager.java 5 Nov 2005 21:17:28 -0000 1.19 --- SessionManager.java 23 Mar 2006 13:03:59 -0000 1.20 *************** *** 482,491 **** if (!_app.getSquirrelPreferences().getConfirmSessionClose()) { ! return true; ! } final String msg = s_stringMgr.getString("SessionManager.confirmClose", session.getTitle()); ! return Dialogs.showYesNo(_app.getMainFrame(), msg); } --- 482,495 ---- if (!_app.getSquirrelPreferences().getConfirmSessionClose()) { ! return session.confirmClose(); ! } final String msg = s_stringMgr.getString("SessionManager.confirmClose", session.getTitle()); ! if (!Dialogs.showYesNo(_app.getMainFrame(), msg)) { ! return session.confirmClose(); ! } else { ! return true; ! } } |