Revision: 3555
Author: [email protected]
Date: Tue May 25 14:03:00 2010
Log: Made the conflict dialogs non-modal, so they can be ignored en masse if one so chooses.
http://code.google.com/p/power-architect/source/detail?r=3555

Modified:
/trunk/src/main/java/ca/sqlpower/architect/enterprise/NetworkConflictResolver.java
 /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectFrame.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionContextImpl.java /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/enterprise/NetworkConflictResolver.java Tue May 25 13:03:30 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/enterprise/NetworkConflictResolver.java Tue May 25 14:03:00 2010
@@ -41,7 +41,6 @@
 import org.json.JSONObject;
 import org.springframework.security.AccessDeniedException;

-import ca.sqlpower.architect.ArchitectSession;
 import ca.sqlpower.architect.swingui.PlayPenComponent;
 import ca.sqlpower.architect.swingui.PlayPenContentPane;
 import ca.sqlpower.dao.MessageSender;
@@ -57,6 +56,7 @@
 import ca.sqlpower.object.SPObject;
 import ca.sqlpower.sqlobject.SQLRelationship.ColumnMapping;
 import ca.sqlpower.util.SQLPowerUtils;
+import ca.sqlpower.util.UserPrompterFactory;
 import ca.sqlpower.util.UserPrompter.UserPromptOptions;
 import ca.sqlpower.util.UserPrompter.UserPromptResponse;
 import ca.sqlpower.util.UserPrompterFactory.UserPromptType;
@@ -74,7 +74,8 @@
     private SPPersisterListener listener;
     private SessionPersisterSuperConverter converter;
     private ArchitectClientSideSession session;
-    private ArchitectSession promptSession;
+
+    private UserPrompterFactory upf;

     private int currentRevision = 0;

@@ -120,12 +121,12 @@
contextRelativePath = "/" + ArchitectClientSideSession.REST_TAG + "/project/" + projectLocation.getUUID();
     }

