Revision: 3965
Author: [email protected]
Date: Fri Oct 15 15:51:41 2010
Log: Refactored the ServerProjectsManagerPanel into the library and left Architect specific components in the Architect version.
http://code.google.com/p/power-architect/source/detail?r=3965

Added:
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ArchitectServerProjectsManagerPanel.java
Deleted:
/trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ServerProjectsManagerPanel.java
Modified:
/trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectClientSideSession.java
 /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectFrame.java

=======================================
--- /dev/null
+++ /trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ArchitectServerProjectsManagerPanel.java Fri Oct 15 15:51:41 2010
@@ -0,0 +1,181 @@
+/*
+ * Copyright (c) 2010, SQL Power Group Inc.
+ *
+ * This file is part of SQL Power Architect.
+ *
+ * SQL Power Architect is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * SQL Power Architect is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package ca.sqlpower.architect.swingui.enterprise;
+
+import java.awt.event.ActionEvent;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.util.List;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JProgressBar;
+
+import org.json.JSONException;
+
+import ca.sqlpower.architect.enterprise.ArchitectClientSideSession;
+import ca.sqlpower.architect.enterprise.NetworkConflictResolver;
+import ca.sqlpower.architect.swingui.ArchitectFrame;
+import ca.sqlpower.architect.swingui.ArchitectSwingSession;
+import ca.sqlpower.architect.swingui.ArchitectSwingSessionContext;
+import ca.sqlpower.architect.swingui.ArchitectSwingSessionContextImpl;
+import ca.sqlpower.architect.swingui.ArchitectSwingSessionImpl;
+import ca.sqlpower.enterprise.client.ProjectLocation;
+import ca.sqlpower.enterprise.client.SPServerInfo;
+import ca.sqlpower.swingui.SPSUtils;
+import ca.sqlpower.swingui.enterprise.client.ServerProjectsManagerPanel;
+
+import com.jgoodies.forms.builder.DefaultFormBuilder;
+import com.jgoodies.forms.layout.FormLayout;
+
+public class ArchitectServerProjectsManagerPanel extends ServerProjectsManagerPanel {
+
+    private final ArchitectSwingSession session;
+
+    private final ArchitectSwingSessionContext context;
+
+    public ArchitectServerProjectsManagerPanel(
+            ArchitectSwingSession session,
+            ArchitectSwingSessionContext context,
+            Action closeAction) {
+ super(context.getServerManager(), session.getArchitectFrame(), session,
+                closeAction, session.getProjectLoader().getFile(),
+                ArchitectClientSideSession.getCookieStore());
+        this.session = session;
+        this.context = context;
+    }
+
+    public ArchitectServerProjectsManagerPanel(
+            SPServerInfo serverInfo,
+            ArchitectSwingSession session,
+            ArchitectSwingSessionContext context,
+            Action closeAction) {
+        super(serverInfo, session.getArchitectFrame(), session,
+                closeAction, session.getProjectLoader().getFile(),
+                ArchitectClientSideSession.getCookieStore());
+        this.session = session;
+        this.context = context;
+    }
+
+    private final Action openAction = new AbstractAction("Open") {
+        public void actionPerformed(ActionEvent e) {
+            List<ProjectLocation> selectedProjects = getSelectedProjects();
+            if (!selectedProjects.isEmpty()) {
+
+                for (ProjectLocation location : selectedProjects) {
+                    try {
+
+ ArchitectSwingSession newSession = ((ArchitectSwingSessionContextImpl) context).createServerSession(location, false);
+                        ArchitectFrame frame = session.getArchitectFrame();
+                        frame.addSession(newSession);
+                        frame.setCurrentSession(newSession);
+
+                        JLabel messageLabel = new JLabel("Opening");
+                        JProgressBar progressBar = new JProgressBar();
+                        progressBar.setIndeterminate(true);
+
+ final JDialog dialog = new JDialog(frame, "Opening"); + DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("pref:grow, 5dlu, pref"));
+                        builder.setDefaultDialogBorder();
+                        builder.append(messageLabel, 3);
+                        builder.nextLine();
+                        builder.append(progressBar, 3);
+                        dialog.add(builder.getPanel());
+
+                        dialog.pack();
+ dialog.setLocation(frame.getX() + (frame.getWidth() - dialog.getWidth())/2, + frame.getY() + (frame.getHeight() - dialog.getHeight())/2);
+                        dialog.setAlwaysOnTop(true);
+                        dialog.setVisible(true);
+
+ ((ArchitectClientSideSession) ((ArchitectSwingSessionImpl) newSession).getDelegateSession()) + .getUpdater().addListener(new NetworkConflictResolver.UpdateListener() { + public boolean updatePerformed(NetworkConflictResolver resolver) {
+                                dialog.dispose();
+                                return true;
+                            }
+
+ public boolean updateException(NetworkConflictResolver resolver, Throwable t) {
+                                return false;
+                            }
+
+ public void preUpdatePerformed(NetworkConflictResolver resolver) {
+                                //do nothing
+                            }
+
+                            public void workspaceDeleted() {
+                                refreshInfoList();
+                            }
+                        });
+
+ ((ArchitectClientSideSession) ((ArchitectSwingSessionImpl) newSession).getDelegateSession()).startUpdaterThread();
+
+                    } catch (Exception ex) {
+ throw new RuntimeException("Unable to open project", ex);
+                    }
+                }
+                getCloseAction().actionPerformed(e);
+            }
+        }
+    };
+
+ private final Action openSecurityManagerPanelAction = new AbstractAction("Security") {
+        public void actionPerformed(ActionEvent e) {
+
+ final JDialog d = SPSUtils.makeOwnedDialog(getDialogOwner(), "Security Manager");
+            Action closeAction = new AbstractAction("Close") {
+                public void actionPerformed(ActionEvent e) {
+                    d.dispose();
+                }
+            };
+
+ SecurityPanel spm = new SecurityPanel(getSelectedServerInfo(), closeAction, d, session);
+            d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+            d.setContentPane(spm.getPanel());
+
+            SPSUtils.makeJDialogCancellable(d, null);
+            d.pack();
+            d.setLocationRelativeTo(getDialogOwner());
+            d.setVisible(true);
+        }
+    };
+
+    @Override
+    protected List<ProjectLocation> getProjectLocations() throws
+        IOException, URISyntaxException, JSONException {
+
+        ((ArchitectSwingSessionContextImpl) session.getContext()).
+            createSecuritySession(getSelectedServerInfo());
+
+ return ArchitectClientSideSession.getWorkspaceNames(getSelectedServerInfo());
+    }
+
+    @Override
+    protected Action getOpenAction() {
+        return openAction;
+    }
+
+    @Override
+    protected Action getSecurityAction() {
+        return openSecurityManagerPanelAction;
+    }
+}
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/enterprise/ServerProjectsManagerPanel.java Fri Oct 15 12:36:22 2010
+++ /dev/null
@@ -1,600 +0,0 @@
-/*
- * Copyright (c) 2010, SQL Power Group Inc.
- *
- * This file is part of Power*Architect.
- *
- * Power*Architect is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * Power*Architect is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-package ca.sqlpower.architect.swingui.enterprise;
-
-import java.awt.Component;
-import java.awt.Dialog.ModalityType;
-import java.awt.Dimension;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.io.File;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.DefaultListModel;
-import javax.swing.JButton;
-import javax.swing.JDialog;
-import javax.swing.JFileChooser;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JProgressBar;
-import javax.swing.JScrollPane;
-import javax.swing.JTextField;
-import javax.swing.SwingUtilities;
-import javax.swing.event.DocumentEvent;
-import javax.swing.event.DocumentListener;
-
-import ca.sqlpower.architect.ArchitectSessionContext;
-import ca.sqlpower.architect.enterprise.ArchitectClientSideSession;
-import ca.sqlpower.architect.enterprise.NetworkConflictResolver;
-import ca.sqlpower.architect.swingui.ArchitectFrame;
-import ca.sqlpower.architect.swingui.ArchitectSwingSession;
-import ca.sqlpower.architect.swingui.ArchitectSwingSessionContextImpl;
-import ca.sqlpower.architect.swingui.ArchitectSwingSessionImpl;
-import ca.sqlpower.architect.swingui.action.Messages;
-import ca.sqlpower.enterprise.client.ProjectLocation;
-import ca.sqlpower.enterprise.client.SPServerInfo;
-import ca.sqlpower.swingui.SPSUtils;
-import ca.sqlpower.util.UserPrompter.UserPromptOptions;
-import ca.sqlpower.util.UserPrompter.UserPromptResponse;
-import ca.sqlpower.util.UserPrompterFactory.UserPromptType;
-
-import com.jgoodies.forms.builder.DefaultFormBuilder;
-import com.jgoodies.forms.factories.ButtonBarFactory;
-import com.jgoodies.forms.layout.CellConstraints;
-import com.jgoodies.forms.layout.FormLayout;
-
-public class ServerProjectsManagerPanel {
-
-    private final Component dialogOwner;
-    private final ArchitectSessionContext context;
-    private final ArchitectSwingSession session;
-
-    private final JPanel panel;
-    private final Action closeAction;
-    private final JList projects;
-    private final JList servers;
-
-    private final Action refreshAction = new AbstractAction("Refresh") {
-        public void actionPerformed(ActionEvent e) {
-            refreshInfoList();
-        }
-    };
-
-    private final Action newAction = new AbstractAction("New...") {
-        public void actionPerformed(ActionEvent e) {
-
-            if (getSelectedServerInfo() != null) {
-
- String name = JOptionPane.showInputDialog(dialogOwner, "Please specify the name of your project", "", JOptionPane.QUESTION_MESSAGE);
-
-                if (name != null) {
- DefaultListModel model = (DefaultListModel) projects.getModel();
-                    for (int i = 0; i < model.size(); i++) {
- if (((ProjectLocation) model.getElementAt(i)).getName().trim().equalsIgnoreCase(name.trim())) { - JOptionPane.showMessageDialog(dialogOwner, "A project called \"" + name + "\" already exists. Please use a different name.", "Duplicate project name", JOptionPane.ERROR_MESSAGE);
-                            return;
-                        }
-                    }
-
-                    try {
-                        ArchitectFrame frame = session.getArchitectFrame();
-
- JLabel messageLabel = new JLabel("Creating New Project");
-                        JProgressBar progressBar = new JProgressBar();
-                        progressBar.setIndeterminate(true);
-
- final JDialog dialog = new JDialog(frame, "Creating New Project");
-
- DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("pref:grow, 5dlu, pref"));
-                        builder.setDefaultDialogBorder();
-                        builder.append(messageLabel, 3);
-                        builder.nextLine();
-                        builder.append(progressBar, 3);
-                        dialog.add(builder.getPanel());
-
-                        dialog.setSize(new Dimension(300,90));
- dialog.setLocation(frame.getX() + (frame.getWidth() - dialog.getWidth())/2, - frame.getY() + (frame.getHeight() - dialog.getHeight())/2);
-                        dialog.setAlwaysOnTop(true);
-                        dialog.setVisible(true);
-
- ArchitectClientSideSession.createNewServerSession(getSelectedServerInfo(), name, session);
-
-                        dialog.dispose();
-
-                    } catch (Exception ex) {
- throw new RuntimeException("Unable to create new project", ex);
-                    }
-
-                    refreshInfoList();
-                }
-            }
-        }
-    };
-
-    private final Action openAction = new AbstractAction("Open") {
-        public void actionPerformed(ActionEvent e) {
-
-            if (getSelectedServerInfo() != null) {
-
-                int [] indices = projects.getSelectedIndices();
-
-                if (indices.length >= 1) {
-
-                    final Object [] objs = new Object[indices.length];
-                    for (int i = 0; i < indices.length; i++) {
- objs[i] = projects.getModel().getElementAt(indices[i]);
-                    }
-
-                    for (Object obj : objs) {
-                        if (obj instanceof ProjectLocation) {
- ProjectLocation location = (ProjectLocation) obj;
-                            try {
-
- ArchitectSwingSession newSession = ((ArchitectSwingSessionContextImpl) context).createServerSession(location, false); - ArchitectFrame frame = session.getArchitectFrame();
-                                frame.addSession(newSession);
-                                frame.setCurrentSession(newSession);
-
- JLabel messageLabel = new JLabel("Opening"); - JProgressBar progressBar = new JProgressBar();
-                                progressBar.setIndeterminate(true);
-
- final JDialog dialog = new JDialog(frame, "Opening"); - DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout("pref:grow, 5dlu, pref"));
-                                builder.setDefaultDialogBorder();
-                                builder.append(messageLabel, 3);
-                                builder.nextLine();
-                                builder.append(progressBar, 3);
-                                dialog.add(builder.getPanel());
-
-                                dialog.pack();
- dialog.setLocation(frame.getX() + (frame.getWidth() - dialog.getWidth())/2, - frame.getY() + (frame.getHeight() - dialog.getHeight())/2);
-                                dialog.setAlwaysOnTop(true);
-                                dialog.setVisible(true);
-
- ((ArchitectClientSideSession) ((ArchitectSwingSessionImpl) newSession).getDelegateSession()) - .getUpdater().addListener(new NetworkConflictResolver.UpdateListener() { - public boolean updatePerformed(NetworkConflictResolver resolver) {
-                                        dialog.dispose();
-                                        return true;
-                                    }
-
- public boolean updateException(NetworkConflictResolver resolver, Throwable t) {
-                                        return false;
-                                    }
-
- public void preUpdatePerformed(NetworkConflictResolver resolver) {
-                                        //do nothing
-                                    }
-
-                                    public void workspaceDeleted() {
-                                        refreshInfoList();
-                                    }
-                                });
-
- ((ArchitectClientSideSession) ((ArchitectSwingSessionImpl) newSession).getDelegateSession()).startUpdaterThread();
-
-                            } catch (Exception ex) {
- throw new RuntimeException("Unable to open project", ex);
-                            }
-                        }
-                    }
-
-                    closeAction.actionPerformed(e);
-                }
-            }
-        }
-    };
-
-    private final Action uploadAction = new AbstractAction("Upload") {
-
-        public void actionPerformed(ActionEvent e) {
- final JDialog dialog = new JDialog(SwingUtilities.getWindowAncestor(dialogOwner), "Upload Project", ModalityType.DOCUMENT_MODAL);
-
-            JPanel panel = new JPanel();
- FormLayout layout = new FormLayout("4dlu, pref, 4dlu, max(150dlu;pref), 4dlu, pref, 4dlu", "pref, pref, pref"); - DefaultFormBuilder builder = new DefaultFormBuilder(layout, panel);
-            CellConstraints cc = new CellConstraints();
-
-            final JTextField nameField = new JTextField();
-            builder.add(new JLabel("Name"), cc.xy(2, 1));
-            builder.add(nameField, cc.xyw(4, 1, 3));
-
-            final JTextField fileField = new JTextField();
-            JButton fileButton = new JButton("...");
-            fileButton.addActionListener(new ActionListener() {
-                public void actionPerformed(ActionEvent e) {
- JFileChooser chooser = new JFileChooser(session.getProjectLoader().getFile()); - chooser.addChoosableFileFilter(SPSUtils.ARCHITECT_FILE_FILTER); - chooser.setDialogTitle(Messages.getString("Choose Project to Upload"));
-
-                    int response = chooser.showOpenDialog(dialog);
-
-                    if (response != JFileChooser.APPROVE_OPTION) {
-                        return;
-                    }
-
- fileField.setText(chooser.getSelectedFile().getAbsolutePath());
-                }
-            });
-            builder.add(new JLabel("File"), cc.xy(2, 2));
-            builder.add(fileField, cc.xy(4, 2));
-            builder.add(fileButton, cc.xy(6, 2));
-
-            final JButton okButton = new JButton("Upload");
-            okButton.addActionListener(new ActionListener() {
-                public void actionPerformed(ActionEvent e) {
-                    File f = new File(fileField.getText());
-                    if (!f.canRead()) {
- JOptionPane.showMessageDialog(dialogOwner, "File cannot be read", "Invalid File", JOptionPane.ERROR_MESSAGE);
-                        return;
-                    }
-                    try {
- ArchitectClientSideSession.uploadProject(getSelectedServerInfo(), nameField.getText(), f, session);
-                        dialog.dispose();
-                        refreshInfoList();
-                    } catch (Exception ex) {
- SPSUtils.showExceptionDialogNoReport(dialog, "Unable to upload project", ex);
-                    }
-                }
-            });
-            JButton cancelButton = new JButton("Cancel");
-            cancelButton.addActionListener(new ActionListener() {
-                public void actionPerformed(ActionEvent e) {
-                    dialog.dispose();
-                }
-            });
-
-            okButton.setEnabled(false);
-            DocumentListener documentListener = new DocumentListener() {
-                @Override
-                public void changedUpdate(DocumentEvent e) {
-                    textChanged(e);
-                }
-                @Override
-                public void insertUpdate(DocumentEvent e) {
-                    textChanged(e);
-                }
-                @Override
-                public void removeUpdate(DocumentEvent e) {
-                    textChanged(e);
-                }
-                private void textChanged(DocumentEvent e) {
- okButton.setEnabled(!fileField.getText().isEmpty() && !nameField.getText().isEmpty());
-                }
-            };
-            fileField.getDocument().addDocumentListener(documentListener);
-            nameField.getDocument().addDocumentListener(documentListener);
-
- JPanel buttonBar = ButtonBarFactory.buildRightAlignedBar(okButton, cancelButton);
-            builder.add(buttonBar, cc.xyw(2, 3, 5));
-            dialog.add(panel);
-            SPSUtils.makeJDialogCancellable(dialog, null);
-            dialog.pack();
-            dialog.setLocationRelativeTo(dialogOwner);
-            dialog.setVisible(true);
-        }
-    };
-
-    private final Action deleteAction = new AbstractAction("Delete") {
-        public void actionPerformed(ActionEvent e) {
-
-            if (getSelectedServerInfo() != null) {
-
-                int [] indices = projects.getSelectedIndices();
-
-                if (indices.length >= 1) {
-
-                    final Object [] objs = new Object[indices.length];
-                    for (int i = 0; i < indices.length; i++) {
- objs[i] = projects.getModel().getElementAt(indices[i]);
-                    }
-
-                    String promptMessage;
-                    if (indices.length == 1) {
- promptMessage = "Are you sure you want to delete the selected project?" +
-                                        "\nThis action cannot be undone.";
-                    } else {
- promptMessage = "Are you sure you want to delete these " + indices.length + " selected projects?" +
-                                        "\nThis action cannot be undone.";
-                    }
-
- if (JOptionPane.showConfirmDialog(dialogOwner, promptMessage, "Confirm Delete Projects", - JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) {
-                        for (Object obj : objs) {
-                            if (obj instanceof ProjectLocation) {
- ProjectLocation location = (ProjectLocation) obj;
-                                try {
- ArchitectClientSideSession.deleteServerWorkspace(location, session);
-                                } catch (Exception ex) {
- throw new RuntimeException("Unable to delete project", ex);
-                                }
-                            }
-                        }
-
-                        refreshInfoList();
-                    }
-                }
-            }
-        }
-    };
-
- private final Action openSecurityManagerPanelAction = new AbstractAction("Security") {
-        public void actionPerformed(ActionEvent e) {
-
- final JDialog d = SPSUtils.makeOwnedDialog(dialogOwner, "Security Manager");
-            Action closeAction = new AbstractAction("Close") {
-                public void actionPerformed(ActionEvent e) {
-                    d.dispose();
-                }
-            };
-
- SecurityPanel spm = new SecurityPanel(getSelectedServerInfo(), closeAction, d, session);
-            d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
-            d.setContentPane(spm.getPanel());
-
-            SPSUtils.makeJDialogCancellable(d, null);
-            d.pack();
-            d.setLocationRelativeTo(dialogOwner);
-            d.setVisible(true);
-        }
-    };
-
-    private boolean connected = false;
-    private SPServerInfo serverInfo = null;
-
-    public ServerProjectsManagerPanel(
-            SPServerInfo serverInfo,
-            ArchitectSwingSession session,
-            ArchitectSessionContext context,
-            Component dialogOwner,
-            Action closeAction)
-    {
-        this.serverInfo = serverInfo;
-        this.dialogOwner = dialogOwner;
-        this.session = session;
-        this.context = context;
-        this.closeAction = closeAction;
-
-        ArchitectClientSideSession.getCookieStore().clear();
-
-        DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout(
-                "pref:grow, 5dlu, pref",
-                "pref, pref, pref"));
-
-        servers = null;
-
-        projects = new JList(new DefaultListModel());
-        projects.addMouseListener(new MouseAdapter() {
-            @Override
-            public void mouseReleased(MouseEvent e) {
-                refreshPanel();
- if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e)) {
-                    openAction.actionPerformed(null);
-                }
-            }
-        });
-
-        JScrollPane projectsPane = new JScrollPane(projects);
-        projectsPane.setPreferredSize(new Dimension(250, 300));
-
- JButton securityButton = new JButton(openSecurityManagerPanelAction);
-
-        refreshInfoList();
-        CellConstraints cc = new CellConstraints();
- builder.add(new JLabel(serverInfo.getName() + "'s projects:"), cc.xyw(1, 1, 2));
-        builder.nextLine();
-        builder.add(projectsPane, cc.xywh(1, 2, 1, 2));
-
- DefaultFormBuilder buttonBarBuilder = new DefaultFormBuilder(new FormLayout("pref"));
-        buttonBarBuilder.append(new JButton(refreshAction));
-        buttonBarBuilder.append(securityButton);
-        buttonBarBuilder.append(new JButton(newAction));
-        buttonBarBuilder.append(new JButton(openAction));
-        buttonBarBuilder.append(new JButton(deleteAction));
-        buttonBarBuilder.append(new JButton(closeAction));
-        builder.add(buttonBarBuilder.getPanel(), cc.xy(3, 2));
-        builder.setDefaultDialogBorder();
-        panel = builder.getPanel();
-    }
-
-    public ServerProjectsManagerPanel(
-            ArchitectSwingSession session,
-            ArchitectSessionContext context,
-            Component dialogOwner,
-            Action closeAction)
-    {
-        this.session = session;
-        this.dialogOwner = dialogOwner;
-        this.context = context;
-        this.closeAction = closeAction;
-
-        ArchitectClientSideSession.getCookieStore().clear();
-
-        DefaultFormBuilder builder = new DefaultFormBuilder(new FormLayout(
-                "pref:grow, 5dlu, pref:grow, 5dlu, pref",
-                "pref, pref, pref"));
-
-        servers = new JList(new DefaultListModel());
-        servers.addMouseListener(new MouseAdapter() {
-            @Override
-            public void mouseReleased(MouseEvent e) {
-                if (SwingUtilities.isLeftMouseButton(e)) {
-                    refreshInfoList();
-                }
-            }
-        });
-
- DefaultListModel serversModel = (DefaultListModel) servers.getModel();
-        serversModel.removeAllElements();
-        if (context.getServerManager().getServers(false).size() > 0) {
- for (SPServerInfo serverInfo : context.getServerManager().getServers(false)) {
-                serversModel.addElement(serverInfo);
-            }
-        } else {
-            serversModel.addElement("No Servers");
-            servers.setEnabled(false);
-        }
-
-        projects = new JList(new DefaultListModel());
-        projects.addMouseListener(new MouseAdapter() {
-            @Override
-            public void mouseReleased(MouseEvent e) {
-                refreshPanel();
- if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e)) {
-                    openAction.actionPerformed(null);
-                }
-            }
-        });
-
-        JScrollPane projectsPane = new JScrollPane(projects);
-        projectsPane.setPreferredSize(new Dimension(250, 300));
-
-        JScrollPane serverPane = new JScrollPane(servers);
-        serverPane.setPreferredSize(new Dimension(250, 300));
-
- JButton securityButton = new JButton(openSecurityManagerPanelAction);
-
-        refreshInfoList();
-        CellConstraints cc = new CellConstraints();
-        builder.add(new JLabel("Servers:"), cc.xyw(1, 1, 2));
-        builder.add(new JLabel("Projects:"), cc.xyw(3, 1, 2));
-        builder.nextLine();
-        builder.add(serverPane, cc.xywh(1, 2, 1, 2));
-        builder.add(projectsPane, cc.xywh(3, 2, 1, 2));
-
- DefaultFormBuilder buttonBarBuilder = new DefaultFormBuilder(new FormLayout("pref"));
-        buttonBarBuilder.append(new JButton(refreshAction));
-        buttonBarBuilder.append(securityButton);
-        buttonBarBuilder.append(new JButton(newAction));
-        buttonBarBuilder.append(new JButton(openAction));
-        buttonBarBuilder.append(new JButton(uploadAction));
-        buttonBarBuilder.append(new JButton(deleteAction));
-        buttonBarBuilder.append(new JButton(closeAction));
-        builder.add(buttonBarBuilder.getPanel(), cc.xy(5, 2));
-        builder.setDefaultDialogBorder();
-        panel = builder.getPanel();
-    }
-
-    public boolean isConnected() {
-        return connected;
-    }
-
-    public JPanel getPanel() {
-        return panel;
-    }
-
-    private void refreshPanel() {
-        // Update the status of buttons and lists .
-        if (connected) {
-
-            openSecurityManagerPanelAction.setEnabled(true);
-            newAction.setEnabled(true);
-            uploadAction.setEnabled(true);
-
-            if (projects.isSelectionEmpty()) {
-                openAction.setEnabled(false);
-                deleteAction.setEnabled(false);
-            } else {
-                openAction.setEnabled(true);
-                deleteAction.setEnabled(true);
-            }
-
-            projects.setEnabled(true);
-        } else {
-            openSecurityManagerPanelAction.setEnabled(false);
-            newAction.setEnabled(false);
-            openAction.setEnabled(false);
-            uploadAction.setEnabled(false);
-            deleteAction.setEnabled(false);
-            projects.setEnabled(false);
-        }
-    }
-
-    private void refreshInfoList() {
-        DefaultListModel model = (DefaultListModel) projects.getModel();
-        model.removeAllElements();
-
-        SPServerInfo serviceInfo = getSelectedServerInfo();
-        if (serviceInfo != null) {
-            try {
-
- ((ArchitectSwingSessionContextImpl) session.getContext()).createSecuritySession(serviceInfo);
-
-                // Sorts the project locations alphabetically
- List<ProjectLocation> projects = ArchitectClientSideSession.getWorkspaceNames(serviceInfo); - Collections.sort(projects, new Comparator<ProjectLocation>() { - public int compare(ProjectLocation proj1, ProjectLocation proj2) { - return proj1.getName().compareToIgnoreCase(proj2.getName());
-                    }
-                });
-
-                model.clear();
-                for (ProjectLocation pl : projects) {
-                    model.addElement(pl);
-                }
-
-                connected = true;
-            } catch (Exception ex) {
-                model.removeAllElements();
-                model.addElement("Unable to get projects from server");
-                connected = false;
-                session.createUserPrompter("Server Unavailable",
-                        UserPromptType.MESSAGE,
-                        UserPromptOptions.OK,
-                        UserPromptResponse.OK,
-                        "OK", "OK").promptUser("");
-            }
-
-            refreshPanel();
-        } else {
-            model.addElement("No Server Selected");
-            connected = false;
-            refreshPanel();
-        }
-    }
-
-    private SPServerInfo getSelectedServerInfo() {
-        if (serverInfo != null) return serverInfo;
-
-        int index = servers.getSelectedIndex();
-        Object obj;
-
-        if (index >= 0) {
-            obj = servers.getModel().getElementAt(index);
-
-            if (obj instanceof SPServerInfo) {
-                return (SPServerInfo) obj;
-            }
-        }
-
-        return null;
-    }
-}
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectClientSideSession.java Fri Oct 15 15:10:40 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/enterprise/ArchitectClientSideSession.java Fri Oct 15 15:51:41 2010
@@ -79,9 +79,9 @@
 import ca.sqlpower.swingui.event.SessionLifecycleListener;
 import ca.sqlpower.util.SQLPowerUtils;
 import ca.sqlpower.util.TransactionEvent;
+import ca.sqlpower.util.UserPrompterFactory;
 import ca.sqlpower.util.UserPrompter.UserPromptOptions;
 import ca.sqlpower.util.UserPrompter.UserPromptResponse;
-import ca.sqlpower.util.UserPrompterFactory;

public class ArchitectClientSideSession extends ArchitectSessionImpl implements RevisionController {

@@ -539,20 +539,12 @@
         }

     }
-
- public static ProjectLocation uploadProject(SPServerInfo serviceInfo, String name, File project, ArchitectSession session)
+
+ public static ProjectLocation uploadProject(SPServerInfo serviceInfo, String name, File project, UserPrompterFactory session) throws URISyntaxException, ClientProtocolException, IOException, JSONException {
-        return ClientSideSessionUtils.uploadProject(serviceInfo,
-                name,
-                project,
- session.createUserPrompter("You do not have sufficient privileges to create a new workspace.",
-                UserPromptType.MESSAGE,
-                       UserPromptOptions.OK,
-                       UserPromptResponse.OK,
-                       "OK", "OK"),
-                cookieStore);
-    }
-
+ return ClientSideSessionUtils.uploadProject(serviceInfo, name, project, session, cookieStore);
+       }
+
public int revertServerWorkspace(int revisionNo) throws IOException, URISyntaxException, JSONException {
            return revertServerWorkspace(projectLocation, revisionNo);
        }
@@ -719,16 +711,13 @@
ClientSideSessionUtils.persistRevisionFromServer(projectLocation, revisionNo, decoder, cookieStore);
     }

- public static ProjectLocation createNewServerSession(SPServerInfo serviceInfo, String name, ArchitectSession session) + public static ProjectLocation createNewServerSession(SPServerInfo serviceInfo, String name,
+               ArchitectSession session)
throws URISyntaxException, ClientProtocolException, IOException, JSONException {
         return ClientSideSessionUtils.createNewServerSession(serviceInfo,
                 name,
                 cookieStore,
- session.createUserPrompter("You do not have sufficient privileges to create a new workspace.",
-                        UserPromptType.MESSAGE,
-                        UserPromptOptions.OK,
-                        UserPromptResponse.OK,
-                        "OK", "OK"));
+                session);
     }

public static List<ProjectLocation> getWorkspaceNames(SPServerInfo serviceInfo)
@@ -739,12 +728,7 @@
public static void deleteServerWorkspace(ProjectLocation projectLocation, ArchitectSession session) throws URISyntaxException, ClientProtocolException, IOException {

            ClientSideSessionUtils.deleteServerWorkspace(projectLocation,
-                   cookieStore,
- session.createUserPrompter("You do not have sufficient privileges to delete the selected workspace.",
-                       UserPromptType.MESSAGE,
-                       UserPromptOptions.OK,
-                       UserPromptResponse.OK,
-                       "OK", "OK"));
+                   cookieStore, session);
     }

     public NetworkConflictResolver getUpdater() {
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectFrame.java Fri Oct 15 12:36:22 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/ArchitectFrame.java Fri Oct 15 15:51:41 2010
@@ -136,10 +136,10 @@
 import ca.sqlpower.architect.swingui.action.ZoomResetAction;
 import ca.sqlpower.architect.swingui.action.ZoomToFitAction;
import ca.sqlpower.architect.swingui.action.enterprise.RefreshProjectAction; +import ca.sqlpower.architect.swingui.enterprise.ArchitectServerProjectsManagerPanel;
 import ca.sqlpower.architect.swingui.enterprise.ProjectSecurityPanel;
 import ca.sqlpower.architect.swingui.enterprise.RevisionListPanel;
 import ca.sqlpower.architect.swingui.enterprise.SecurityPanel;
-import ca.sqlpower.architect.swingui.enterprise.ServerProjectsManagerPanel;
 import ca.sqlpower.architect.swingui.event.SelectionEvent;
 import ca.sqlpower.architect.swingui.event.SelectionListener;
 import ca.sqlpower.architect.swingui.olap.action.ImportSchemaAction;
@@ -159,6 +159,7 @@
import ca.sqlpower.swingui.SwingUIUserPrompterFactory.NonModalSwingUIUserPrompterFactory;
 import ca.sqlpower.swingui.action.OpenUrlAction;
 import ca.sqlpower.swingui.enterprise.client.SPServerInfoManagerPanel;
+import ca.sqlpower.swingui.enterprise.client.ServerProjectsManagerPanel;
 import ca.sqlpower.swingui.event.SessionLifecycleEvent;
 import ca.sqlpower.swingui.event.SessionLifecycleListener;
 import ca.sqlpower.util.BrowserUtil;
@@ -314,8 +315,7 @@
                             }
                         };

- ServerProjectsManagerPanel spm = new ServerProjectsManagerPanel(si, currentSession, context,
-                                ArchitectFrame.this, closeAction);
+ ServerProjectsManagerPanel spm = new ArchitectServerProjectsManagerPanel(si, currentSession, context, closeAction);
                         if (spm.isConnected()) {
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
                             dialog.setContentPane(spm.getPanel());
@@ -373,8 +373,7 @@
                 }
             };

- ServerProjectsManagerPanel spm = new ServerProjectsManagerPanel(currentSession, context,
-                    ArchitectFrame.this, closeAction);
+ ServerProjectsManagerPanel spm = new ArchitectServerProjectsManagerPanel(currentSession, context, closeAction);
             d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
             d.setContentPane(spm.getPanel());

Reply via email to