Author: thomasobrien95
Date: Fri Dec 19 12:43:05 2008
New Revision: 2892
Modified:
trunk/regress/ca/sqlpower/architect/swingui/ArchitectSwingSessionImplTest.java
trunk/src/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java
Log:
Fix for bug 1681. The session was not being marked as dirty when data
sources were being added to the DBTree. This resulted in opening a new
project when only the DBTree was changed to cause a "save changes before
closing" dialog. Now the session will stay without the prompt.
Modified:
trunk/regress/ca/sqlpower/architect/swingui/ArchitectSwingSessionImplTest.java
==============================================================================
---
trunk/regress/ca/sqlpower/architect/swingui/ArchitectSwingSessionImplTest.java
(original)
+++
trunk/regress/ca/sqlpower/architect/swingui/ArchitectSwingSessionImplTest.java
Fri Dec 19 12:43:05 2008
@@ -31,6 +31,7 @@
import ca.sqlpower.architect.SQLRelationship;
import ca.sqlpower.architect.SQLTable;
import ca.sqlpower.sql.PlDotIni;
+import ca.sqlpower.sql.SPDataSource;
public class ArchitectSwingSessionImplTest extends TestCase {
@@ -225,4 +226,13 @@
assertEquals(newValueForStraightLines, r.isStraightLine());
}
}
+
+ public void testDBTreeChangeUpdatesIsNew() throws Exception {
+ ArchitectSwingSessionContext context = new StubContext();
+ ArchitectSwingSession session = context.createSession(false);
+ session.getSourceDatabases().addSourceConnection(new
SPDataSource(context.getPlDotIni()));
+ assertEquals(2,
session.getSourceDatabases().getDatabaseList().size());
+ assertFalse(session.isNew());
+ }
+
}
Modified:
trunk/src/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java
==============================================================================
--- trunk/src/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java
(original)
+++ trunk/src/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java
Fri Dec 19 12:43:05 2008
@@ -209,7 +209,21 @@
playPen.setRenderingAntialiased(sprefs.getBoolean(ArchitectSwingUserSettings.PLAYPEN_RENDER_ANTIALIASED,
false));
}
projectModificationWatcher = new
ProjectModificationWatcher(playPen);
-
+
+ getRootObject().addSQLObjectListener(new SQLObjectListener() {
+ public void dbStructureChanged(SQLObjectEvent e) {
+ isNew = false;
+ }
+ public void dbObjectChanged(SQLObjectEvent e) {
+ isNew = false;
+ }
+ public void dbChildrenRemoved(SQLObjectEvent e) {
+ isNew = false;
+ }
+ public void dbChildrenInserted(SQLObjectEvent e) {
+ isNew = false;
+ }
+ });
undoManager = new ArchitectUndoManager(playPen);
playPen.getPlayPenContentPane().addPropertyChangeListener("location",
undoManager.getEventAdapter()); //$NON-NLS-1$
playPen.getPlayPenContentPane().addPropertyChangeListener("connectionPoints",
undoManager.getEventAdapter()); //$NON-NLS-1$