diff options
author | Oluwatobi Bashir-Bello <nbashirbello@google.com> | 2014-07-02 13:14:15 -0400 |
---|---|---|
committer | Oluwatobi Bashir-Bello <nbashirbello@google.com> | 2014-07-08 09:33:38 -0400 |
commit | 8ce882bf845c260002c6b07fc96c9f862975757a (patch) | |
tree | 105a51fb62fa28a627f66c590ae2db697ff9ae12 | |
parent | 2568997d72a1999020cbf8598411fb89ee5de3c5 (diff) | |
download | cloud-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.java | 18 | ||||
-rw-r--r-- | login/src/com/google/gct/login/ui/NoUsersListItem.java | 27 | ||||
-rw-r--r-- | login/src/com/google/gct/login/ui/UsersListCellRenderer.java | 71 | ||||
-rw-r--r-- | resources/icons/google.png | bin | 0 -> 2049 bytes | |||
-rw-r--r-- | resources/icons/google@2x.png | bin | 0 -> 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 Binary files differnew file mode 100644 index 0000000..3f7dfe4 --- /dev/null +++ b/resources/icons/google.png diff --git a/resources/icons/google@2x.png b/resources/icons/google@2x.png Binary files differnew file mode 100644 index 0000000..ad846a4 --- /dev/null +++ b/resources/icons/google@2x.png |