summaryrefslogtreecommitdiff
path: root/device-manager
diff options
context:
space:
mode:
authorJuan C Nuno <juancnuno@google.com>2022-06-29 14:34:59 -0700
committerJuan Nuno <juancnuno@google.com>2022-07-06 21:11:29 +0000
commit7f024cb5eecc317aafed8794cf35b16c40e1a7a2 (patch)
tree0a884498b5f6e8c8afee1819938847cefa25f926 /device-manager
parent303ae83913d5b3b5fae3aa36fe532c6c645b8813 (diff)
downloadidea-7f024cb5eecc317aafed8794cf35b16c40e1a7a2.tar.gz
Override setValueAt
Bug: 237442318 Test: VirtualDeviceTableModelTest Change-Id: I9f994884341afb61a03818bca79e6ef545314b11
Diffstat (limited to 'device-manager')
-rw-r--r--device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDevice.java18
-rw-r--r--device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableModel.java37
-rw-r--r--device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableModelTest.java46
3 files changed, 77 insertions, 24 deletions
diff --git a/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDevice.java b/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDevice.java
index b432d63067f..c92434a6d62 100644
--- a/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDevice.java
+++ b/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDevice.java
@@ -152,6 +152,24 @@ public final class VirtualDevice extends Device {
myAvdInfo = builder.myAvdInfo;
}
+ @NotNull VirtualDevice withState(@NotNull State state) {
+ return new VirtualDevice.Builder()
+ .setKey(myKey)
+ .setType(myType)
+ .setName(myName)
+ .setTarget(myTarget)
+ .setCpuArchitecture(myCpuArchitecture)
+ .setAndroidVersion(myAndroidVersion)
+ .setSizeOnDisk(mySizeOnDisk)
+ .setState(state)
+ .setResolution(myResolution)
+ .setDensity(myDensity)
+ .addAllAbis(myAbis)
+ .setStorageDevice(myStorageDevice)
+ .setAvdInfo(myAvdInfo)
+ .build();
+ }
+
@Override
protected @NotNull Icon getIcon() {
return myType.getVirtualIcon();
diff --git a/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableModel.java b/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableModel.java
index 1d68da26c79..57ae0cd2715 100644
--- a/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableModel.java
+++ b/device-manager/src/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableModel.java
@@ -100,21 +100,7 @@ final class VirtualDeviceTableModel extends AbstractTableModel {
return;
}
- VirtualDevice oldDevice = model.myDevices.get(modelRowIndex);
-
- VirtualDevice newDevice = new VirtualDevice.Builder()
- .setKey(oldDevice.getKey())
- .setType(oldDevice.getType())
- .setName(oldDevice.getName())
- .setTarget(oldDevice.getTarget())
- .setCpuArchitecture(oldDevice.getCpuArchitecture())
- .setAndroidVersion(oldDevice.getAndroidVersion())
- .setSizeOnDisk(oldDevice.getSizeOnDisk())
- .setState(VirtualDevice.State.valueOf(online))
- .setAvdInfo(oldDevice.getAvdInfo())
- .build();
-
- model.myDevices.set(modelRowIndex, newDevice);
+ model.myDevices.set(modelRowIndex, model.myDevices.get(modelRowIndex).withState(VirtualDevice.State.valueOf(online)));
model.fireTableCellUpdated(modelRowIndex, DEVICE_MODEL_COLUMN_INDEX);
});
}
@@ -280,4 +266,25 @@ final class VirtualDeviceTableModel extends AbstractTableModel {
throw new AssertionError(modelColumnIndex);
}
}
+
+ @Override
+ public void setValueAt(@NotNull Object value, int modelRowIndex, int modelColumnIndex) {
+ switch (modelColumnIndex) {
+ case DEVICE_MODEL_COLUMN_INDEX:
+ case API_MODEL_COLUMN_INDEX:
+ case SIZE_ON_DISK_MODEL_COLUMN_INDEX:
+ throw new AssertionError(modelColumnIndex);
+ case LAUNCH_OR_STOP_MODEL_COLUMN_INDEX:
+ myDevices.set(modelRowIndex, myDevices.get(modelRowIndex).withState((VirtualDevice.State)value));
+ fireTableCellUpdated(modelRowIndex, LAUNCH_OR_STOP_MODEL_COLUMN_INDEX);
+
+ break;
+ case ACTIVATE_DEVICE_FILE_EXPLORER_WINDOW_MODEL_COLUMN_INDEX:
+ case EDIT_MODEL_COLUMN_INDEX:
+ case POP_UP_MENU_MODEL_COLUMN_INDEX:
+ break;
+ default:
+ throw new AssertionError(modelColumnIndex);
+ }
+ }
}
diff --git a/device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableModelTest.java b/device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableModelTest.java
index 63c730c1f36..900d5646266 100644
--- a/device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableModelTest.java
+++ b/device-manager/testSrc/com/android/tools/idea/devicemanager/virtualtab/VirtualDeviceTableModelTest.java
@@ -17,6 +17,7 @@ package com.android.tools.idea.devicemanager.virtualtab;
import static org.junit.Assert.assertEquals;
+import com.android.sdklib.AndroidVersion;
import com.android.sdklib.internal.avd.AvdInfo;
import com.android.tools.idea.avdmanager.AvdManagerConnection;
import com.android.tools.idea.devicemanager.CountDownLatchAssert;
@@ -29,6 +30,7 @@ import java.util.List;
import java.util.concurrent.CountDownLatch;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
+import javax.swing.table.TableModel;
import org.jetbrains.annotations.NotNull;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -38,30 +40,30 @@ import org.mockito.Mockito;
@RunWith(JUnit4.class)
public final class VirtualDeviceTableModelTest {
+ private final @NotNull AvdInfo myAvd = Mockito.mock(AvdInfo.class);
+ private final @NotNull Collection<@NotNull VirtualDevice> myDevices = List.of(TestVirtualDevices.pixel5Api31(myAvd));
+ private final @NotNull TableModelListener myListener = Mockito.mock(TableModelListener.class);
+
@Test
public void setAllOnline() throws InterruptedException {
// Arrange
- AvdInfo avd = Mockito.mock(AvdInfo.class);
- Collection<VirtualDevice> devices = List.of(TestVirtualDevices.pixel5Api31(avd));
-
AvdManagerConnection connection = Mockito.mock(AvdManagerConnection.class);
- Mockito.when(connection.isAvdRunning(avd)).thenReturn(true);
+ Mockito.when(connection.isAvdRunning(myAvd)).thenReturn(true);
CountDownLatch latch = new CountDownLatch(1);
- TableModelListener listener = Mockito.mock(TableModelListener.class);
- VirtualDeviceTableModel model = new VirtualDeviceTableModel(devices, () -> connection, (m, key) -> newSetOnline(m, key, latch));
- model.addTableModelListener(listener);
+ VirtualDeviceTableModel model = new VirtualDeviceTableModel(myDevices, () -> connection, (m, key) -> newSetOnline(m, key, latch));
+ model.addTableModelListener(myListener);
// Act
model.setAllOnline();
// Assert
CountDownLatchAssert.await(latch);
- assertEquals(List.of(TestVirtualDevices.onlinePixel5Api31(avd)), model.getDevices());
+ assertEquals(List.of(TestVirtualDevices.onlinePixel5Api31(myAvd)), model.getDevices());
TableModelEvent event = new TableModelEvent(model, 0, 0, VirtualDeviceTableModel.DEVICE_MODEL_COLUMN_INDEX);
- Mockito.verify(listener).tableChanged(ArgumentMatchers.argThat(new TableModelEventArgumentMatcher(event)));
+ Mockito.verify(myListener).tableChanged(ArgumentMatchers.argThat(new TableModelEventArgumentMatcher(event)));
}
private static @NotNull FutureCallback<@NotNull Boolean> newSetOnline(@NotNull VirtualDeviceTableModel model,
@@ -69,4 +71,30 @@ public final class VirtualDeviceTableModelTest {
@NotNull CountDownLatch latch) {
return new CountDownLatchFutureCallback<>(VirtualDeviceTableModel.newSetOnline(model, key), latch);
}
+
+ @Test
+ public void setValueAt() {
+ // Arrange
+ TableModel model = new VirtualDeviceTableModel(myDevices);
+ model.addTableModelListener(myListener);
+
+ // Act
+ model.setValueAt(VirtualDevice.State.LAUNCHING, 0, VirtualDeviceTableModel.LAUNCH_OR_STOP_MODEL_COLUMN_INDEX);
+
+ // Assert
+ Object device = new VirtualDevice.Builder()
+ .setKey(TestVirtualDevices.newKey("Pixel_5_API_31"))
+ .setName("Pixel 5 API 31")
+ .setTarget("Android 12.0 Google APIs")
+ .setCpuArchitecture("x86_64")
+ .setAndroidVersion(new AndroidVersion(31))
+ .setState(VirtualDevice.State.LAUNCHING)
+ .setAvdInfo(myAvd)
+ .build();
+
+ assertEquals(device, model.getValueAt(0, VirtualDeviceTableModel.DEVICE_MODEL_COLUMN_INDEX));
+
+ TableModelEvent event = new TableModelEvent(model, 0, 0, VirtualDeviceTableModel.LAUNCH_OR_STOP_MODEL_COLUMN_INDEX);
+ Mockito.verify(myListener).tableChanged(ArgumentMatchers.argThat(new TableModelEventArgumentMatcher(event)));
+ }
}