Skip to content

Commit 6c57050

Browse files
committed
Use CheckBoxMenuItem and hold Device instead of string id
1 parent 07d947e commit 6c57050

File tree

3 files changed

+33
-18
lines changed

3 files changed

+33
-18
lines changed

src/processing/mode/android/AndroidEditor.java

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import processing.mode.java.JavaEditor;
2727

2828
import javax.swing.*;
29+
import javax.swing.event.ChangeEvent;
30+
import javax.swing.event.ChangeListener;
2931
import java.awt.event.ActionEvent;
3032
import java.awt.event.ActionListener;
3133
import java.io.File;
@@ -48,7 +50,7 @@ public UpdateDeviceListTask(JMenu deviceMenu) {
4850
public void run() {
4951
final Devices devices = Devices.getInstance();
5052
java.util.List<Device> deviceList = devices.findMultiple(false);
51-
String selectedDeviceId = devices.getSelectedDeviceId();
53+
Device selectedDevice = devices.getSelectedDevice();
5254

5355
if(deviceList.size() == 0) {
5456
if(deviceMenu.getItem(0).isEnabled()) {
@@ -58,45 +60,54 @@ public void run() {
5860
deviceMenu.add(noDevicesItem);
5961
}
6062

61-
devices.setSelectedDeviceId(null);
63+
devices.setSelectedDevice(null);
6264
} else {
6365
deviceMenu.removeAll();
64-
JMenuItem deviceItem;
6566

66-
if(selectedDeviceId == null) {
67-
selectedDeviceId = deviceList.get(0).getId();
68-
devices.setSelectedDeviceId(selectedDeviceId);
67+
if(selectedDevice == null) {
68+
selectedDevice = deviceList.get(0);
69+
devices.setSelectedDevice(selectedDevice);
6970
} else {
7071
// check if selected device is still connected
7172
boolean found = false;
7273
for (Device device : deviceList) {
73-
if(device.getId().equals(selectedDeviceId)) {
74+
if(device.equals(selectedDevice)) {
7475
found = true;
7576
break;
7677
}
7778
}
7879

7980
if(!found) {
80-
selectedDeviceId = deviceList.get(0).getId();
81-
devices.setSelectedDeviceId(selectedDeviceId);
81+
selectedDevice = deviceList.get(0);
82+
devices.setSelectedDevice(selectedDevice);
8283
}
8384
}
8485

8586
for (final Device device : deviceList) {
86-
deviceItem = new JMenuItem(device.getName());
87+
final JCheckBoxMenuItem deviceItem = new JCheckBoxMenuItem(device.getName());
8788
deviceItem.setEnabled(true);
89+
90+
if(device.equals(selectedDevice)) deviceItem.setState(true);
91+
92+
// prevent checkboxmenuitem automatic state changing onclick
93+
final Device finalSelectedDevice = selectedDevice;
94+
deviceItem.addChangeListener(new ChangeListener() {
95+
@Override
96+
public void stateChanged(ChangeEvent e) {
97+
if(device.equals(finalSelectedDevice)) deviceItem.setState(true);
98+
}
99+
});
100+
88101
deviceItem.addActionListener(new ActionListener() {
89102
@Override
90103
public void actionPerformed(ActionEvent e) {
91-
devices.setSelectedDeviceId(device.getId());
104+
devices.setSelectedDevice(device);
92105
}
93106
});
94107

95108
deviceMenu.add(deviceItem);
96109
}
97110
}
98-
99-
deviceMenu.updateUI();
100111
}
101112
}
102113

src/processing/mode/android/Device.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,4 +317,8 @@ public String toString() {
317317
return "[AndroidDevice " + getId() + "]";
318318
}
319319

320+
@Override
321+
public boolean equals(Object obj) {
322+
return ((Device) obj).getId().equals(getId());
323+
}
320324
}

src/processing/mode/android/Devices.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class Devices {
2626

2727
private static final Devices INSTANCE = new Devices();
2828

29-
private String selectedDeviceId;
29+
private Device selectedDevice;
3030

3131
public static Devices getInstance() {
3232
return INSTANCE;
@@ -37,12 +37,12 @@ public static Devices getInstance() {
3737
private final ExecutorService deviceLaunchThread =
3838
Executors.newSingleThreadExecutor();
3939

40-
public String getSelectedDeviceId() {
41-
return selectedDeviceId;
40+
public Device getSelectedDevice() {
41+
return selectedDevice;
4242
}
4343

44-
public void setSelectedDeviceId(String selectedDeviceId) {
45-
this.selectedDeviceId = selectedDeviceId;
44+
public void setSelectedDevice(Device selectedDevice) {
45+
this.selectedDevice = selectedDevice;
4646
}
4747

4848
public static void killAdbServer() {

0 commit comments

Comments
 (0)