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$

Reply via email to