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:
parent
fd6d9561a8
commit
50a5034176
20
app/src/cc/arduino/view/StubMenuListener.java
Normal file
20
app/src/cc/arduino/view/StubMenuListener.java
Normal 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) {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user