Author: ruschein
Date: 2011-04-06 16:40:38 -0700 (Wed, 06 Apr 2011)
New Revision: 24692

Added:
   
csplugins/trunk/ucsd/mes/genomespace-plugin/src/main/java/cytoscape/genomespace/ui/
   
csplugins/trunk/ucsd/mes/genomespace-plugin/src/main/java/cytoscape/genomespace/ui/UserNamePasswordDialog.java
Modified:
   
csplugins/trunk/ucsd/mes/genomespace-plugin/src/main/java/cytoscape/genomespace/GSUtils.java
   
csplugins/trunk/ucsd/mes/genomespace-plugin/src/main/java/cytoscape/genomespace/ListFilesInGenomeSpace.java
Log:
Added username/password entry dialog.

Modified: 
csplugins/trunk/ucsd/mes/genomespace-plugin/src/main/java/cytoscape/genomespace/GSUtils.java
===================================================================
--- 
csplugins/trunk/ucsd/mes/genomespace-plugin/src/main/java/cytoscape/genomespace/GSUtils.java
        2011-04-06 22:07:11 UTC (rev 24691)
+++ 
csplugins/trunk/ucsd/mes/genomespace-plugin/src/main/java/cytoscape/genomespace/GSUtils.java
        2011-04-06 23:40:38 UTC (rev 24692)
@@ -1,36 +1,71 @@
-
 package cytoscape.genomespace;
 
 
+import cytoscape.Cytoscape;
+import cytoscape.genomespace.ui.UserNamePasswordDialog;
+
 import java.util.List;
 import java.util.Map;
 import java.util.HashMap;
 import java.util.Collection;
+import javax.swing.JOptionPane;
 
 import org.genomespace.client.GsSession;
+import org.genomespace.client.exceptions.AuthorizationException;
 import org.genomespace.client.exceptions.GSClientException;
 import org.genomespace.client.User;
 
 import org.genomespace.datamanager.core.GSFileMetadata;
 
