summaryrefslogtreecommitdiff
path: root/device-manager
diff options
context:
space:
mode:
authorJuan C Nuno <juancnuno@google.com>2022-02-17 12:30:54 -0800
committerJuan Nuno <juancnuno@google.com>2022-02-24 00:00:36 +0000
commitef1d75f107df486e633daf2ad804081d6c2d68c1 (patch)
tree44dfd71995a6de83d1382e18c949f0ab9ed19697 /device-manager
parent3739c362b27ab9a6ae31e51f1e36c33e864bcc35 (diff)
downloadidea-ef1d75f107df486e633daf2ad804081d6c2d68c1.tar.gz
Extract PairingTable out of PairedDevicesPanel
Bug: 217412719 Test: PairedDevicesPanelTest Change-Id: Icd70992d35db7aa277c281eab18c1bc094dadc85
Diffstat (limited to 'device-manager')
-rw-r--r--device-manager/src/com/android/tools/idea/devicemanager/PairedDevicesPanel.java22
-rw-r--r--device-manager/src/com/android/tools/idea/devicemanager/Pairing.java18
-rw-r--r--device-manager/src/com/android/tools/idea/devicemanager/PairingTable.java66
-rw-r--r--device-manager/src/com/android/tools/idea/devicemanager/PairingTableModel.java14
4 files changed, 92 insertions, 28 deletions
diff --git a/device-manager/src/com/android/tools/idea/devicemanager/PairedDevicesPanel.java b/device-manager/src/com/android/tools/idea/devicemanager/PairedDevicesPanel.java
index cc6a8e03e85..2644bd0c9e8 100644
--- a/device-manager/src/com/android/tools/idea/devicemanager/PairedDevicesPanel.java
+++ b/device-manager/src/com/android/tools/idea/devicemanager/PairedDevicesPanel.java
@@ -36,14 +36,11 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.ui.ToolbarDecorator;
import com.intellij.ui.components.JBPanel;
-import com.intellij.ui.table.JBTable;
import com.intellij.util.ui.JBUI.CurrentTheme.Table;
import java.awt.BorderLayout;
import java.util.List;
import java.util.stream.Collectors;
import javax.swing.JComponent;
-import javax.swing.JTable;
-import javax.swing.table.TableColumnModel;
import kotlin.Unit;
import kotlin.coroutines.CoroutineContext;
import kotlinx.coroutines.BuildersKt;
@@ -105,23 +102,14 @@ public final class PairedDevicesPanel extends JBPanel<PairedDevicesPanel> implem
}
else {
List<Pairing> pairings = phoneWearPairList.stream()
- .map(pair -> new Pairing(pair.getPeerDevice(myDeviceId.toString()), pair.getPairingStatus()))
+ .map(pair -> new Pairing(pair, myDeviceId))
.collect(Collectors.toList());
- JTable table = new JBTable(new PairingTableModel(pairings));
- table.setDefaultRenderer(Device.class, new DeviceManagerPairingDeviceTableCellRenderer());
- table.setShowGrid(false);
+ PairingTable table = new PairingTable();
+ table.getModel().setPairings(pairings);
- TableColumnModel columnModel = table.getColumnModel();
- columnModel.getColumn(0).setPreferredWidth(80_000); // Some large number, 80% of total width
- columnModel.getColumn(1).setPreferredWidth(20_000);
-
- toolbar = ToolbarDecorator.createDecorator(table).setRemoveAction(button -> {
- int selectedIndex = table.getSelectedRow();
- if (selectedIndex >= 0 && selectedIndex < phoneWearPairList.size()) {
- unpair(phoneWearPairList.get(selectedIndex));
- }
- });
+ toolbar = ToolbarDecorator.createDecorator(table)
+ .setRemoveAction(button -> unpair(table.getSelectedPairing().orElseThrow(AssertionError::new).getPair()));
}
toolbar
diff --git a/device-manager/src/com/android/tools/idea/devicemanager/Pairing.java b/device-manager/src/com/android/tools/idea/devicemanager/Pairing.java
index 2a28e03ecc0..1f7f0f70294 100644
--- a/device-manager/src/com/android/tools/idea/devicemanager/Pairing.java
+++ b/device-manager/src/com/android/tools/idea/devicemanager/Pairing.java
@@ -18,16 +18,16 @@ package com.android.tools.idea.devicemanager;
import com.android.sdklib.AndroidVersion;
import com.android.tools.idea.devicemanager.virtualtab.VirtualDeviceName;
import com.android.tools.idea.wearpairing.PairingDevice;
-import com.android.tools.idea.wearpairing.WearPairingManager.PairingState;
+import com.android.tools.idea.wearpairing.WearPairingManager.PhoneWearPair;
import org.jetbrains.annotations.NotNull;
final class Pairing {
+ private final @NotNull PhoneWearPair myPair;
private final @NotNull Device myOtherDevice;
- private final @NotNull PairingState myStatus;
- Pairing(@NotNull PairingDevice otherDevice, @NotNull PairingState status) {
- myOtherDevice = toDevice(otherDevice);
- myStatus = status;
+ Pairing(@NotNull PhoneWearPair pair, @NotNull Key key) {
+ myPair = pair;
+ myOtherDevice = toDevice(pair.getPeerDevice(key.toString()));
}
private static @NotNull Device toDevice(@NotNull PairingDevice device) {
@@ -46,12 +46,16 @@ final class Pairing {
.build();
}
+ @NotNull PhoneWearPair getPair() {
+ return myPair;
+ }
+
@NotNull Device getOtherDevice() {
return myOtherDevice;
}
@NotNull String getStatus() {
- switch (myStatus) {
+ switch (myPair.getPairingStatus()) {
case OFFLINE:
return "Offline";
case CONNECTING:
@@ -61,7 +65,7 @@ final class Pairing {
case PAIRING_FAILED:
return "Error pairing";
default:
- throw new AssertionError(myStatus);
+ throw new AssertionError(myPair.getPairingStatus());
}
}
}
diff --git a/device-manager/src/com/android/tools/idea/devicemanager/PairingTable.java b/device-manager/src/com/android/tools/idea/devicemanager/PairingTable.java
new file mode 100644
index 00000000000..16f3e779b8d
--- /dev/null
+++ b/device-manager/src/com/android/tools/idea/devicemanager/PairingTable.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2022 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.android.tools.idea.devicemanager;
+
+import com.intellij.ui.scale.JBUIScale;
+import com.intellij.ui.table.JBTable;
+import java.util.Optional;
+import javax.swing.ListSelectionModel;
+import org.jetbrains.annotations.NotNull;
+
+final class PairingTable extends JBTable {
+ PairingTable() {
+ super(new PairingTableModel());
+
+ setDefaultRenderer(Device.class, new DeviceManagerPairingDeviceTableCellRenderer());
+ setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ setShowGrid(false);
+
+ tableHeader.setReorderingAllowed(false);
+ tableHeader.setResizingAllowed(false);
+
+ dataModel.addTableModelListener(event -> {
+ columnModel.getColumn(deviceViewColumnIndex()).setMinWidth(JBUIScale.scale(65));
+
+ Tables.setWidths(columnModel.getColumn(statusViewColumnIndex()),
+ Tables.getPreferredColumnWidth(PairingTable.this, statusViewColumnIndex(), JBUIScale.scale(65)),
+ JBUIScale.scale(20));
+ });
+ }
+
+ private int deviceViewColumnIndex() {
+ return convertColumnIndexToView(PairingTableModel.DEVICE_MODEL_COLUMN_INDEX);
+ }
+
+ private int statusViewColumnIndex() {
+ return convertColumnIndexToView(PairingTableModel.STATUS_MODEL_COLUMN_INDEX);
+ }
+
+ @NotNull Optional<@NotNull Pairing> getSelectedPairing() {
+ int viewRowIndex = getSelectedRow();
+
+ if (viewRowIndex == -1) {
+ return Optional.empty();
+ }
+
+ return Optional.of(getModel().getPairings().get(convertRowIndexToModel(viewRowIndex)));
+ }
+
+ @Override
+ public @NotNull PairingTableModel getModel() {
+ return (PairingTableModel)dataModel;
+ }
+}
diff --git a/device-manager/src/com/android/tools/idea/devicemanager/PairingTableModel.java b/device-manager/src/com/android/tools/idea/devicemanager/PairingTableModel.java
index eccb372e7f6..39f8c640eee 100644
--- a/device-manager/src/com/android/tools/idea/devicemanager/PairingTableModel.java
+++ b/device-manager/src/com/android/tools/idea/devicemanager/PairingTableModel.java
@@ -15,18 +15,24 @@
*/
package com.android.tools.idea.devicemanager;
+import java.util.Collections;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import org.jetbrains.annotations.NotNull;
final class PairingTableModel extends AbstractTableModel {
- private static final int DEVICE_MODEL_COLUMN_INDEX = 0;
- private static final int STATUS_MODEL_COLUMN_INDEX = 1;
+ static final int DEVICE_MODEL_COLUMN_INDEX = 0;
+ static final int STATUS_MODEL_COLUMN_INDEX = 1;
- private final @NotNull List<@NotNull Pairing> myPairings;
+ private @NotNull List<@NotNull Pairing> myPairings = Collections.emptyList();
- PairingTableModel(@NotNull List<@NotNull Pairing> pairings) {
+ @NotNull List<@NotNull Pairing> getPairings() {
+ return myPairings;
+ }
+
+ void setPairings(@NotNull List<@NotNull Pairing> pairings) {
myPairings = pairings;
+ fireTableDataChanged();
}
@Override