1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-16 11:21:18 +03:00

Splitting up programmer selection menu and burn bootloader menu item.

This commit is contained in:
David A. Mellis
2010-12-17 19:58:40 -05:00
parent 3e31777fec
commit 15d07fa036
5 changed files with 40 additions and 18 deletions

View File

@ -1017,22 +1017,28 @@ public class Base {
} }
public void rebuildBurnBootloaderMenu(JMenu menu) { public void rebuildProgrammerMenu(JMenu menu) {
//System.out.println("rebuilding burn bootloader menu"); //System.out.println("rebuilding programmer menu");
menu.removeAll(); menu.removeAll();
ButtonGroup group = new ButtonGroup();
for (Target target : targetsTable.values()) { for (Target target : targetsTable.values()) {
for (String programmer : target.getProgrammers().keySet()) { for (String programmer : target.getProgrammers().keySet()) {
AbstractAction action = AbstractAction action =
new AbstractAction( new AbstractAction(
"w/ " + target.getProgrammers().get(programmer).get("name")) { target.getProgrammers().get(programmer).get("name")) {
public void actionPerformed(ActionEvent actionevent) { public void actionPerformed(ActionEvent actionevent) {
activeEditor.handleBurnBootloader((String) getValue("target"), Preferences.set("programmer", getValue("target") + ":" +
(String) getValue("programmer")); getValue("programmer"));
} }
}; };
action.putValue("target", target.getName()); action.putValue("target", target.getName());
action.putValue("programmer", programmer); action.putValue("programmer", programmer);
JMenuItem item = new JMenuItem(action); JMenuItem item = new JRadioButtonMenuItem(action);
if (Preferences.get("programmer").equals(target.getName() + ":" +
programmer)) {
item.setSelected(true);
}
group.add(item);
menu.add(item); menu.add(item);
} }
} }

View File

@ -693,12 +693,20 @@ public class Editor extends JFrame implements RunnerListener {
serialMenu = new JMenu("Serial Port"); serialMenu = new JMenu("Serial Port");
populateSerialMenu(); populateSerialMenu();
menu.add(serialMenu); menu.add(serialMenu);
menu.addSeparator(); menu.addSeparator();
JMenu programmerMenu = new JMenu("Programmer");
base.rebuildProgrammerMenu(programmerMenu);
menu.add(programmerMenu);
JMenu bootloaderMenu = new JMenu("Burn Bootloader"); item = new JMenuItem("Burn Bootloader");
base.rebuildBurnBootloaderMenu(bootloaderMenu); item.addActionListener(new ActionListener() {
menu.add(bootloaderMenu); public void actionPerformed(ActionEvent e) {
handleBurnBootloader();
}
});
menu.add(item);
menu.addMenuListener(new MenuListener() { menu.addMenuListener(new MenuListener() {
public void menuCanceled(MenuEvent e) {} public void menuCanceled(MenuEvent e) {}
@ -989,8 +997,8 @@ public class Editor extends JFrame implements RunnerListener {
//serialMenu.addSeparator(); //serialMenu.addSeparator();
//serialMenu.add(item); //serialMenu.add(item);
} }
protected JMenu buildHelpMenu() { protected JMenu buildHelpMenu() {
// To deal with a Mac OS X 10.5 bug, add an extra space after the name // To deal with a Mac OS X 10.5 bug, add an extra space after the name
// so that the OS doesn't try to insert its slow help menu. // so that the OS doesn't try to insert its slow help menu.
@ -2440,14 +2448,14 @@ public class Editor extends JFrame implements RunnerListener {
} }
protected void handleBurnBootloader(final String target, final String programmer) { protected void handleBurnBootloader() {
console.clear(); console.clear();
statusNotice("Burning bootloader to I/O Board (this may take a minute)..."); statusNotice("Burning bootloader to I/O Board (this may take a minute)...");
SwingUtilities.invokeLater(new Runnable() { SwingUtilities.invokeLater(new Runnable() {
public void run() { public void run() {
try { try {
Uploader uploader = new AvrdudeUploader(); Uploader uploader = new AvrdudeUploader();
if (uploader.burnBootloader(target, programmer)) { if (uploader.burnBootloader()) {
statusNotice("Done burning bootloader."); statusNotice("Done burning bootloader.");
} else { } else {
statusError("Error while burning bootloader."); statusError("Error while burning bootloader.");

View File

@ -96,8 +96,14 @@ public class AvrdudeUploader extends Uploader {
return avrdude(commandDownloader); return avrdude(commandDownloader);
} }
public boolean burnBootloader(String targetName, String programmer) throws RunnerException { public boolean burnBootloader() throws RunnerException {
return burnBootloader(getProgrammerCommands(Base.targetsTable.get(targetName), programmer)); String programmer = Preferences.get("programmer");
Target target = Base.getTarget();
if (programmer.indexOf(":") != -1) {
target = Base.targetsTable.get(programmer.substring(0, programmer.indexOf(":")));
programmer = programmer.substring(programmer.indexOf(":") + 1);
}
return burnBootloader(getProgrammerCommands(target, programmer));
} }
private Collection getProgrammerCommands(Target target, String programmer) { private Collection getProgrammerCommands(Target target, String programmer) {

View File

@ -67,7 +67,7 @@ public abstract class Uploader implements MessageConsumer {
public abstract boolean uploadUsingPreferences(String buildPath, String className, boolean verbose) public abstract boolean uploadUsingPreferences(String buildPath, String className, boolean verbose)
throws RunnerException, SerialException; throws RunnerException, SerialException;
public abstract boolean burnBootloader(String target, String programmer) throws RunnerException; public abstract boolean burnBootloader() throws RunnerException;
protected void flushSerialBuffer() throws RunnerException, SerialException { protected void flushSerialBuffer() throws RunnerException, SerialException {
// Cleanup the serial buffer // Cleanup the serial buffer

View File

@ -237,9 +237,11 @@ run.present.exclusive = false
run.present.exclusive.macosx = true run.present.exclusive.macosx = true
# ARDUINO PREFERENCES # ARDUINO PREFERENCES
board = atmega328 board = uno
target = arduino target = arduino
programmer = arduino:avrispmkii
upload.using = bootloader upload.using = bootloader
serial.port=COM1 serial.port=COM1