summaryrefslogtreecommitdiff
path: root/device-manager
diff options
context:
space:
mode:
authorHannah Chu <hanchu@google.com>2022-03-22 17:36:38 -0700
committerJuan C Nuno <juancnuno@google.com>2022-03-28 16:10:08 -0700
commit01945e02522b99debe277597c1cc1d974e19ddb5 (patch)
tree2a61c3243e85376599a66afa4b075707f347dded /device-manager
parentf5a8153d368450241bcd011485f43db19791ea97 (diff)
downloadidea-01945e02522b99debe277597c1cc1d974e19ddb5.tar.gz
[DM] Scroll selected row into view
When the scroll pane is resized, which can occur when the user opens the details panel, obscuring the selected row. Bug: 203725228 Test: visual inspection Change-Id: Ib107679b2685e0db8ad1b2d0d329a61ddb419159
Diffstat (limited to 'device-manager')
-rw-r--r--device-manager/src/com/android/tools/idea/devicemanager/DevicePanel.java20
-rw-r--r--device-manager/src/com/android/tools/idea/devicemanager/physicaltab/PhysicalDevicePanel.java3
-rw-r--r--device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDevicePanel.java3
3 files changed, 21 insertions, 5 deletions
diff --git a/device-manager/src/com/android/tools/idea/devicemanager/DevicePanel.java b/device-manager/src/com/android/tools/idea/devicemanager/DevicePanel.java
index a3a64d47b53..9cb1e8ad9e6 100644
--- a/device-manager/src/com/android/tools/idea/devicemanager/DevicePanel.java
+++ b/device-manager/src/com/android/tools/idea/devicemanager/DevicePanel.java
@@ -19,6 +19,9 @@ import com.intellij.openapi.Disposable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.ui.components.JBPanel;
+import com.intellij.ui.components.JBScrollPane;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
import javax.swing.JComponent;
import javax.swing.JTable;
import org.jetbrains.annotations.NotNull;
@@ -28,7 +31,7 @@ public abstract class DevicePanel extends JBPanel<DevicePanel> implements Dispos
protected final @Nullable Project myProject;
protected JTable myTable;
- protected JComponent myScrollPane;
+ private JComponent myScrollPane;
protected DetailsPanelPanel myDetailsPanelPanel;
private boolean isDisposed;
@@ -44,6 +47,21 @@ public abstract class DevicePanel extends JBPanel<DevicePanel> implements Dispos
protected abstract @NotNull JTable newTable();
+ protected final void initScrollPane() {
+ myScrollPane = new JBScrollPane(myTable);
+
+ myScrollPane.addComponentListener(new ComponentAdapter() {
+ @Override
+ public void componentResized(@NotNull ComponentEvent event) {
+ int viewRowIndex = myTable.getSelectedRow();
+
+ if (viewRowIndex != -1) {
+ myTable.scrollRectToVisible(myTable.getCellRect(viewRowIndex, 0, true));
+ }
+ }
+ });
+ }
+
protected final void initDetailsPanelPanel() {
myDetailsPanelPanel = new DetailsPanelPanel(myScrollPane);
Disposer.register(this, myDetailsPanelPanel);
diff --git a/device-manager/src/com/android/tools/idea/devicemanager/physicaltab/PhysicalDevicePanel.java b/device-manager/src/com/android/tools/idea/devicemanager/physicaltab/PhysicalDevicePanel.java
index 2897404eaba..15e0800fe8e 100644
--- a/device-manager/src/com/android/tools/idea/devicemanager/physicaltab/PhysicalDevicePanel.java
+++ b/device-manager/src/com/android/tools/idea/devicemanager/physicaltab/PhysicalDevicePanel.java
@@ -28,7 +28,6 @@ import com.intellij.openapi.Disposable;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
-import com.intellij.ui.components.JBScrollPane;
import com.intellij.ui.scale.JBUIScale;
import com.intellij.util.concurrency.EdtExecutorService;
import com.intellij.util.ui.JBDimension;
@@ -119,7 +118,7 @@ public final class PhysicalDevicePanel extends DevicePanel {
initSeparator();
initHelpButton();
initTable();
- myScrollPane = new JBScrollPane(myTable);
+ initScrollPane();
initDetailsPanelPanel();
layOut();
diff --git a/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDevicePanel.java b/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDevicePanel.java
index 0ec0aa6985c..b6ced0db733 100644
--- a/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDevicePanel.java
+++ b/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDevicePanel.java
@@ -23,7 +23,6 @@ import com.intellij.ide.BrowserUtil;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
-import com.intellij.ui.components.JBScrollPane;
import com.intellij.ui.scale.JBUIScale;
import com.intellij.util.ui.JBDimension;
import java.awt.Dimension;
@@ -49,7 +48,7 @@ public final class VirtualDevicePanel extends DevicePanel {
myProject = project;
initTable();
- myScrollPane = new JBScrollPane(myTable);
+ initScrollPane();
myCreateButton = new JButton("Create device");
myCreateButton.addActionListener(new BuildVirtualDeviceConfigurationWizardActionListener(myCreateButton,