Revision: 3425
Author: ferguson.sebastian
Date: Tue Mar 30 15:36:05 2010
Log: Improved GUI, including appearance and sorting of lists.
http://code.google.com/p/power-architect/source/detail?r=3425
Modified:
/trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionContextImpl.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/PrivilegesEditorPanel.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ProjectSecurityPanel.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/SecurityPanel.java
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ServerProjectsManagerPanel.java
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionContextImpl.java
Mon Mar 29 14:08:45 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectSwingSessionContextImpl.java
Tue Mar 30 15:36:05 2010
@@ -267,20 +267,32 @@
}
- public ArchitectClientSideSession createSecuritySession(SPServerInfo
serverInfo) {
+ public ArchitectClientSideSession createSecuritySession(final
SPServerInfo serverInfo) {
ArchitectClientSideSession session = null;
if
(ArchitectClientSideSession.getSecuritySessions().get(serverInfo.getServerAddress())
== null) {
ProjectLocation securityLocation = new
ProjectLocation("system", "system", serverInfo);
- ArchitectClientSideSession newSecuritySession = null;
+
try {
- newSecuritySession = new ArchitectClientSideSession(this,
serverInfo.getServerAddress(), securityLocation);
+ final ArchitectClientSideSession newSecuritySession = new
ArchitectClientSideSession(this, serverInfo.getServerAddress(),
securityLocation);
+
+ newSecuritySession.getUpdater().addListener(new
NetworkConflictResolver.UpdateListener() {
+ public boolean updatePerformed(NetworkConflictResolver
resolver) {return false;}
+
+ public boolean updateException(NetworkConflictResolver
resolver) {
+ newSecuritySession.close();
+
ArchitectClientSideSession.getSecuritySessions().remove(serverInfo.getServerAddress());
+ createSecuritySession(serverInfo);
+ return true;
+ }
+ });
+
+ newSecuritySession.startUpdaterThread();
+
ArchitectClientSideSession.getSecuritySessions().put(serverInfo.getServerAddress(),
newSecuritySession);
+ session = newSecuritySession;
} catch (SQLObjectException e) {
throw new RuntimeException("Unable to create security
session!!!", e);
}
- newSecuritySession.startUpdaterThread();
-
ArchitectClientSideSession.getSecuritySessions().put(serverInfo.getServerAddress(),
newSecuritySession);
- session = newSecuritySession;
} else {
session =
ArchitectClientSideSession.getSecuritySessions().get(serverInfo.getServerAddress());
}
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/PrivilegesEditorPanel.java
Tue Mar 30 12:55:03 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/PrivilegesEditorPanel.java
Tue Mar 30 15:36:05 2010
@@ -129,17 +129,17 @@
boolean doesNotRequireSave = false;
if (grant != null) {
- if (!((getCreateModifyPrivilege().isSelected() !=
(grant.isCreatePrivilege() && grant.isModifyPrivilege()))
- || (getViewPrivilege().isSelected() !=
grant.isExecutePrivilege())
- || (getDeletePrivilege().isSelected() !=
grant.isDeletePrivilege())
- || (getGrantPrivilege().isSelected() !=
grant.isGrantPrivilege()))) {
+ if ((getCreateModifyPrivilege().isSelected() ==
(grant.isCreatePrivilege() && grant.isModifyPrivilege()))
+ && (getViewPrivilege().isSelected() ==
grant.isExecutePrivilege())
+ && (getDeletePrivilege().isSelected() ==
grant.isDeletePrivilege())
+ && (getGrantPrivilege().isSelected() ==
grant.isGrantPrivilege())) {
doesNotRequireSave = true;
}
} else {
- if (((getCreateModifyPrivilege().isSelected() != false)
- && (getViewPrivilege().isSelected() != false)
- && (getDeletePrivilege().isSelected() != false)
- && (getGrantPrivilege().isSelected() !=
false))) {
+ if ((getCreateModifyPrivilege().isSelected() == false)
+ && (getViewPrivilege().isSelected() == false)
+ && (getDeletePrivilege().isSelected() == false)
+ && (getGrantPrivilege().isSelected() ==
false)) {
doesNotRequireSave = true;
}
}
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ProjectSecurityPanel.java
Tue Mar 30 12:55:03 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ProjectSecurityPanel.java
Tue Mar 30 15:36:05 2010
@@ -19,12 +19,13 @@
package ca.sqlpower.architect.swingui.enterprise;
-import java.awt.BorderLayout;
import java.awt.Dialog;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -47,6 +48,7 @@
import ca.sqlpower.object.ObjectDependentException;
import ca.sqlpower.swingui.DataEntryPanel;
+import com.jgoodies.forms.builder.ButtonBarBuilder;
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
@@ -69,6 +71,8 @@
private final Dialog parent;
+ private final Dimension buttonDim = new Dimension(16, 16);
+
public ProjectSecurityPanel(ArchitectProject securityWorkspace,
ArchitectProject workspace, Dialog parent, Action closeAction) {
this.securityWorkspace = securityWorkspace;
this.workspace = workspace;
@@ -76,15 +80,13 @@
this.parent = parent;
panelLabel = new JLabel("Permissions for '" + workspace.getName()
+ "'");
- panelLabel.setFont(new Font(panelLabel.getFont().getFontName(),
Font.BOLD, 18));
+ panelLabel.setFont(new Font(panelLabel.getFont().getFontName(),
Font.BOLD, panelLabel.getFont().getSize() + 1));
panel = new JPanel();
createPanel();
}
private void createPanel() {
- final Dimension buttonDim = new Dimension(16, 16);
-
Map<User, Grant> globalGrantsForUsers = new HashMap<User, Grant>();
Map<Group, Grant> globalGrantsForGroups = new HashMap<Group,
Grant>();
Map<User, Grant> specificGrantsForUsers = new HashMap<User,
Grant>();
@@ -112,31 +114,85 @@
}
}
- // XXX To be persisted
if (users == null) {
users = new ArrayList<User>();
users.addAll(specificGrantsForUsers.keySet());
+ Collections.sort(users, new Comparator<User>() {
+ public int compare(User o1, User o2) {
+ return
o1.getName().toUpperCase().compareTo(o2.getName().toUpperCase());
+ }
+ });
}
if (groups == null) {
groups = new ArrayList<Group>();
groups.addAll(specificGrantsForGroups.keySet());
+ Collections.sort(groups, new Comparator<Group>() {
+ public int compare(Group o1, Group o2) {
+ return
o1.getName().toUpperCase().compareTo(o2.getName().toUpperCase());
+ }
+ });
}
CellConstraints cc = new CellConstraints();
DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout(
- "pref:grow, 5dlu, pref, 5dlu, pref, 5dlu, pref, 5dlu,
pref, 5dlu, pref"));
-
- int lineNo = 0;
- builder.appendRow(builder.getDefaultRowSpec());
- lineNo++;
+ "pref:grow", "pref:grow, 5dlu, pref:grow, pref:grow, 5dlu,
pref:grow, pref:grow, 5dlu, pref:grow"));
+
+ builder.add(panelLabel, cc.xy(1,1));
+
JLabel userPermissions = new JLabel("User Permissions");
- userPermissions.setFont(new
Font(userPermissions.getFont().getFontName(), Font.BOLD,
userPermissions.getFont().getSize()+1));
- builder.add(userPermissions, cc.xy(1, lineNo));
-
+ userPermissions.setFont(new
Font(userPermissions.getFont().getFontName(), Font.BOLD,
userPermissions.getFont().getSize()));
+ builder.add(userPermissions, cc.xy(1, 3));
+
+ JPanel userListPanel = createUserListPanel(specificGrantsForUsers,
globalGrantsForUsers);
+
+ builder.add(userListPanel, cc.xy(1, 4));
+
+ JLabel groupPermissions = new JLabel("Group Permissions");
+ groupPermissions.setFont(userPermissions.getFont());
+ builder.add(groupPermissions, cc.xy(1, 6));
+
+ builder.add(createGroupListPanel(specificGrantsForGroups,
globalGrantsForGroups), cc.xy(1, 7));
+
+ JButton okButton = new JButton(new AbstractAction("OK") {
+ public void actionPerformed(ActionEvent e) {
+ applyChanges();
+ closeAction.actionPerformed(e);
+ }
+ });
+
+ JButton cancelButton = new JButton(new AbstractAction("Cancel") {
+ public void actionPerformed(ActionEvent e) {
+ for (DataEntryPanel p : panels) {
+ p.discardChanges();
+ }
+ closeAction.actionPerformed(e);
+ }
+ });
+
+ ButtonBarBuilder buttonBuilder =
ButtonBarBuilder.createLeftToRightBuilder();
+ buttonBuilder.addGlue();
+ buttonBuilder.addGridded(okButton);
+ buttonBuilder.addRelatedGap();
+ buttonBuilder.addGridded(cancelButton);
+ buttonBuilder.setDefaultButtonBarGapBorder();
+
+ builder.add(buttonBuilder.getPanel(), cc.xy(1, 9));
+ builder.setDefaultDialogBorder();
+
+ panel.removeAll();
+ panel.add(builder.getPanel());
+ panel.revalidate();
+ }
+
+ private JPanel createUserListPanel(Map<User, Grant>
specificGrantsForUsers, Map<User, Grant> globalGrantsForUsers) {
+ CellConstraints cc = new CellConstraints();
+ DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout(
+ "pref:grow, 5dlu, pref, 5dlu, pref, 5dlu, pref, 5dlu,
pref, 5dlu, pref"));
+ int lineNo = 0;
builder.appendRow(builder.getDefaultRowSpec());
lineNo++;
builder.add(new JLabel("User Name"), cc.xy(1, lineNo));
- builder.add(new JLabel("Create/Modify"), cc.xy(3, lineNo));
+ builder.add(new JLabel("Modify"), cc.xy(3, lineNo));
builder.add(new JLabel("View"), cc.xy(5, lineNo));
builder.add(new JLabel("Delete"), cc.xy(7, lineNo));
builder.add(new JLabel("Grant"), cc.xy(9, lineNo));
@@ -153,14 +209,16 @@
Object[] messages = new Object[] {"Select Users to Add",
new JScrollPane(userList)};
- String[] options = { "Accept", "Cancel",};
+ String[] options = { "OK", "Cancel"};
int option = JOptionPane.showOptionDialog(getPanel(),
messages, "", JOptionPane.DEFAULT_OPTION,
JOptionPane.INFORMATION_MESSAGE, null,
options, options[0]);
if (option == 0) {
int [] selected = userList.getSelectedIndices();
for (int i = 0; i < selected.length; i++) {
- users.add(availableUsers.get(selected[i]));
+ User user = availableUsers.get(selected[i]);
+ user.addGrant(new Grant(workspace.getUUID(), null,
false, false, false, false, false));
+ users.add(user);
}
panel.removeAll();
createPanel();
@@ -235,16 +293,19 @@
}
- builder.appendRow(builder.getDefaultRowSpec());
- lineNo++;
- JLabel groupPermissions = new JLabel("Group Permissions");
- groupPermissions.setFont(userPermissions.getFont());
- builder.add(groupPermissions, cc.xy(1, lineNo));
-
+ return builder.getPanel();
+ }
+
+ private JPanel createGroupListPanel(Map<Group, Grant>
specificGrantsForGroups, Map<Group, Grant> globalGrantsForGroups) {
+ CellConstraints cc = new CellConstraints();
+ DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout(
+ "pref:grow, 5dlu, pref, 5dlu, pref, 5dlu, pref, 5dlu,
pref, 5dlu, pref"));
+ int lineNo = 0;
+
builder.appendRow(builder.getDefaultRowSpec());
lineNo++;
builder.add(new JLabel("Group Name"), cc.xy(1, lineNo));
- builder.add(new JLabel("Create/Modify"), cc.xy(3, lineNo));
+ builder.add(new JLabel("Modify"), cc.xy(3, lineNo));
builder.add(new JLabel("View"), cc.xy(5, lineNo));
builder.add(new JLabel("Delete"), cc.xy(7, lineNo));
builder.add(new JLabel("Grant"), cc.xy(9, lineNo));
@@ -261,14 +322,16 @@
Object[] messages = new Object[] {"Select Groups to Add",
new JScrollPane(groupList)};
- String[] options = { "Accept", "Cancel",};
+ String[] options = { "OK", "Cancel",};
int option = JOptionPane.showOptionDialog(getPanel(),
messages, "", JOptionPane.DEFAULT_OPTION,
JOptionPane.INFORMATION_MESSAGE, null,
options, options[0]);
if (option == 0) {
int [] selected = groupList.getSelectedIndices();
for (int i = 0; i < selected.length; i++) {
- groups.add(availableGroups.get(selected[i]));
+ Group group = availableGroups.get(selected[i]);
+ group.addGrant(new Grant(workspace.getUUID(),
null, false, false, false, false, false));
+ groups.add(group);
}
panel.removeAll();
createPanel();
@@ -334,39 +397,13 @@
builder.add(removeGroupButton, cc.xy(11, lineNo));
}
- JButton applyButton = new JButton(new AbstractAction("Save") {
- public void actionPerformed(ActionEvent e) {
- applyChanges();
- closeAction.actionPerformed(e);
- }
- });
-
- JButton cancelButton = new JButton(new AbstractAction("Cancel") {
- public void actionPerformed(ActionEvent e) {
- for (DataEntryPanel p : panels) {
- p.discardChanges();
- }
- closeAction.actionPerformed(e);
- }
- });
-
- builder.appendRow(builder.getDefaultRowSpec());
- lineNo++;
- builder.add(applyButton, cc.xy(7, lineNo));
- builder.add(cancelButton, cc.xy(9, lineNo));
-
- panel.removeAll();
- panel.setLayout(new BorderLayout());
- panel.add(panelLabel, BorderLayout.NORTH);
- panel.add(new JScrollPane(builder.getPanel()),
BorderLayout.CENTER);
- panel.revalidate();
+ return builder.getPanel();
}
public boolean applyChanges() {
for (DataEntryPanel p : panels) {
p.applyChanges();
}
-
return true;
}
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/SecurityPanel.java
Tue Mar 30 12:55:03 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/SecurityPanel.java
Tue Mar 30 15:36:05 2010
@@ -365,29 +365,12 @@
}
private Group createGroupFromPrompter() {
- JTextField nameField = new JTextField(15);
-
- JPanel namePanel = new JPanel(new BorderLayout());
- namePanel.add(new JLabel("Group Name"), BorderLayout.WEST);
- namePanel.add(nameField, BorderLayout.EAST);
-
- Object[] messages = new Object[] {new JLabel("Specify the Group's
Name."), namePanel};
-
- String[] options = { "Accept", "Cancel"};
- int option = JOptionPane.showOptionDialog(getPanel(),
messages, "Specify the Group's Name", JOptionPane.DEFAULT_OPTION,
- JOptionPane.INFORMATION_MESSAGE, null, options,
options[0]);
-
- if (nameField.getText().equals("")
- || nameField.getText() == null) {
+ Object input = JOptionPane.showInputDialog(getPanel(), "Enter a
name for the group.");
+ if (input != null && !input.equals("")) {
+ return new Group((String) input);
+ } else {
return null;
}
-
- Group group = null;
- if (option == 0) {
- group = new Group(nameField.getText());
- }
-
- return group;
}
private boolean promptForUnsavedChanges() {
=======================================
---
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ServerProjectsManagerPanel.java
Mon Mar 29 14:08:45 2010
+++
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ServerProjectsManagerPanel.java
Tue Mar 30 15:36:05 2010
@@ -368,7 +368,7 @@
List<ProjectLocation> projects =
ArchitectClientSideSession.getWorkspaceNames(serviceInfo);
Collections.sort(projects, new
Comparator<ProjectLocation>() {
public int compare(ProjectLocation proj1,
ProjectLocation proj2) {
- return proj1.getName().compareTo(proj2.getName());
+ return
proj1.getName().toUpperCase().compareTo(proj2.getName().toUpperCase());
}
});
--
To unsubscribe, reply using "remove me" as the subject.