+
 final class GSUtils {
-
        private GSUtils() {};
 
        private static GsSession session = null;
 
        public static GsSession getSession() {
-               if ( session == null || !session.isLoggedIn()) {
+               if (session == null || !session.isLoggedIn()) {
                        try {
+                               final UserNamePasswordDialog 
userNamePasswordDialog = new UserNamePasswordDialog();
+                               userNamePasswordDialog.setVisible(true);
                                session = new GsSession();
-                               String username = "test";
-                               String password = "password";
-                               User user = session.login(username, password);
-                       } catch (Exception e) { throw new 
GSClientException("failed to login",e); }
+                               if (!loginToGenomeSpace())
+                                       throw new GSClientException("failed to 
login!", null);
+                       } catch (Exception e) {
+                               throw new GSClientException("failed to login", 
e);
+                       }
                }
                return session;
        }
 
+       public static boolean loginToGenomeSpace() {
+               for (;;) {
+                       final UserNamePasswordDialog userNamePasswordDialog = 
new UserNamePasswordDialog();
+                       userNamePasswordDialog.setVisible(true);
+                       final String userName = 
userNamePasswordDialog.getUserName();
+                       final String password = 
userNamePasswordDialog.getPassword();
+                       if (userName == null || userName.isEmpty() || password 
== null || password.isEmpty())
+                               return false;
+
+                       try {
+                               session.login(userName, password);
+                               return true;
+                       } catch (final AuthorizationException e) {
+                               
JOptionPane.showMessageDialog(Cytoscape.getDesktop(),
+                                                             "Invalid user 
name or password!",
+                                                             "Login Error",
+                                                             
JOptionPane.ERROR_MESSAGE);
+                               continue;
+                       } catch (final Exception e) {
+                               
JOptionPane.showMessageDialog(Cytoscape.getDesktop(),
+                                                             e.getMessage(),
+                                                             "Login Error",
+                                                             
JOptionPane.ERROR_MESSAGE);
+                               return false;
+                       }
+               }
+       }
+
        public static Map<String,GSFileMetadata> 
getFileNameMap(Collection<GSFileMetadata> l) {
                Map<String,GSFileMetadata> nm = new 
HashMap<String,GSFileMetadata>();
                for ( GSFileMetadata f : l )

Modified: 
csplugins/trunk/ucsd/mes/genomespace-plugin/src/main/java/cytoscape/genomespace/ListFilesInGenomeSpace.java
===================================================================
--- 
csplugins/trunk/ucsd/mes/genomespace-plugin/src/main/java/cytoscape/genomespace/ListFilesInGenomeSpace.java
 2011-04-06 22:07:11 UTC (rev 24691)
+++ 
csplugins/trunk/ucsd/mes/genomespace-plugin/src/main/java/cytoscape/genomespace/ListFilesInGenomeSpace.java
 2011-04-06 23:40:38 UTC (rev 24692)
@@ -1,5 +1,6 @@
 package cytoscape.genomespace;
 
+
 import cytoscape.Cytoscape;
 import cytoscape.util.CytoscapeAction;
 import cytoscape.util.FileUtil;
@@ -22,13 +23,13 @@
 import org.genomespace.client.DataManagerClient;
 import org.genomespace.client.User;
 
+
 /**
  * A simple action.  Change the names as appropriate and
  * then fill in your expected behavior in the actionPerformed()
  * method.
  */
 public class ListFilesInGenomeSpace extends CytoscapeAction {
-
        private static final long serialVersionUID = 1234487711999989L;
        private static final CyLogger logger = 
CyLogger.getLogger(ListFilesInGenomeSpace.class);
 
@@ -39,24 +40,22 @@
                // Set the menu you'd like here.  Plugins don't need
                // to live in the Plugins menu, so choose whatever
                // is appropriate!
-        setPreferredMenu("Plugins.GenomeSpace");
+               setPreferredMenu("Plugins.GenomeSpace");
        }
 
        public void actionPerformed(ActionEvent e) {
-
                try {
+                       GsSession client = GSUtils.getSession(); 
+                       DataManagerClient dmc = client.getDataManagerClient();
 
-               GsSession client = GSUtils.getSession(); 
-               DataManagerClient dmc = client.getDataManagerClient();
+                       // list the files present for this user
+                       List<GSFileMetadata> myFiles = 
dmc.listDefaultDirectory().getContents();
+                       Vector<String> fileNames = new Vector<String>();
+                       for (GSFileMetadata aFile: myFiles) {
+                               fileNames.add(aFile.getName());
+                       }
 
-               // list the files present for this user
-               List<GSFileMetadata> myFiles = 
dmc.listDefaultDirectory().getContents();
-               Vector<String> fileNames = new Vector<String>();
-               for (GSFileMetadata aFile: myFiles) {
-                       fileNames.add(aFile.getName());
-               }
-
-               displayFiles(fileNames);
+                       displayFiles(fileNames);
        
                } catch (Exception ex) {
                        logger.error("GenomeSpace failed",ex);

Added: 
csplugins/trunk/ucsd/mes/genomespace-plugin/src/main/java/cytoscape/genomespace/ui/UserNamePasswordDialog.java
===================================================================
--- 
csplugins/trunk/ucsd/mes/genomespace-plugin/src/main/java/cytoscape/genomespace/ui/UserNamePasswordDialog.java
                              (rev 0)
+++ 
csplugins/trunk/ucsd/mes/genomespace-plugin/src/main/java/cytoscape/genomespace/ui/UserNamePasswordDialog.java
      2011-04-06 23:40:38 UTC (rev 24692)
@@ -0,0 +1,103 @@
+package cytoscape.genomespace.ui;
+
+
+import cytoscape.Cytoscape;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.GridBagLayout;
+import java.awt.GridBagConstraints;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JPasswordField;
+import javax.swing.JTextField;
+import javax.swing.border.LineBorder;
+
+
+public final class UserNamePasswordDialog extends JDialog {
+       private final JLabel userNameLabel;
+       private final JLabel passwordLabel;
+       private final JTextField userNameTextField;
+       private final JPasswordField passwordField;
+       private final JButton loginButton;
+       private final JButton cancelButton;
+
+       public UserNamePasswordDialog() {
+               super(Cytoscape.getDesktop(), "Genome Space Authentication", /* 
modal = */ true);
+
+               final JPanel userNameAndPasswordPanel = new JPanel(new 
GridBagLayout());
+               final GridBagConstraints constraints = new GridBagConstraints();
+               constraints.fill = GridBagConstraints.HORIZONTAL;
+
+               userNameLabel = new JLabel("GS User name: ");
+               constraints.gridx = 0;
+               constraints.gridy = 0;
+               constraints.gridwidth = 1;
+               userNameAndPasswordPanel.add(userNameLabel);
+
+               userNameTextField = new JTextField(20);
+               constraints.gridx = 1;
+               constraints.gridy = 0;
+               constraints.gridwidth = 2;
+               userNameAndPasswordPanel.add(userNameTextField);
+
+               passwordLabel = new JLabel("GS Password: ");
+               constraints.gridx = 0;
+               constraints.gridy = 1;
+               constraints.gridwidth = 1;
+               userNameAndPasswordPanel.add(passwordLabel);
+
+               passwordField = new JPasswordField(20);
+               constraints.gridx = 1;
+               constraints.gridy = 1;
+               constraints.gridwidth = 2;
+               userNameAndPasswordPanel.add(passwordField);
+
+               userNameAndPasswordPanel.setBorder(new LineBorder(Color.GRAY));
+
+               final JPanel buttonPanel = new JPanel();
+               loginButton = new JButton("Login");
+               loginButton.addActionListener(new ActionListener() {
+                       public void actionPerformed(final ActionEvent e) {
+                               if 
(userNameTextField.getText().trim().isEmpty())
+                                       
JOptionPane.showMessageDialog(UserNamePasswordDialog.this,
+                                                                     "Please 
enter a non-empty user name!",
+                                                                     "Error",
+                                                                     
JOptionPane.ERROR_MESSAGE);
+                               else if (passwordField.getText().isEmpty())
+                                        
JOptionPane.showMessageDialog(UserNamePasswordDialog.this,
+                                                                      "Please 
enter a non-empty password!",
+                                                                      "Error",
+                                                                      
JOptionPane.ERROR_MESSAGE);
+                               else
+                                       dispose();
+                       }
+                       });
+               buttonPanel.add(loginButton);
+               getRootPane().setDefaultButton(loginButton);
+
+               cancelButton = new JButton("Cancel");
+               cancelButton.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent e) {
+                               dispose();
+                       }
+                       });
+               buttonPanel.add(cancelButton);
+
+               getContentPane().add(userNameAndPasswordPanel, 
BorderLayout.CENTER);
+               getContentPane().add(buttonPanel, BorderLayout.PAGE_END);
+               
+               pack();
+               setResizable(false);
+               setLocationRelativeTo(Cytoscape.getDesktop());
+       }
+
+       public String getUserName() { return 
userNameTextField.getText().trim(); }
+       public String getPassword() { return passwordField.getText(); }
+}
\ No newline at end of file

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to