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.

Reply via email to