Skip to content

Commit 0094145

Browse files
committed
Merge pull request arduino#2628 from ffissore/split-ports-by-category
Split ports in menu, grouping boards by their protocol
2 parents 834593d + fea3848 commit 0094145

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

app/src/processing/app/Editor.java

+29-3
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@
6060
@SuppressWarnings("serial")
6161
public class Editor extends JFrame implements RunnerListener {
6262

63+
private final static List<String> BOARD_PROTOCOLS_ORDER = Arrays.asList(new String[]{"serial", "network"});
64+
private final static List<String> BOARD_PROTOCOLS_ORDER_TRANSLATIONS = Arrays.asList(new String[]{_("Serial ports"), _("Network ports")});
65+
6366
Base base;
6467

6568
// otherwise, if the window is resized with the message label
@@ -441,7 +444,7 @@ protected void applyPreferences() {
441444
textarea.setEditable(!external);
442445
saveMenuItem.setEnabled(!external);
443446
saveAsMenuItem.setEnabled(!external);
444-
447+
445448
textarea.setDisplayLineNumbers(Preferences.getBoolean("editor.linenumbers"));
446449

447450
TextAreaPainter painter = textarea.getPainter();
@@ -996,7 +999,30 @@ protected void populatePortMenu() {
996999
String selectedPort = Preferences.get("serial.port");
9971000

9981001
List<BoardPort> ports = Base.getDiscoveryManager().discovery();
1002+
1003+
Collections.sort(ports, new Comparator<BoardPort>() {
1004+
@Override
1005+
public int compare(BoardPort o1, BoardPort o2) {
1006+
return BOARD_PROTOCOLS_ORDER.indexOf(o1.getProtocol()) - BOARD_PROTOCOLS_ORDER.indexOf(o2.getProtocol());
1007+
}
1008+
});
1009+
1010+
String lastProtocol = null;
1011+
String lastProtocolTranslated;
9991012
for (BoardPort port : ports) {
1013+
if (lastProtocol == null || !port.getProtocol().equals(lastProtocol)) {
1014+
if (lastProtocol != null) {
1015+
serialMenu.addSeparator();
1016+
}
1017+
lastProtocol = port.getProtocol();
1018+
1019+
if (BOARD_PROTOCOLS_ORDER.indexOf(port.getProtocol()) != -1) {
1020+
lastProtocolTranslated = BOARD_PROTOCOLS_ORDER_TRANSLATIONS.get(BOARD_PROTOCOLS_ORDER.indexOf(port.getProtocol()));
1021+
} else {
1022+
lastProtocolTranslated = port.getProtocol();
1023+
}
1024+
serialMenu.add(new JMenuItem(_(lastProtocolTranslated)));
1025+
}
10001026
String address = port.getAddress();
10011027
String label = port.getLabel();
10021028

@@ -1646,7 +1672,7 @@ protected void setCode(SketchCodeDocument codeDoc) {
16461672
if (document == null) { // this document not yet inited
16471673
document = new SyntaxDocument();
16481674
codeDoc.setDocument(document);
1649-
1675+
16501676
// turn on syntax highlighting
16511677
document.setTokenMarker(new PdeKeywords());
16521678

@@ -1870,7 +1896,7 @@ protected String getCurrentKeyword() {
18701896

18711897
} catch (BadLocationException bl) {
18721898
bl.printStackTrace();
1873-
}
1899+
}
18741900
return text;
18751901
}
18761902

0 commit comments

Comments
 (0)