mirror of
https://github.com/arduino/Arduino.git
synced 2025-02-19 13:54:23 +01:00
Merge a0e694930a46a129aa9feaa070b426424ccba507 into 3278173ef810935e07808deed58783c1bc7ca4cf
This commit is contained in:
commit
a85cca9a51
@ -1424,15 +1424,45 @@ public class Base {
|
|||||||
onBoardOrPortChange();
|
onBoardOrPortChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setMenuItemMnemonicAlphaNum(JMenuItem item, int i, Boolean repeat) {
|
||||||
|
char c;
|
||||||
|
// JMenu hotkeys treats lower and upper case the same,
|
||||||
|
// so we only do lower, then digits, for visibility
|
||||||
|
if (i>=26+10) {
|
||||||
|
if (!repeat) return;
|
||||||
|
i = i%(26+10);
|
||||||
|
}
|
||||||
|
if (i>=0 && i<26) {
|
||||||
|
c = (char)(i+'a');
|
||||||
|
} else if (i>=26 && i<(26+10)) {
|
||||||
|
c = (char)(i-26+'0');
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
item.setText(c + ". " + item.getText());
|
||||||
|
item.setMnemonic(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setMenuItemMnemonicNum10(JMenuItem item, int i, Boolean repeat) {
|
||||||
|
char c;
|
||||||
|
if (i>=0 && (repeat || i<10)) {
|
||||||
|
c = (char)((i%10)+'0');
|
||||||
|
item.setText(c + ". " + item.getText());
|
||||||
|
item.setMnemonic(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void rebuildBoardsMenu() throws Exception {
|
public void rebuildBoardsMenu() throws Exception {
|
||||||
boardsCustomMenus = new LinkedList<>();
|
boardsCustomMenus = new LinkedList<>();
|
||||||
|
|
||||||
// The first custom menu is the "Board" selection submenu
|
// The first custom menu is the "Board" selection submenu
|
||||||
JMenu boardMenu = new JMenu(tr("Board"));
|
JMenu boardMenu = new JMenu(tr("Board"));
|
||||||
|
boardMenu.setMnemonic('B');
|
||||||
boardMenu.putClientProperty("removeOnWindowDeactivation", true);
|
boardMenu.putClientProperty("removeOnWindowDeactivation", true);
|
||||||
MenuScroller.setScrollerFor(boardMenu).setTopFixedCount(1);
|
MenuScroller.setScrollerFor(boardMenu).setTopFixedCount(1);
|
||||||
|
|
||||||
boardMenu.add(new JMenuItem(new AbstractAction(tr("Boards Manager...")) {
|
JMenuItem menuItem = new JMenuItem(new AbstractAction(tr("Boards Manager...")) {
|
||||||
public void actionPerformed(ActionEvent actionevent) {
|
public void actionPerformed(ActionEvent actionevent) {
|
||||||
String filterText = "";
|
String filterText = "";
|
||||||
String dropdownItem = "";
|
String dropdownItem = "";
|
||||||
@ -1448,7 +1478,9 @@ public class Base {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}));
|
});
|
||||||
|
menuItem.setMnemonic('M');
|
||||||
|
boardMenu.add(menuItem);
|
||||||
boardsCustomMenus.add(boardMenu);
|
boardsCustomMenus.add(boardMenu);
|
||||||
|
|
||||||
// If there are no platforms installed we are done
|
// If there are no platforms installed we are done
|
||||||
@ -1497,12 +1529,15 @@ public class Base {
|
|||||||
platformMenus.add(platformBoardsMenu);
|
platformMenus.add(platformBoardsMenu);
|
||||||
|
|
||||||
// Cycle through all boards of this platform
|
// Cycle through all boards of this platform
|
||||||
|
int i=0;
|
||||||
for (TargetBoard board : targetPlatform.getBoards().values()) {
|
for (TargetBoard board : targetPlatform.getBoards().values()) {
|
||||||
if (board.getPreferences().get("hide") != null)
|
if (board.getPreferences().get("hide") != null)
|
||||||
continue;
|
continue;
|
||||||
JMenuItem item = createBoardMenusAndCustomMenus(boardsCustomMenus, menuItemsToClickAfterStartup,
|
JMenuItem item = createBoardMenusAndCustomMenus(boardsCustomMenus, menuItemsToClickAfterStartup,
|
||||||
buttonGroupsMap,
|
buttonGroupsMap,
|
||||||
board, targetPlatform, targetPackage);
|
board, targetPlatform, targetPackage);
|
||||||
|
setMenuItemMnemonicAlphaNum(item, i, true);
|
||||||
|
i++;
|
||||||
platformBoardsMenu.add(item);
|
platformBoardsMenu.add(item);
|
||||||
boardsButtonGroup.add(item);
|
boardsButtonGroup.add(item);
|
||||||
}
|
}
|
||||||
@ -1515,16 +1550,26 @@ public class Base {
|
|||||||
if (platformMenus.size() == 1) {
|
if (platformMenus.size() == 1) {
|
||||||
// When just one platform exists, add the board items directly,
|
// When just one platform exists, add the board items directly,
|
||||||
// rather than using a submenu
|
// rather than using a submenu
|
||||||
|
int i=0;
|
||||||
for (Component boardItem : platformMenus.get(0).getMenuComponents()) {
|
for (Component boardItem : platformMenus.get(0).getMenuComponents()) {
|
||||||
|
// For mnemonics, need to test single-platform setups:
|
||||||
|
// Eg. setMenuItemMnemonicAlphaNum((JMenuItem)boardItem, i, true); i++;
|
||||||
boardMenu.add(boardItem);
|
boardMenu.add(boardItem);
|
||||||
if (firstBoardItem == null)
|
if (firstBoardItem == null)
|
||||||
firstBoardItem = (JMenuItem)boardItem;
|
firstBoardItem = (JMenuItem)boardItem;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// For multiple platforms, use submenus
|
// For multiple platforms, use submenus
|
||||||
|
// int i=0;
|
||||||
|
String keys="";
|
||||||
|
int i=0;
|
||||||
for (JMenu platformMenu : platformMenus) {
|
for (JMenu platformMenu : platformMenus) {
|
||||||
if (firstBoardItem == null && platformMenu.getItemCount() > 0)
|
if (firstBoardItem == null && platformMenu.getItemCount() > 0)
|
||||||
firstBoardItem = platformMenu.getItem(0);
|
firstBoardItem = platformMenu.getItem(0);
|
||||||
|
// Ideally we'd exclude the manually-assigned "Board (M)anager" key
|
||||||
|
// when assigning a mnemonic to this item
|
||||||
|
setMenuItemMnemonicAlphaNum(platformMenu, i, true);
|
||||||
|
i++;
|
||||||
boardMenu.add(platformMenu);
|
boardMenu.add(platformMenu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -741,6 +741,7 @@ public class Editor extends JFrame implements RunnerListener {
|
|||||||
|
|
||||||
if (portMenu == null)
|
if (portMenu == null)
|
||||||
portMenu = new JMenu(tr("Port"));
|
portMenu = new JMenu(tr("Port"));
|
||||||
|
portMenu.setMnemonic('P');
|
||||||
populatePortMenu();
|
populatePortMenu();
|
||||||
toolsMenu.add(portMenu);
|
toolsMenu.add(portMenu);
|
||||||
MenuScroller.setScrollerFor(portMenu);
|
MenuScroller.setScrollerFor(portMenu);
|
||||||
@ -1109,6 +1110,7 @@ public class Editor extends JFrame implements RunnerListener {
|
|||||||
|
|
||||||
String lastProtocol = "";
|
String lastProtocol = "";
|
||||||
String lastProtocolLabel = "";
|
String lastProtocolLabel = "";
|
||||||
|
int i=0;
|
||||||
for (BoardPort port : ports) {
|
for (BoardPort port : ports) {
|
||||||
if (!port.getProtocol().equals(lastProtocol) || !port.getProtocolLabel().equals(lastProtocolLabel)) {
|
if (!port.getProtocol().equals(lastProtocol) || !port.getProtocolLabel().equals(lastProtocolLabel)) {
|
||||||
if (!lastProtocol.isEmpty()) {
|
if (!lastProtocol.isEmpty()) {
|
||||||
@ -1124,13 +1126,14 @@ public class Editor extends JFrame implements RunnerListener {
|
|||||||
|
|
||||||
BoardPortJCheckBoxMenuItem item = new BoardPortJCheckBoxMenuItem(port);
|
BoardPortJCheckBoxMenuItem item = new BoardPortJCheckBoxMenuItem(port);
|
||||||
item.setSelected(address.equals(selectedPort));
|
item.setSelected(address.equals(selectedPort));
|
||||||
|
Base.setMenuItemMnemonicNum10(item, i, false);
|
||||||
|
i++;
|
||||||
portMenu.add(item);
|
portMenu.add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
portMenu.setEnabled(portMenu.getMenuComponentCount() > 0);
|
portMenu.setEnabled(portMenu.getMenuComponentCount() > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private JMenu buildHelpMenu() {
|
private JMenu buildHelpMenu() {
|
||||||
JMenu menu = new JMenu(tr("Help"));
|
JMenu menu = new JMenu(tr("Help"));
|
||||||
menu.setMnemonic(KeyEvent.VK_H);
|
menu.setMnemonic(KeyEvent.VK_H);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user