diff --git a/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java b/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java index 3aac99ba0..bca4e05d2 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java +++ b/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java @@ -79,7 +79,7 @@ public class LibraryManagerUI extends InstallerJDialog { } public LibraryManagerUI(Frame parent) { - super(parent, "Library Manager", Dialog.ModalityType.APPLICATION_MODAL); + super(parent, "Library Manager", Dialog.ModalityType.APPLICATION_MODAL, _("No internet connection available, the list of available libraries is not complete. You will be able to manage only the libraries you've already installed.")); } public void setIndexer(LibrariesIndexer indexer) { @@ -155,7 +155,7 @@ public class LibraryManagerUI extends InstallerJDialog { } } }); - installerThread.setUncaughtExceptionHandler(new InstallerJDialogUncaughtExceptionHandler(this)); + installerThread.setUncaughtExceptionHandler(new InstallerJDialogUncaughtExceptionHandler(this, noConnectionErrorMessage)); installerThread.start(); } @@ -176,7 +176,7 @@ public class LibraryManagerUI extends InstallerJDialog { } } }); - installerThread.setUncaughtExceptionHandler(new InstallerJDialogUncaughtExceptionHandler(this)); + installerThread.setUncaughtExceptionHandler(new InstallerJDialogUncaughtExceptionHandler(this, noConnectionErrorMessage)); installerThread.start(); } @@ -184,7 +184,7 @@ public class LibraryManagerUI extends InstallerJDialog { boolean managedByIndex = indexer.getIndex().getLibraries().contains(lib); if (!managedByIndex) { - int chosenOption = JOptionPane.showConfirmDialog(getParent(), _("This library is not listed on Library Manager. You won't be able to resinstall it from here.\nAre you sure you want to delete it?"), _("Please confirm library deletion"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); + int chosenOption = JOptionPane.showConfirmDialog(getParent(), _("This library is not listed on Library Manager. You won't be able to resinstall it from here.
Are you sure you want to delete it?"), _("Please confirm library deletion"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if (chosenOption != JOptionPane.YES_OPTION) { return; } @@ -206,7 +206,7 @@ public class LibraryManagerUI extends InstallerJDialog { } } }); - installerThread.setUncaughtExceptionHandler(new InstallerJDialogUncaughtExceptionHandler(this)); + installerThread.setUncaughtExceptionHandler(new InstallerJDialogUncaughtExceptionHandler(this, noConnectionErrorMessage)); installerThread.start(); } diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java b/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java index 717ab1b43..fafc67a5c 100644 --- a/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java +++ b/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java @@ -78,7 +78,7 @@ public class ContributionManagerUI extends InstallerJDialog { } public ContributionManagerUI(Frame parent) { - super(parent, _("Boards Manager"), Dialog.ModalityType.APPLICATION_MODAL); + super(parent, _("Boards Manager"), Dialog.ModalityType.APPLICATION_MODAL, _("No internet connection available, the list of available boards is not complete. You will be able to manage only the boards you've already installed.")); } public void setIndexer(ContributionsIndexer indexer) { @@ -145,7 +145,7 @@ public class ContributionManagerUI extends InstallerJDialog { } } }); - installerThread.setUncaughtExceptionHandler(new InstallerJDialogUncaughtExceptionHandler(this)); + installerThread.setUncaughtExceptionHandler(new InstallerJDialogUncaughtExceptionHandler(this, noConnectionErrorMessage)); installerThread.start(); } @@ -168,7 +168,7 @@ public class ContributionManagerUI extends InstallerJDialog { } } }); - installerThread.setUncaughtExceptionHandler(new InstallerJDialogUncaughtExceptionHandler(this)); + installerThread.setUncaughtExceptionHandler(new InstallerJDialogUncaughtExceptionHandler(this, noConnectionErrorMessage)); installerThread.start(); } @@ -194,7 +194,7 @@ public class ContributionManagerUI extends InstallerJDialog { } } }); - installerThread.setUncaughtExceptionHandler(new InstallerJDialogUncaughtExceptionHandler(this)); + installerThread.setUncaughtExceptionHandler(new InstallerJDialogUncaughtExceptionHandler(this, noConnectionErrorMessage)); installerThread.start(); } diff --git a/app/src/cc/arduino/contributions/packages/ui/InstallerJDialogUncaughtExceptionHandler.java b/app/src/cc/arduino/contributions/packages/ui/InstallerJDialogUncaughtExceptionHandler.java index 01a80be0f..a5007fe41 100644 --- a/app/src/cc/arduino/contributions/packages/ui/InstallerJDialogUncaughtExceptionHandler.java +++ b/app/src/cc/arduino/contributions/packages/ui/InstallerJDialogUncaughtExceptionHandler.java @@ -9,21 +9,28 @@ import static processing.app.I18n._; public class InstallerJDialogUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler { private final InstallerJDialog parent; + private final String connectionErrorMessage; - public InstallerJDialogUncaughtExceptionHandler(InstallerJDialog parent) { + public InstallerJDialogUncaughtExceptionHandler(InstallerJDialog parent, String connectionErrorMessage) { this.parent = parent; + this.connectionErrorMessage = connectionErrorMessage; } @Override public void uncaughtException(Thread t, final Throwable e) { + String errorMessage = _(e.getMessage().substring(e.getMessage().indexOf(":") + 2)); + if (errorMessage.startsWith("Error downloading")) { + errorMessage = connectionErrorMessage; + } + final String finalErrorMessage = errorMessage; SwingUtilities.invokeLater(new Runnable() { @Override public void run() { - System.err.println(_(e.getMessage().substring(e.getMessage().indexOf(":") + 2))); + System.err.println(finalErrorMessage); e.printStackTrace(); } }); - parent.setErrorMessage(_(e.getMessage().substring(e.getMessage().indexOf(":") + 2))); + parent.setErrorMessage(finalErrorMessage); } } diff --git a/app/src/cc/arduino/contributions/ui/InstallerJDialog.java b/app/src/cc/arduino/contributions/ui/InstallerJDialog.java index de18fe1c4..75619e06a 100644 --- a/app/src/cc/arduino/contributions/ui/InstallerJDialog.java +++ b/app/src/cc/arduino/contributions/ui/InstallerJDialog.java @@ -58,6 +58,7 @@ public abstract class InstallerJDialog extends JDialog { // Currently selected category and filters protected Predicate categoryFilter; protected String[] filters; + protected final String noConnectionErrorMessage; // Real contribution table protected JTable contribTable; @@ -79,9 +80,9 @@ public abstract class InstallerJDialog extends JDialog { protected InstallerTableCell cellEditor; - public InstallerJDialog(Frame parent, String title, - ModalityType applicationModal) { + public InstallerJDialog(Frame parent, String title, ModalityType applicationModal, String noConnectionErrorMessage) { super(parent, title, applicationModal); + this.noConnectionErrorMessage = noConnectionErrorMessage; setResizable(true); @@ -218,7 +219,7 @@ public abstract class InstallerJDialog extends JDialog { } public void setErrorMessage(String message) { - errorMessage.setText(message); + errorMessage.setText("" + message + ""); errorMessageBox.setVisible(true); }