diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/ArduinoDownloadsManager.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/ArduinoDownloadsManager.java index 1cdcd34408b..c1bb94e8249 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/ArduinoDownloadsManager.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/ArduinoDownloadsManager.java @@ -7,8 +7,13 @@ *******************************************************************************/ package org.eclipse.cdt.arduino.ui.internal.downloads; +import java.io.File; +import java.io.IOException; + +import org.eclipse.cdt.arduino.core.internal.ArduinoPreferences; import org.eclipse.cdt.arduino.ui.internal.Activator; import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.jface.wizard.WizardPage; @@ -21,6 +26,7 @@ import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Shell; public class ArduinoDownloadsManager extends WizardDialog { @@ -91,4 +97,26 @@ public class ArduinoDownloadsManager extends WizardDialog { finishButton.moveBelow(null); } + static boolean checkLicense(Shell shell) { + File acceptedFile = ArduinoPreferences.getArduinoHome().resolve(".accepted").toFile(); //$NON-NLS-1$ + if (!acceptedFile.exists()) { + String message = "Do you accept the licenses for the platforms and libraries you are downloading?"; + MessageDialog dialog = new MessageDialog(shell, "Arduino Licensing", null, message, + MessageDialog.QUESTION, new String[] { "Yes", "No" }, 0); + int rc = dialog.open(); + if (rc == 0) { + try { + acceptedFile.createNewFile(); + } catch (IOException e) { + Activator.log(e); + } + return true; + } else { + return false; + } + } else { + return true; + } + } + } diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/LibrariesTabControl.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/LibrariesTabControl.java index bb15b3f8811..8a39fb26534 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/LibrariesTabControl.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/LibrariesTabControl.java @@ -263,14 +263,16 @@ public class LibrariesTabControl extends Composite { SelectLibrariesDialog selectDialog = new SelectLibrariesDialog(getShell()); selectDialog.setLibraries(availableLibraries); if (selectDialog.open() == Window.OK) { - Collection selectedLibraries = selectDialog.getChecked(); - container.run(true, true, monitor -> { - try { - manager.installLibraries(selectedLibraries, monitor); - } catch (CoreException e) { - Activator.log(e); - } - }); + if (ArduinoDownloadsManager.checkLicense(getShell())) { + Collection selectedLibraries = selectDialog.getChecked(); + container.run(true, true, monitor -> { + try { + manager.installLibraries(selectedLibraries, monitor); + } catch (CoreException e) { + Activator.log(e); + } + }); + } } populateTable(); } catch (InterruptedException | InvocationTargetException e) { diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/PlatformsTabControl.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/PlatformsTabControl.java index 31e06837f52..2a35036066f 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/PlatformsTabControl.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/downloads/PlatformsTabControl.java @@ -257,14 +257,16 @@ public class PlatformsTabControl extends Composite { SelectPlatformsDialog selectDialog = new SelectPlatformsDialog(getShell()); selectDialog.setPlatforms(availablePlatforms); if (selectDialog.open() == Window.OK) { - Collection selectedPlatforms = selectDialog.getSelectedPlatforms(); - container.run(true, true, monitor -> { - try { - manager.installPlatforms(selectedPlatforms, monitor); - } catch (CoreException e) { - Activator.log(e); - } - }); + if (ArduinoDownloadsManager.checkLicense(getShell())) { + Collection selectedPlatforms = selectDialog.getSelectedPlatforms(); + container.run(true, true, monitor -> { + try { + manager.installPlatforms(selectedPlatforms, monitor); + } catch (CoreException e) { + Activator.log(e); + } + }); + } } populateTable(); } catch (InterruptedException | InvocationTargetException e) {