From d1f656133beeac1e85c04ca94e9d44061b6ef39e Mon Sep 17 00:00:00 2001
From: Martino Facchin <m.facchin@arduino.cc>
Date: Tue, 7 Apr 2020 10:14:35 +0200
Subject: [PATCH 1/3] Boards Menu: add hint if core lives in sketchbook

---
 app/src/processing/app/Base.java                            | 4 ++++
 .../src/processing/app/debug/LegacyTargetPlatform.java      | 5 +++++
 arduino-core/src/processing/app/debug/TargetPlatform.java   | 6 ++++++
 3 files changed, 15 insertions(+)

diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java
index 7af728fdd49..34193e07dbf 100644
--- a/app/src/processing/app/Base.java
+++ b/app/src/processing/app/Base.java
@@ -1494,6 +1494,10 @@ public void actionPerformed(ActionEvent actionevent) {
         if (platformLabel == null)
           platformLabel = targetPackage.getId() + "-" + targetPlatform.getId();
 
+        // add an hint that this core lives in sketchbook
+        if (targetPlatform.isInSketchbook())
+          platformLabel += " (in sketchbook)";
+
         JMenu platformBoardsMenu = new JMenu(platformLabel);
         MenuScroller.setScrollerFor(platformBoardsMenu);
         platformMenus.add(platformBoardsMenu);
diff --git a/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java b/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java
index c00378c48b4..ad1030b8f5f 100644
--- a/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java
+++ b/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java
@@ -245,4 +245,9 @@ public String toString() {
       res += "  " + boardId + " = " + boards.get(boardId) + "\n";
     return res + "}";
   }
+
+  @Override
+  public boolean isInSketchbook() {
+	return getFolder().getAbsolutePath().startsWith(BaseNoGui.getDefaultSketchbookFolder().getAbsolutePath());
+  }
 }
diff --git a/arduino-core/src/processing/app/debug/TargetPlatform.java b/arduino-core/src/processing/app/debug/TargetPlatform.java
index 4b13cf87ac7..330b260bb16 100644
--- a/arduino-core/src/processing/app/debug/TargetPlatform.java
+++ b/arduino-core/src/processing/app/debug/TargetPlatform.java
@@ -94,4 +94,10 @@ public interface TargetPlatform {
    */
   public TargetPackage getContainerPackage();
 
+  /**
+   * Returns true if the platform is installed in a subfolder of the sketchbook
+   *
+   * @return
+   */
+  public boolean isInSketchbook();
 }

From 4c19878d40dd92e7b0bc5308f5eae36d49969429 Mon Sep 17 00:00:00 2001
From: Martino Facchin <m.facchin@arduino.cc>
Date: Tue, 7 Apr 2020 11:01:02 +0200
Subject: [PATCH 2/3] Tests: Fix TargetPlatformStub implementation

---
 app/test/processing/app/debug/TargetPlatformStub.java | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/app/test/processing/app/debug/TargetPlatformStub.java b/app/test/processing/app/debug/TargetPlatformStub.java
index a8048c514a4..59b655f96f5 100644
--- a/app/test/processing/app/debug/TargetPlatformStub.java
+++ b/app/test/processing/app/debug/TargetPlatformStub.java
@@ -99,4 +99,10 @@ public TargetBoard getBoard(String boardId) {
   public TargetPackage getContainerPackage() {
     return targetPackage;
   }
+
+  @Override
+  public boolean isInSketchbook() {
+    // TODO Auto-generated method stub
+    return false;
+  }
 }

From a1f1f0eda69a63227c965b191b33b0ddf5a1b8ac Mon Sep 17 00:00:00 2001
From: Martino Facchin <m.facchin@arduino.cc>
Date: Tue, 7 Apr 2020 17:35:59 +0200
Subject: [PATCH 3/3] Update
 arduino-core/src/processing/app/debug/LegacyTargetPlatform.java

Co-Authored-By: Matthijs Kooijman <matthijs@stdin.nl>
---
 arduino-core/src/processing/app/debug/LegacyTargetPlatform.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java b/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java
index ad1030b8f5f..f3c1dd45b30 100644
--- a/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java
+++ b/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java
@@ -248,6 +248,6 @@ public String toString() {
 
   @Override
   public boolean isInSketchbook() {
-	return getFolder().getAbsolutePath().startsWith(BaseNoGui.getDefaultSketchbookFolder().getAbsolutePath());
+	return getFolder().getAbsolutePath().startsWith(BaseNoGui.getSketchbookHardwareFolder().getAbsolutePath());
   }
 }