Skip to content

Commit 349af4b

Browse files
committed
Added BoardPort.protocolLabel and simplified port menu rendering
1 parent c03a8bc commit 349af4b

File tree

2 files changed

+43
-23
lines changed

2 files changed

+43
-23
lines changed

app/src/processing/app/Editor.java

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@
5252
import java.util.ArrayList;
5353
import java.util.Arrays;
5454
import java.util.Collections;
55-
import java.util.Comparator;
5655
import java.util.Enumeration;
5756
import java.util.HashMap;
5857
import java.util.LinkedList;
@@ -147,9 +146,6 @@ public boolean test(SketchController controller) {
147146
}
148147
}
149148

150-
private final static List<String> BOARD_PROTOCOLS_ORDER = Arrays.asList("serial", "network");
151-
private final static List<String> BOARD_PROTOCOLS_ORDER_TRANSLATIONS = Arrays.asList(tr("Serial ports"), tr("Network ports"));
152-
153149
final Base base;
154150

155151
// otherwise, if the window is resized with the message label
@@ -1062,6 +1058,9 @@ public String toString() {
10621058
}
10631059

10641060
private void populatePortMenu() {
1061+
final List<String> PROTOCOLS_ORDER = Arrays.asList("serial", "network");
1062+
final List<String> PROTOCOLS_LABELS = Arrays.asList(tr("Serial ports"), tr("Network ports"));
1063+
10651064
portMenu.removeAll();
10661065

10671066
String selectedPort = PreferencesData.get("serial.port");
@@ -1070,31 +1069,43 @@ private void populatePortMenu() {
10701069

10711070
ports = platform.filterPorts(ports, PreferencesData.getBoolean("serial.ports.showall"));
10721071

1073-
Collections.sort(ports, new Comparator<BoardPort>() {
1074-
@Override
1075-
public int compare(BoardPort o1, BoardPort o2) {
1076-
return (BOARD_PROTOCOLS_ORDER.indexOf(o1.getProtocol()) - BOARD_PROTOCOLS_ORDER.indexOf(o2.getProtocol())) * 10 +
1077-
o1.getAddress().compareTo(o2.getAddress());
1078-
}
1072+
ports.stream() //
1073+
.filter(port -> port.getProtocolLabel() == null || port.getProtocolLabel().isEmpty())
1074+
.forEach(port -> {
1075+
int labelIdx = PROTOCOLS_ORDER.indexOf(port.getProtocol());
1076+
if (labelIdx != -1) {
1077+
port.setProtocolLabel(PROTOCOLS_LABELS.get(labelIdx));
1078+
} else {
1079+
port.setProtocolLabel(port.getProtocol());
1080+
}
1081+
});
1082+
1083+
Collections.sort(ports, (port1, port2) -> {
1084+
String pr1 = port1.getProtocol();
1085+
String pr2 = port2.getProtocol();
1086+
int prIdx1 = PROTOCOLS_ORDER.contains(pr1) ? PROTOCOLS_ORDER.indexOf(pr1) : 999;
1087+
int prIdx2 = PROTOCOLS_ORDER.contains(pr2) ? PROTOCOLS_ORDER.indexOf(pr2) : 999;
1088+
int r = prIdx1 - prIdx2;
1089+
if (r != 0)
1090+
return r;
1091+
r = port1.getProtocolLabel().compareTo(port2.getProtocolLabel());
1092+
if (r != 0)
1093+
return r;
1094+
return port1.getAddress().compareTo(port2.getAddress());
10791095
});
10801096

1081-
String lastProtocol = null;
1082-
String lastProtocolTranslated;
1097+
String lastProtocol = "";
1098+
String lastProtocolLabel = "";
10831099
for (BoardPort port : ports) {
1084-
if (lastProtocol == null || !port.getProtocol().equals(lastProtocol)) {
1085-
if (lastProtocol != null) {
1100+
if (!port.getProtocol().equals(lastProtocol) || !port.getProtocolLabel().equals(lastProtocolLabel)) {
1101+
if (!lastProtocol.isEmpty()) {
10861102
portMenu.addSeparator();
10871103
}
10881104
lastProtocol = port.getProtocol();
1089-
1090-
if (BOARD_PROTOCOLS_ORDER.indexOf(port.getProtocol()) != -1) {
1091-
lastProtocolTranslated = BOARD_PROTOCOLS_ORDER_TRANSLATIONS.get(BOARD_PROTOCOLS_ORDER.indexOf(port.getProtocol()));
1092-
} else {
1093-
lastProtocolTranslated = port.getProtocol();
1094-
}
1095-
JMenuItem lastProtocolMenuItem = new JMenuItem(tr(lastProtocolTranslated));
1096-
lastProtocolMenuItem.setEnabled(false);
1097-
portMenu.add(lastProtocolMenuItem);
1105+
lastProtocolLabel = port.getProtocolLabel();
1106+
JMenuItem item = new JMenuItem(tr(lastProtocolLabel));
1107+
item.setEnabled(false);
1108+
portMenu.add(item);
10981109
}
10991110
String address = port.getAddress();
11001111

arduino-core/src/cc/arduino/packages/BoardPort.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class BoardPort {
3939

4040
private String address; // unique name for this port, used by Preferences
4141
private String protocol; // how to communicate, used for Ports menu sections
42+
private String protocolLabel; // protocol extended name to display on GUI
4243
private String boardName;
4344
private String label; // friendly name shown in Ports menu
4445
private final PreferencesMap identificationPrefs; // data to match with boards.txt
@@ -76,6 +77,14 @@ public void setProtocol(String protocol) {
7677
this.protocol = protocol;
7778
}
7879

80+
public String getProtocolLabel() {
81+
return protocolLabel;
82+
}
83+
84+
public void setProtocolLabel(String protocolLabel) {
85+
this.protocolLabel = protocolLabel;
86+
}
87+
7988
public String getBoardName() {
8089
return boardName;
8190
}

0 commit comments

Comments
 (0)