summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorHannah Chu <hanchu@google.com>2022-03-18 15:39:28 -0700
committerHannah Chu <hanchu@google.com>2022-03-19 00:11:48 +0000
commitf3b24dea8b2f9ef72095fbabe6c86425ed39aae4 (patch)
tree6fca4a17467782b2f24a3a4530c06315d2673ad3 /android
parentcf51f677e8c7bc7ee6ad9a095adbc9f01cea5812 (diff)
downloadidea-f3b24dea8b2f9ef72095fbabe6c86425ed39aae4.tar.gz
Prevent download button from being cut off
Also change it from "Download" text to an icon to be more compact Fixes: 69095273 Test: Visual inspection Change-Id: Ie19405d9d6681134af677761cee0d3d928f2b1f2
Diffstat (limited to 'android')
-rw-r--r--android/src/com/android/tools/idea/avdmanager/SystemImageListModel.java39
1 files changed, 22 insertions, 17 deletions
diff --git a/android/src/com/android/tools/idea/avdmanager/SystemImageListModel.java b/android/src/com/android/tools/idea/avdmanager/SystemImageListModel.java
index f178d61ea34..041b456fe9b 100644
--- a/android/src/com/android/tools/idea/avdmanager/SystemImageListModel.java
+++ b/android/src/com/android/tools/idea/avdmanager/SystemImageListModel.java
@@ -27,21 +27,20 @@ import com.android.sdklib.repository.AndroidSdkHandler;
import com.android.sdklib.repository.IdDisplay;
import com.android.sdklib.repository.targets.SystemImage;
import com.android.sdklib.repository.targets.SystemImageManager;
+import com.android.tools.idea.progress.StudioLoggerProgressIndicator;
+import com.android.tools.idea.progress.StudioProgressRunner;
import com.android.tools.idea.sdk.AndroidSdks;
import com.android.tools.idea.sdk.StudioDownloader;
import com.android.tools.idea.sdk.StudioSettingsController;
-import com.android.tools.idea.progress.StudioLoggerProgressIndicator;
-import com.android.tools.idea.progress.StudioProgressRunner;
import com.android.tools.idea.sdk.wizard.SdkQuickfixUtils;
import com.android.tools.idea.wizard.model.ModelWizardDialog;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
+import com.intellij.icons.AllIcons;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.project.Project;
-import com.intellij.ui.JBColor;
import com.intellij.ui.components.JBLabel;
import com.intellij.util.ui.AbstractTableCellEditor;
import com.intellij.util.ui.ColumnInfo;
@@ -51,18 +50,17 @@ import com.intellij.util.ui.StartupUiUtil;
import com.intellij.util.ui.UIUtil;
import java.awt.Component;
import java.awt.Cursor;
+import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
-import java.awt.font.TextAttribute;
import java.awt.font.TextLayout;
import java.util.Comparator;
import java.util.EventObject;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
@@ -288,7 +286,7 @@ public class SystemImageListModel extends ListTableModel<SystemImageDescription>
}
private class SystemImageDescriptionRenderer extends AbstractTableCellEditor implements TableCellRenderer {
- private SystemImageDescription image;
+ private final SystemImageDescription image;
SystemImageDescriptionRenderer(SystemImageDescription o) {
image = o;
@@ -296,7 +294,8 @@ public class SystemImageListModel extends ListTableModel<SystemImageDescription>
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
- JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ FlowLayout flowLayout = new FlowLayout(FlowLayout.LEFT);
+ JPanel panel = new JPanel(flowLayout);
JBLabel label = new JBLabel((String)value);
if (isSelected) {
if (image.isRemote()) {
@@ -340,24 +339,30 @@ public class SystemImageListModel extends ListTableModel<SystemImageDescription>
});
}
panel.add(label);
+
+ // Add a download button if applicable
if (image.isRemote() && column == 0) {
- final JBLabel link = new JBLabel("Download");
+ final JBLabel link = new JBLabel(AllIcons.Actions.Download);
link.setBackground(table.getBackground());
link.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
- link.setForeground(JBColor.BLUE);
- Font font = link.getFont();
- if (isSelected) {
- Map<TextAttribute, Integer> attrs = Maps.newHashMap();
- attrs.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);
- font = font.deriveFont(attrs);
- }
- link.setFont(font);
link.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
downloadImage(image);
}
});
+
+ // We want the download button to always show and not be cut off
+ int columnWidth = table.getColumnModel().getColumn(0).getWidth();
+ double extraWidth = link.getPreferredSize().getWidth() + flowLayout.getHgap() * 3;
+ if (label.getPreferredSize().getWidth() + extraWidth > columnWidth) {
+ Dimension labelSize = new Dimension((int)(columnWidth - extraWidth), (int)label.getPreferredSize().getHeight());
+ label.setMinimumSize(labelSize);
+ label.setMaximumSize(labelSize);
+ label.setPreferredSize(labelSize);
+ label.setSize(labelSize);
+ }
+
panel.add(link);
}
return panel;