summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOluwatobi Bashir-Bello <nbashirbello@google.com>2014-07-02 13:14:15 -0400
committerOluwatobi Bashir-Bello <nbashirbello@google.com>2014-07-08 09:33:38 -0400
commit8ce882bf845c260002c6b07fc96c9f862975757a (patch)
tree105a51fb62fa28a627f66c590ae2db697ff9ae12
parent2568997d72a1999020cbf8598411fb89ee5de3c5 (diff)
downloadcloud-8ce882bf845c260002c6b07fc96c9f862975757a.tar.gz
Google Login - Adding a panel for when there are no users.
Change-Id: I5e8448d0a4fb23c60a668bc8f43b6c948e06fd66
-rw-r--r--login/src/com/google/gct/login/ui/GoogleLoginUsersPanel.java18
-rw-r--r--login/src/com/google/gct/login/ui/NoUsersListItem.java27
-rw-r--r--login/src/com/google/gct/login/ui/UsersListCellRenderer.java71
-rw-r--r--resources/icons/google.pngbin0 -> 2049 bytes
-rw-r--r--resources/icons/google@2x.pngbin0 -> 3626 bytes
5 files changed, 96 insertions, 20 deletions
diff --git a/login/src/com/google/gct/login/ui/GoogleLoginUsersPanel.java b/login/src/com/google/gct/login/ui/GoogleLoginUsersPanel.java
index fccd6f9..debc24e 100644
--- a/login/src/com/google/gct/login/ui/GoogleLoginUsersPanel.java
+++ b/login/src/com/google/gct/login/ui/GoogleLoginUsersPanel.java
@@ -128,7 +128,13 @@ public class GoogleLoginUsersPanel extends JPanel implements ListSelectionListen
if(list.isSelectionEmpty()) {
signOutButton.setEnabled(false);
} else {
- signOutButton.setEnabled(true);
+ // If list contains the NoUsersListItem place holder
+ // sign out button should be disabled
+ if(listModel.get(0) instanceof NoUsersListItem) {
+ signOutButton.setEnabled(false);
+ } else {
+ signOutButton.setEnabled(true);
+ }
}
//Create a panel to hold the buttons
@@ -158,6 +164,9 @@ public class GoogleLoginUsersPanel extends JPanel implements ListSelectionListen
listModel.remove(index);
if (listModel.getSize() == 0) {
signOutButton.setEnabled(false);
+
+ // Add no user panel
+ listModel.addElement(NoUsersListItem.INSTANCE);
}
}
}
@@ -178,10 +187,8 @@ public class GoogleLoginUsersPanel extends JPanel implements ListSelectionListen
public void valueChanged(ListSelectionEvent e) {
valueChanged = true;
if (e.getValueIsAdjusting() == false) {
-
if (list.getSelectedIndex() == -1) {
signOutButton.setEnabled(false);
-
} else {
signOutButton.setEnabled(true);
@@ -210,6 +217,11 @@ public class GoogleLoginUsersPanel extends JPanel implements ListSelectionListen
}
}
+ if(listModel.getSize() == 0) {
+ // Add no user panel
+ listModel.addElement(NoUsersListItem.INSTANCE);
+ }
+
return activeUserIndex;
}
diff --git a/login/src/com/google/gct/login/ui/NoUsersListItem.java b/login/src/com/google/gct/login/ui/NoUsersListItem.java
new file mode 100644
index 0000000..26b1427
--- /dev/null
+++ b/login/src/com/google/gct/login/ui/NoUsersListItem.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.google.gct.login.ui;
+
+/**
+ * A place holder for when no user exist. This allows us to create
+ * a customized panel when no users exist.
+ */
+public class NoUsersListItem {
+ public static NoUsersListItem INSTANCE = new NoUsersListItem();
+
+ private NoUsersListItem() {
+ }
+}
diff --git a/login/src/com/google/gct/login/ui/UsersListCellRenderer.java b/login/src/com/google/gct/login/ui/UsersListCellRenderer.java
index 5cfc9c2..3fe9c3e 100644
--- a/login/src/com/google/gct/login/ui/UsersListCellRenderer.java
+++ b/login/src/com/google/gct/login/ui/UsersListCellRenderer.java
@@ -18,13 +18,7 @@ package com.google.gct.login.ui;
import com.intellij.ui.JBColor;
import com.intellij.util.ui.UIUtil;
-import javax.swing.BoxLayout;
-import javax.swing.ImageIcon;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.ListCellRenderer;
+import javax.swing.*;
import java.awt.Color;
import java.awt.Component;
@@ -38,6 +32,7 @@ import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Point;
import java.awt.Toolkit;
+import java.net.URL;
/**
@@ -48,11 +43,21 @@ public class UsersListCellRenderer extends JComponent implements ListCellRendere
private final static String CLOUD_LABEL_TEXT = "Open Cloud Console";
private final static String PLAY_LABEL_TEXT = "Open Play Developer Console";
private final static String DEFAULT_AVATAR = "/icons/loginAvatar.png";
+ private final static String GOOGLE_IMG = "/icons/google.png";
+ private final static String SIGN_IN_TEXT = "Sign in with your Google account";
private final Color ACTIVE_COLOR = JBColor.LIGHT_GRAY;
- private final int PLAIN_IMAGE_WIDTH = 48;
- private final int PLAIN_IMAGE_HEIGHT = 48;
- private final int ACTIVE_IMAGE_WIDTH = 96;
- private final int ACTIVE_IMAGE_HEIGHT = 96;
+ private final int PLAIN_USER_IMAGE_WIDTH = 48;
+ private final int PLAIN_USER_IMAGE_HEIGHT = 48;
+ private final int ACTIVE_USER_IMAGE_WIDTH = 96;
+ private final int ACTIVE_USER_IMAGE_HEIGHT = 96;
+ private final int GOOGLE_IMAGE_WIDTH = 96;
+ private final int GOOGLE_IMAGE_HEIGHT = 35;
+ private final int GOOGLE_IMAGE_NORTH = 18;
+ 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 HGAP = 10;
private final int VGAP = 10;
private final Font NAME_FONT;
@@ -75,6 +80,10 @@ public class UsersListCellRenderer extends JComponent implements ListCellRendere
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+ if(value instanceof NoUsersListItem) {
+ return createNoUserDisplay();
+ }
+
if(!(value instanceof UsersListItem)) {
return null;
}
@@ -104,8 +113,8 @@ public class UsersListCellRenderer extends JComponent implements ListCellRendere
image = Toolkit.getDefaultToolkit().getImage(DEFAULT_AVATAR);
}
- int imageWidth = calcIsSelected ? ACTIVE_IMAGE_WIDTH : PLAIN_IMAGE_WIDTH;
- int imageHeight = calcIsSelected ? ACTIVE_IMAGE_HEIGHT : PLAIN_IMAGE_HEIGHT;
+ int imageWidth = calcIsSelected ? ACTIVE_USER_IMAGE_WIDTH : PLAIN_USER_IMAGE_WIDTH;
+ int imageHeight = calcIsSelected ? ACTIVE_USER_IMAGE_HEIGHT : PLAIN_USER_IMAGE_HEIGHT;
Image scaledImage = image.getScaledInstance(imageWidth, imageHeight, java.awt.Image.SCALE_SMOOTH);
JComponent textPanel;
@@ -125,10 +134,10 @@ public class UsersListCellRenderer extends JComponent implements ListCellRendere
public boolean inPlayConsoleUrl(Point point, int activeIndex) {
// 2 is for the number of labels before this one
- double playYStart = VGAP + ACTIVE_IMAGE_HEIGHT - PLAY_LABEL_DIMENSION.getHeight()
+ double playYStart = VGAP + ACTIVE_USER_IMAGE_HEIGHT - PLAY_LABEL_DIMENSION.getHeight()
- CLOUD_LABEL_DIMENSION.getHeight() - 2 + (MAIN_PANEL_DIMENSION.getHeight() * activeIndex);
double playYEnd = playYStart + PLAY_LABEL_DIMENSION.getHeight();
- double playXStart = ACTIVE_IMAGE_WIDTH + HGAP + VGAP;
+ double playXStart = ACTIVE_USER_IMAGE_WIDTH + HGAP + VGAP;
double playXEnd = playXStart + PLAY_LABEL_DIMENSION.getWidth();
if((point.getX() > playXStart) && (point.getX() < playXEnd)
@@ -141,10 +150,10 @@ public class UsersListCellRenderer extends JComponent implements ListCellRendere
public boolean inCloudConsoleUrl(Point point, int activeIndex) {
// 3 is for the number of labels before this one
- double playYStart = VGAP + ACTIVE_IMAGE_HEIGHT - CLOUD_LABEL_DIMENSION.getHeight()
+ double playYStart = VGAP + ACTIVE_USER_IMAGE_HEIGHT - CLOUD_LABEL_DIMENSION.getHeight()
- 3 + (MAIN_PANEL_DIMENSION.getHeight() * activeIndex);
double playYEnd = playYStart + CLOUD_LABEL_DIMENSION.getHeight();
- double playXStart = ACTIVE_IMAGE_WIDTH + HGAP + VGAP;
+ double playXStart = ACTIVE_USER_IMAGE_WIDTH + HGAP + VGAP;
double playXEnd = playXStart + CLOUD_LABEL_DIMENSION.getWidth();
if((point.getX() > playXStart) && (point.getX() < playXEnd)
@@ -226,4 +235,32 @@ public class UsersListCellRenderer extends JComponent implements ListCellRendere
mainPanel.add(bottomPanel, bottomConstraints);
return mainPanel;
}
+
+ private JPanel createNoUserDisplay() {
+ JPanel mainPanel = new JPanel();
+ BoxLayout layout = new BoxLayout(mainPanel, BoxLayout.Y_AXIS);
+ mainPanel.setLayout(layout);
+ mainPanel.setBackground(JBColor.WHITE);
+
+ URL url = UsersListCellRenderer.class.getResource(GOOGLE_IMG);
+ Image image = Toolkit.getDefaultToolkit().getImage(url);
+ Image scaledImage = image.getScaledInstance(
+ 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()));
+
+ 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(Box.createVerticalStrut(WELCOME_LABEL_SOUTH));
+
+ return mainPanel;
+ }
}
diff --git a/resources/icons/google.png b/resources/icons/google.png
new file mode 100644
index 0000000..3f7dfe4
--- /dev/null
+++ b/resources/icons/google.png
Binary files differ
diff --git a/resources/icons/google@2x.png b/resources/icons/google@2x.png
new file mode 100644
index 0000000..ad846a4
--- /dev/null
+++ b/resources/icons/google@2x.png
Binary files differ