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) {