-    public void setPromptSession(ArchitectSession promptSession) {
-        this.promptSession = promptSession;
+    public void setUserPrompterFactory(UserPrompterFactory promptSession) {
+        this.upf = promptSession;
     }

-    public ArchitectSession getPromptSession() {
-        return promptSession;
+    public UserPrompterFactory getUserPrompterFactory() {
+        return upf;
     }

     public void setListener(SPPersisterListener listener) {
@@ -162,8 +163,8 @@
                     }
                 }
                 updateListeners.removeAll(listenersToRemove);
-                if (promptSession != null) {
-                    promptSession.createUserPrompter(
+                if (upf != null) {
+                    upf.createUserPrompter(
"You do not have sufficient privileges to perform that action. " + "Please hit the refresh button to synchonize with the server.",
                             UserPromptType.MESSAGE,
@@ -200,8 +201,8 @@
                 //push the persist forward again.
if (!response.isSuccessful() && response.getStatusCode() == 412) {
                     logger.info("Friendly error occurred, " + response);
-                    if (promptSession != null) {
-                        promptSession.createUserPrompter(
+                    if (upf != null) {
+                        upf.createUserPrompter(
                                 response.getBody(),
                                 UserPromptType.MESSAGE,
                                 UserPromptOptions.OK,
@@ -324,10 +325,10 @@
                                    }
                                }
updateListeners.removeAll(listenersToRemove);
-                               if (promptSession != null) {
-                                   promptSession.createUserPrompter(
+                               if (upf != null) {
+                                   upf.createUserPrompter(
"You do not have sufficient privileges to perform that action. " + - "Please hit the refresh button to synchonize with the server.", + "Please hit the refresh button to synchronize with the server.",
                                            UserPromptType.MESSAGE,
                                            UserPromptOptions.OK,
                                            UserPromptResponse.OK,
@@ -826,7 +827,6 @@
                 throw new IllegalArgumentException(
"Number of arguments passed in does not match number requested by conflict type");
             }
-            String b = String.format("%s %s", "test", "not");
             try {
message = String.format(conflict.message, objectNames.toArray());
             } catch (Throwable t) {
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectFrame.java Mon May 17 09:18:03 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectFrame.java Tue May 25 14:03:00 2010
@@ -135,8 +135,10 @@
 import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.undo.NotifyingUndoManager;
 import ca.sqlpower.swingui.SPSUtils;
+import ca.sqlpower.swingui.SwingUIUserPrompterFactory.NonModalSwingUIUserPrompterFactory;
 import ca.sqlpower.swingui.action.OpenUrlAction;
 import ca.sqlpower.swingui.enterprise.client.SPServerInfoManagerPanel;
+import ca.sqlpower.util.UserPrompterFactory;

 /**
* The Main Window for the Architect Application; contains a main() method that is
@@ -162,6 +164,8 @@
     private int oldHeight;
     private int prefWidth;
     private int prefHeight;
+
+    private final UserPrompterFactory nonModalUserPrompterFactory;

     private JMenu connectionsMenu;
     private ArchitectLayout autoLayout;
@@ -334,7 +338,7 @@
                 }
             };

- ((ArchitectClientSideSession) ((ArchitectSwingSessionImpl) session).getDelegateSession()).getSystemSession().getUpdater().setPromptSession(session); + ((ArchitectClientSideSession) ((ArchitectSwingSessionImpl) session).getDelegateSession()).getSystemSession().getUpdater().setUserPrompterFactory(nonModalUserPrompterFactory); SecurityPanel spm = new SecurityPanel(((ArchitectClientSideSession) ((ArchitectSwingSessionImpl) session).getDelegateSession()).getProjectLocation().getServiceInfo(), closeAction, d, session);
             d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
             d.setContentPane(spm.getSplitPane());
@@ -356,7 +360,7 @@
                 }
             };

- ((ArchitectClientSideSession) ((ArchitectSwingSessionImpl) session).getDelegateSession()).getSystemSession().getUpdater().setPromptSession(session); + ((ArchitectClientSideSession) ((ArchitectSwingSessionImpl) session).getDelegateSession()).getSystemSession().getUpdater().setUserPrompterFactory(nonModalUserPrompterFactory); ProjectSecurityPanel spm = new ProjectSecurityPanel(((ArchitectClientSideSession) ((ArchitectSwingSessionImpl) session).getDelegateSession()).getSystemWorkspace(), session.getWorkspace(), ArchitectProject.class, ((ArchitectClientSideSession) ((ArchitectSwingSessionImpl) session).getDelegateSession()).getProjectLocation().getServiceInfo().getUsername(), d, closeAction);
             d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
@@ -491,6 +495,8 @@
         });

         refreshProjectAction = new RefreshProjectAction(session);
+
+ nonModalUserPrompterFactory = new NonModalSwingUIUserPrompterFactory(this);
     }

     /**
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionContextImpl.java Tue May 25 13:03:30 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionContextImpl.java Tue May 25 14:03:00 2010
@@ -53,6 +53,7 @@
 import ca.sqlpower.sql.JDBCDataSource;
 import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.swingui.SPSUtils;
+import ca.sqlpower.swingui.SwingUIUserPrompterFactory.NonModalSwingUIUserPrompterFactory;
 import ca.sqlpower.swingui.dbtree.SQLObjectSelection;
 import ca.sqlpower.swingui.event.SessionLifecycleEvent;
 import ca.sqlpower.swingui.event.SessionLifecycleListener;
@@ -238,7 +239,7 @@

final ArchitectClientSideSession clientSession = new ArchitectClientSideSession(this, projectLocation.getName(), projectLocation); final ArchitectSwingSessionImpl swingSession = new ArchitectSwingSessionImpl(this, clientSession);
-        clientSession.getUpdater().setPromptSession(swingSession);
+ clientSession.getUpdater().setUserPrompterFactory(new NonModalSwingUIUserPrompterFactory(swingSession.getArchitectFrame()));

clientSession.getUpdater().addListener(new NetworkConflictResolver.UpdateListener() {

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java Tue May 25 13:03:30 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionImpl.java Tue May 25 14:03:00 2010
@@ -87,7 +87,7 @@
 import ca.sqlpower.sqlobject.SQLObjectException;
 import ca.sqlpower.sqlobject.SQLObjectRoot;
 import ca.sqlpower.sqlobject.UserDefinedSQLType;
-import ca.sqlpower.swingui.ModalDialogUserPrompter;
+import ca.sqlpower.swingui.DialogUserPrompter;
 import ca.sqlpower.swingui.RecentMenu;
 import ca.sqlpower.swingui.SPSUtils;
 import ca.sqlpower.swingui.SPSwingWorker;
@@ -946,7 +946,7 @@
     /**
* Creates a new user prompter that uses a modal dialog to pose the given question.
      *
-     * @see ModalDialogUserPrompter
+     * @see DialogUserPrompter
      */
public UserPrompter createUserPrompter(String question, UserPromptType responseType, UserPromptOptions optionType, UserPromptResponse defaultResponseType,
             Object defaultResponse, String ... buttonNames) {

Reply via email to