1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-02-20 14:54:31 +01:00

Ensuring sketch menu is properly rendered when editor windows gains/loses focus

This commit is contained in:
Federico Fissore 2015-05-07 14:55:50 +02:00
parent fd6d9561a8
commit 50a5034176
2 changed files with 40 additions and 17 deletions

View File

@ -0,0 +1,20 @@
package cc.arduino.view;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;
public class StubMenuListener implements MenuListener {
@Override
public void menuSelected(MenuEvent e) {
}
@Override
public void menuDeselected(MenuEvent e) {
}
@Override
public void menuCanceled(MenuEvent e) {
}
}

View File

@ -24,6 +24,7 @@ package processing.app;
import cc.arduino.packages.MonitorFactory; import cc.arduino.packages.MonitorFactory;
import cc.arduino.view.StubMenuListener;
import com.jcraft.jsch.JSchException; import com.jcraft.jsch.JSchException;
import jssc.SerialPortException; import jssc.SerialPortException;
import processing.app.debug.*; import processing.app.debug.*;
@ -92,7 +93,6 @@ public class Editor extends JFrame implements RunnerListener {
// file, sketch, and tools menus for re-inserting items // file, sketch, and tools menus for re-inserting items
JMenu fileMenu; JMenu fileMenu;
JMenu sketchMenu;
JMenu toolsMenu; JMenu toolsMenu;
int numTools = 0; int numTools = 0;
@ -186,7 +186,6 @@ public class Editor extends JFrame implements RunnerListener {
// re-add the sub-menus that are shared by all windows // re-add the sub-menus that are shared by all windows
fileMenu.insert(sketchbookMenu, 2); fileMenu.insert(sketchbookMenu, 2);
fileMenu.insert(examplesMenu, 3); fileMenu.insert(examplesMenu, 3);
buildSketchMenu();
int offset = 0; int offset = 0;
for (JMenu menu : base.getBoardsCustomMenus()) { for (JMenu menu : base.getBoardsCustomMenus()) {
toolsMenu.insert(menu, numTools + offset); toolsMenu.insert(menu, numTools + offset);
@ -200,7 +199,6 @@ public class Editor extends JFrame implements RunnerListener {
public void windowDeactivated(WindowEvent e) { public void windowDeactivated(WindowEvent e) {
fileMenu.remove(sketchbookMenu); fileMenu.remove(sketchbookMenu);
fileMenu.remove(examplesMenu); fileMenu.remove(examplesMenu);
buildSketchMenu();
List<Component> toolsMenuItemsToRemove = new LinkedList<Component>(); List<Component> toolsMenuItemsToRemove = new LinkedList<Component>();
for (Component menuItem : toolsMenu.getMenuComponents()) { for (Component menuItem : toolsMenu.getMenuComponents()) {
if (menuItem instanceof JComponent) { if (menuItem instanceof JComponent) {
@ -492,7 +490,20 @@ public class Editor extends JFrame implements RunnerListener {
JMenuBar menubar = new JMenuBar(); JMenuBar menubar = new JMenuBar();
menubar.add(buildFileMenu()); menubar.add(buildFileMenu());
menubar.add(buildEditMenu()); menubar.add(buildEditMenu());
menubar.add(buildSketchMenu());
final JMenu sketchMenu = new JMenu(_("Sketch"));
sketchMenu.addMenuListener(new StubMenuListener() {
@Override
public void menuSelected(MenuEvent e) {
buildSketchMenu(sketchMenu);
sketchMenu.revalidate();
validate();
}
});
buildSketchMenu(sketchMenu);
menubar.add(sketchMenu);
menubar.add(buildToolsMenu()); menubar.add(buildToolsMenu());
menubar.add(buildHelpMenu()); menubar.add(buildHelpMenu());
setJMenuBar(menubar); setJMenuBar(menubar);
@ -609,12 +620,8 @@ public class Editor extends JFrame implements RunnerListener {
} }
protected JMenu buildSketchMenu() { protected void buildSketchMenu(JMenu sketchMenu) {
if (sketchMenu == null) { sketchMenu.removeAll();
sketchMenu = new JMenu(_("Sketch"));
} else {
sketchMenu.removeAll();
}
JMenuItem item = newJMenuItem(_("Verify / Compile"), 'R'); JMenuItem item = newJMenuItem(_("Verify / Compile"), 'R');
item.addActionListener(new ActionListener() { item.addActionListener(new ActionListener() {
@ -623,7 +630,7 @@ public class Editor extends JFrame implements RunnerListener {
} }
}); });
sketchMenu.add(item); sketchMenu.add(item);
item = newJMenuItem(_("Upload"), 'U'); item = newJMenuItem(_("Upload"), 'U');
item.addActionListener(new ActionListener() { item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
@ -682,8 +689,6 @@ public class Editor extends JFrame implements RunnerListener {
} }
}); });
sketchMenu.add(item); sketchMenu.add(item);
return sketchMenu;
} }
@ -733,9 +738,7 @@ public class Editor extends JFrame implements RunnerListener {
}); });
toolsMenu.add(item); toolsMenu.add(item);
toolsMenu.addMenuListener(new MenuListener() { toolsMenu.addMenuListener(new StubMenuListener() {
public void menuCanceled(MenuEvent e) {}
public void menuDeselected(MenuEvent e) {}
public void menuSelected(MenuEvent e) { public void menuSelected(MenuEvent e) {
//System.out.println("Tools menu selected."); //System.out.println("Tools menu selected.");
populatePortMenu(); populatePortMenu();
@ -2025,7 +2028,7 @@ public class Editor extends JFrame implements RunnerListener {
// placed on the event thread and causes a hang--bad idea all around. // placed on the event thread and causes a hang--bad idea all around.
new Thread(verbose ? verboseHandler : nonVerboseHandler).start(); new Thread(verbose ? verboseHandler : nonVerboseHandler).start();
} }
class BuildHandler implements Runnable { class BuildHandler implements Runnable {
private final boolean verbose; private final boolean verbose;