Updates to the Google login non-signed in dialog.

Change-Id: I1b5461bee42968e578531e6b3c9c89e48fc240e4
diff --git a/login/src/com/google/gct/login/ui/GoogleLoginUsersPanel.java b/login/src/com/google/gct/login/ui/GoogleLoginUsersPanel.java
index 764880d..6536283 100644
--- a/login/src/com/google/gct/login/ui/GoogleLoginUsersPanel.java
+++ b/login/src/com/google/gct/login/ui/GoogleLoginUsersPanel.java
@@ -49,6 +49,7 @@
 public class GoogleLoginUsersPanel extends JPanel implements ListSelectionListener {
   private static final String PLAY_CONSOLE_URL = "https://play.google.com/apps/publish/#ProfilePlace";
   private static final String CLOUD_CONSOLE_URL = "https://console.developers.google.com/accountsettings";
+  private final static String LEARN_MORE_URL = "https://developers.google.com/cloud/devtools/android_studio_templates/";
   private JBList list;
   private DefaultListModel listModel;
   private static final int MAX_VISIBLE_ROW_COUNT = 3;
@@ -101,17 +102,25 @@
       public void mouseClicked(MouseEvent mouseEvent) {
         list.updateUI();
 
-        if(!valueChanged) {
-          // Clicking on an already active user
-          int index = list.locationToIndex(mouseEvent.getPoint());
-          if (index >= 0) {
-            boolean inPlayUrl = usersListCellRenderer.inPlayConsoleUrl(mouseEvent.getPoint(), index);
-            if(inPlayUrl){
-              BrowserUtil.browse(PLAY_CONSOLE_URL);
-            } else {
-              boolean inCloudUrl = usersListCellRenderer.inCloudConsoleUrl(mouseEvent.getPoint(), index);
-              if(inCloudUrl) {
-                BrowserUtil.browse(CLOUD_CONSOLE_URL);
+        if(listModel.getSize() == 1 && (listModel.get(0) instanceof NoUsersListItem)) {
+          // When there are no users available
+          if(usersListCellRenderer.inLearnMoreUrl(mouseEvent.getPoint())){
+            BrowserUtil.browse(LEARN_MORE_URL);
+          }
+        } else {
+          // When users are available
+          if(!valueChanged) {
+            // Clicking on an already active user
+            int index = list.locationToIndex(mouseEvent.getPoint());
+            if (index >= 0) {
+              boolean inPlayUrl = usersListCellRenderer.inPlayConsoleUrl(mouseEvent.getPoint(), index);
+              if(inPlayUrl){
+                BrowserUtil.browse(PLAY_CONSOLE_URL);
+              } else {
+                boolean inCloudUrl = usersListCellRenderer.inCloudConsoleUrl(mouseEvent.getPoint(), index);
+                if(inCloudUrl) {
+                  BrowserUtil.browse(CLOUD_CONSOLE_URL);
+                }
               }
             }
           }
@@ -129,7 +138,11 @@
           // If current object is the non-user list item, use default cursor
           Object currentObject = listModel.get(index);
           if(currentObject instanceof NoUsersListItem) {
-            list.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
+            if(usersListCellRenderer.inLearnMoreUrl(mouseEvent.getPoint())) {
+              list.setCursor(new Cursor(Cursor.HAND_CURSOR));
+            } else {
+              list.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
+            }
             return;
           }
 
diff --git a/login/src/com/google/gct/login/ui/UsersListCellRenderer.java b/login/src/com/google/gct/login/ui/UsersListCellRenderer.java
index 0a239b4..e6fee90 100644
--- a/login/src/com/google/gct/login/ui/UsersListCellRenderer.java
+++ b/login/src/com/google/gct/login/ui/UsersListCellRenderer.java
@@ -52,7 +52,11 @@
   private final static String PLAY_LABEL_TEXT = "Open Play Developer Console";
   private final static String DEFAULT_AVATAR = "/icons/[email protected]";
   private final static String GOOGLE_IMG = "/icons/google.png";
-  private final static String SIGN_IN_TEXT = "Sign in with your Google account";
+  private final static String SIGN_IN_TEXT = "<HTML> Sign in with your Google account to start <br> adding "
+    + "Cloud functionality to your <br> Android applications from Android Studio. </HTML>";
+  private final static String LEARN_MORE_TEXT = "Learn more";
+  private final Color LEARN_MORE_COLOR;
+  private final Color SIGN_IN_COLOR;
   private final Color ACTIVE_COLOR;
   private final Color INACTIVE_COLOR;
   private final int PLAIN_USER_IMAGE_WIDTH = 48;
@@ -65,8 +69,7 @@
   private final int GOOGLE_IMAGE_WEST = 18;
   private final int WELCOME_LABEL_NORTH = 15;
   private final int WELCOME_LABEL_SOUTH = 25;
-  private final int WELCOME_LABEL_EAST = 19;
-  private final int WELCOME_LABEL_WEST = 21;
+  private final int WELCOME_LABEL_EAST = 38;
   private final int USER_LABEL_VERTICAL_STRUT = 3;
   private final int HGAP = 10;
   private final int VGAP = 10;
@@ -77,12 +80,15 @@
   private final Dimension ACTIVE_MAIN_PANEL_DIMENSION;
   private final Dimension CLOUD_LABEL_DIMENSION;
   private final Dimension PLAY_LABEL_DIMENSION;
+  private final Dimension LEARN_MORE_LABEL_DIMENSION;
 
   public UsersListCellRenderer() {
     NAME_FONT = new Font("Helvetica", Font.BOLD, 13);
-    GENERAL_FONT = new Font("Helvetica", Font.PLAIN, 13);;
+    GENERAL_FONT = new Font("Helvetica", Font.PLAIN, 13);
     MAIN_PANEL_DIMENSION = new Dimension(250, 68);
     ACTIVE_MAIN_PANEL_DIMENSION = new Dimension(250, 116);
+    SIGN_IN_COLOR = new Color(666666);
+    LEARN_MORE_COLOR = new Color(666);
 
     ACTIVE_COLOR = new Color(0xffffff);
     INACTIVE_COLOR = new Color(0xf5f5f5);
@@ -91,6 +97,7 @@
     GENERAL_FONT_HEIGHT = fontMetrics.getHeight();
     CLOUD_LABEL_DIMENSION = new Dimension(fontMetrics.stringWidth(CLOUD_LABEL_TEXT), GENERAL_FONT_HEIGHT);
     PLAY_LABEL_DIMENSION = new Dimension(fontMetrics.stringWidth(PLAY_LABEL_TEXT), GENERAL_FONT_HEIGHT);
+    LEARN_MORE_LABEL_DIMENSION = new Dimension(fontMetrics.stringWidth(LEARN_MORE_TEXT), GENERAL_FONT_HEIGHT);
   }
 
   @Override
@@ -180,6 +187,22 @@
     return false;
   }
 
+  public boolean inLearnMoreUrl(Point point) {
+    // 3 is for the number of labels and row of texts
+    double urlYStart = GOOGLE_IMAGE_NORTH + GOOGLE_IMAGE_HEIGHT + WELCOME_LABEL_NORTH
+      + (GENERAL_FONT_HEIGHT * 3) + 3;
+    double urlYEnd = urlYStart + LEARN_MORE_LABEL_DIMENSION.getHeight();
+    double urlXStart = GOOGLE_IMAGE_WEST;
+    double urlXEnd = urlXStart + LEARN_MORE_LABEL_DIMENSION.getWidth();
+
+    if((point.getX() > urlXStart) && (point.getX() < urlXEnd)
+       && (point.getY() > urlYStart) && (point.getY() < urlYEnd)) {
+      return true;
+    }
+
+    return false;
+  }
+
   public int getMainPanelHeight() {
     return (int)MAIN_PANEL_DIMENSION.getHeight();
   }
@@ -260,6 +283,7 @@
     BoxLayout layout = new BoxLayout(mainPanel, BoxLayout.Y_AXIS);
     mainPanel.setLayout(layout);
     mainPanel.setBackground(JBColor.WHITE);
+    mainPanel.setBorder(BorderFactory.createEmptyBorder(0, GOOGLE_IMAGE_WEST, 0, 0));
 
     URL url = UsersListCellRenderer.class.getResource(GOOGLE_IMG);
     Image image = Toolkit.getDefaultToolkit().getImage(url);
@@ -267,17 +291,22 @@
       GOOGLE_IMAGE_WIDTH, GOOGLE_IMAGE_HEIGHT, java.awt.Image.SCALE_SMOOTH);
     JLabel imageLabel = new JLabel(new ImageIcon(scaledImage));
 
-    JLabel textLabel = new JLabel(SIGN_IN_TEXT);
-    Dimension textSize = textLabel.getPreferredSize();
-    textLabel.setPreferredSize(new Dimension((int)textSize.getWidth() + WELCOME_LABEL_EAST,
-      (int)textSize.getHeight()));
+    JLabel signInLabel = new JLabel(SIGN_IN_TEXT);
+    signInLabel.setFont(GENERAL_FONT);
+    signInLabel.setForeground(SIGN_IN_COLOR);
+    Dimension textSize = signInLabel.getPreferredSize();
+    signInLabel.setPreferredSize(new Dimension((int)textSize.getWidth() + WELCOME_LABEL_EAST, (int)textSize.getHeight()));
+
+    JLabel urlLabel = new JLabel(LEARN_MORE_TEXT);
+    urlLabel.setFont(GENERAL_FONT);
+    urlLabel.setForeground(LEARN_MORE_COLOR);
+    urlLabel.setPreferredSize(LEARN_MORE_LABEL_DIMENSION);
 
     mainPanel.add(Box.createVerticalStrut(GOOGLE_IMAGE_NORTH));
-    mainPanel.add(Box.createHorizontalStrut(GOOGLE_IMAGE_WEST));
     mainPanel.add(imageLabel);
     mainPanel.add(Box.createVerticalStrut(WELCOME_LABEL_NORTH));
-    mainPanel.add(Box.createHorizontalStrut(WELCOME_LABEL_WEST - GOOGLE_IMAGE_WEST));
-    mainPanel.add(textLabel);
+    mainPanel.add(signInLabel);
+    mainPanel.add(urlLabel);
     mainPanel.add(Box.createVerticalStrut(WELCOME_LABEL_SOUTH));
 
     return mainPanel;