From 8679f7520fd214b4985d980b04aa614776bfe3d9 Mon Sep 17 00:00:00 2001 From: Remoun Metyas Date: Fri, 3 Jan 2014 01:11:48 -0800 Subject: [PATCH 1/4] Rebuild Import Libraries menu whenever it is expanded This fixes having to restart the app whenever a new library is added to the path (i.e. in the sketchbook or Processing directory). --- app/src/processing/app/Editor.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index 61051f93c97..e14d2124b69 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -629,6 +629,14 @@ public void actionPerformed(ActionEvent e) { if (importMenu == null) { importMenu = new JMenu(_("Import Library...")); + importMenu.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + base.rebuildImportMenu(importMenu, Editor.this); + } + } + }); + // Rebuild the import menu here, so it's faster the first time it expands. base.rebuildImportMenu(importMenu, this); } sketchMenu.add(importMenu); From 506937037c8005daa0ba310aa793f6d995dde036 Mon Sep 17 00:00:00 2001 From: Remoun Metyas Date: Fri, 3 Jan 2014 01:23:35 -0800 Subject: [PATCH 2/4] Cleanup: Consolidate rebuildImportMenu()'s parameters --- app/src/processing/app/Base.java | 7 ++++--- app/src/processing/app/Editor.java | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index 2312c880f27..70e3adac411 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -950,15 +950,16 @@ protected void rebuildSketchbookMenu(JMenu menu) { } - public void rebuildImportMenu(JMenu importMenu, final Editor editor) { + public void rebuildImportMenu(final Editor editor) { + JMenu importMenu = Editor.importMenu; importMenu.removeAll(); - + JMenuItem addLibraryMenuItem = new JMenuItem(_("Add Library...")); addLibraryMenuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Base.this.handleAddLibrary(editor); Base.this.onBoardOrPortChange(); - Base.this.rebuildImportMenu(Editor.importMenu, editor); + Base.this.rebuildImportMenu(editor); Base.this.rebuildExamplesMenu(Editor.examplesMenu); } }); diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index e14d2124b69..bcaa5ab69e4 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -632,12 +632,12 @@ public void actionPerformed(ActionEvent e) { importMenu.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { - base.rebuildImportMenu(importMenu, Editor.this); + base.rebuildImportMenu(Editor.this); } } }); // Rebuild the import menu here, so it's faster the first time it expands. - base.rebuildImportMenu(importMenu, this); + base.rebuildImportMenu(this); } sketchMenu.add(importMenu); From f59ffa8ddcacee70d2c5b1e8ddc5e5b8278e9040 Mon Sep 17 00:00:00 2001 From: Remoun Metyas Date: Fri, 3 Jan 2014 01:18:51 -0800 Subject: [PATCH 3/4] Cleanup: Remove unused Editor parameter to Base.rebuildBoardsMenu --- app/src/processing/app/Base.java | 3 +-- app/src/processing/app/Editor.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index 70e3adac411..fc41ffd8dc5 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -1016,8 +1016,7 @@ public void onBoardOrPortChange() { } } - - public void rebuildBoardsMenu(JMenu menu, final Editor editor) { + public void rebuildBoardsMenu(JMenu menu) { //System.out.println("rebuilding boards menu"); menu.removeAll(); ButtonGroup group = new ButtonGroup(); diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index bcaa5ab69e4..8badd416c67 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -690,7 +690,7 @@ public void actionPerformed(ActionEvent e) { if (boardsMenu == null) { boardsMenu = new JMenu(_("Board")); - base.rebuildBoardsMenu(boardsMenu, this); + base.rebuildBoardsMenu(boardsMenu); } menu.add(boardsMenu); From 25acf306fc003cdba5e8686805cc1561034ffc0b Mon Sep 17 00:00:00 2001 From: Remoun Metyas Date: Fri, 3 Jan 2014 11:45:10 -0800 Subject: [PATCH 4/4] Add a note by rebuildImportMenu() about not breaking the menu expansion --- app/src/processing/app/Base.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index fc41ffd8dc5..0bad925fdbb 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -950,6 +950,9 @@ protected void rebuildSketchbookMenu(JMenu menu) { } + // NOTE(remoun): This method is called whenever the Sketch > Import Library + // menu is expanded, so make sure not to break that completely. + // Showing an error dialog and skipping invalid entries is fine. public void rebuildImportMenu(final Editor editor) { JMenu importMenu = Editor.importMenu; importMenu.removeAll();