From 434ae68d4709357ab3ecd22c2c0b22c751eb4a28 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Thu, 12 Oct 2017 19:23:29 +0200 Subject: [PATCH] Fixed #202 - better changelog --> opens roadmap --- .../ui/controller/Controller.java | 42 ++++++++++++++++--- .../budgetmaster/languages/_de.properties | 6 ++- .../budgetmaster/languages/_en.properties | 4 +- .../budgetmaster/logic/updater/Updater.java | 34 +-------------- .../budgetmaster/logic/utils/Strings.java | 3 ++ 5 files changed, 47 insertions(+), 42 deletions(-) diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java index 8fdf629d3..4524dbc59 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/controller/Controller.java @@ -1,6 +1,9 @@ package de.deadlocker8.budgetmasterclient.ui.controller; +import java.awt.Desktop; import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Locale; import java.util.Optional; @@ -41,6 +44,7 @@ import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Button; import javafx.scene.control.ButtonType; import javafx.scene.control.DialogPane; +import javafx.scene.control.Hyperlink; import javafx.scene.control.Label; import javafx.scene.control.Tab; import javafx.scene.control.TabPane; @@ -50,6 +54,8 @@ import javafx.scene.input.KeyCodeCombination; import javafx.scene.input.KeyCombination; import javafx.scene.input.KeyEvent; import javafx.scene.layout.AnchorPane; +import javafx.scene.text.Text; +import javafx.scene.text.TextFlow; import javafx.stage.Stage; import javafx.util.Duration; import logger.Logger; @@ -454,8 +460,7 @@ public class Controller extends BaseController { try { - boolean updateAvailable = updater.isUpdateAvailable(Integer.parseInt(Localization.getString(Strings.VERSION_CODE))); - String changes = updater.getChangelog(updater.getLatestVersion().getVersionCode()); + boolean updateAvailable = updater.isUpdateAvailable(Integer.parseInt(Localization.getString(Strings.VERSION_CODE))); if(!updateAvailable) { @@ -470,11 +475,36 @@ public class Controller extends BaseController Alert alert = new Alert(AlertType.INFORMATION); alert.setTitle(Localization.getString(Strings.INFO_TITLE_UPDATE_AVAILABLE)); alert.setHeaderText(""); - alert.setContentText(Localization.getString(Strings.INFO_TEXT_UPDATE_AVAILABLE, - updater.getLatestVersion().getVersionName(), - changes)); Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow(); - dialogStage.getIcons().add(icon); + dialogStage.getIcons().add(icon); + + Hyperlink linkText = new Hyperlink(Localization.getString(Strings.INFO_TEXT_UPDATE_AVAILABLE_SHOW_CHANGES)); + linkText.setOnAction((event)->{ + if(Desktop.isDesktopSupported()) + { + try + { + Desktop.getDesktop().browse(new URI("http://deadlocker.thecodelabs.de/roadmap/php/index.php?id=1")); + } + catch(IOException | URISyntaxException e) + { + Logger.error(e); + AlertGenerator.showAlert(AlertType.ERROR, + Localization.getString(Strings.TITLE_ERROR), + "", + Localization.getString(Strings.ERROR_OPEN_BROWSER), + icon, getStage(), null, false); + } + } + }); + + TextFlow textFlow = new TextFlow( + new Text(Localization.getString(Strings.INFO_TEXT_UPDATE_AVAILABLE, + updater.getLatestVersion().getVersionName())), + linkText + ); + + alert.getDialogPane().setContent(textFlow); ButtonType buttonTypeOne = new ButtonType(Localization.getString(Strings.INFO_TEXT_UPDATE_AVAILABLE_NOW)); ButtonType buttonTypeTwo = new ButtonType(Localization.getString(Strings.CANCEL)); diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties index 8c033c6f5..585f5751f 100644 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties +++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties @@ -1,6 +1,6 @@ # DEFAULT app.name=BudgetMaster -version.code=11 +version.code=7 version.name=1.7.0_alpha version.date=03.10.17 author=Robert Goldmann @@ -147,7 +147,8 @@ info.text.language.changed= info.text.language.changed.restart.now=Jetzt neustarten info.text.language.changed.restart.later=Sp�ter neustarten info.title.update.available=Update verf�gbar -info.text.update.available=Ein Update ist verf�gbar.\nNeue Version: {0}\n\n�nderungen:\n{1} +info.text.update.available=Ein Update ist verf�gbar.\nNeue Version: {0}\n\n +info.text.update.available.show.changes=�nderungen anzeigen (�ffnet Webbrowser) info.text.update.available.now=Jetzt updaten info.title.start.after.update=Update erfolgreich info.header.text.start.after.update=BudgetMaster wurde erfolgreich auf Version {0} aktualisiert @@ -203,6 +204,7 @@ error.database.import.wrong.file=Die angegebene Datei enth error.password.save=Beim Speichern des Passworts ist ein Fehler aufgetreten. error.updater.get.latest.version=Beim �berpr�fen auf Updates ist ein Fehler aufgetreten. Informationen zu neuen Versionen konnten nicht abgerufen werden. Versuche es sp�ter noch einmal. error.updater.download.latest.version=Beim Herunterladen des Updates ist ein Fehler aufgetreten.\n\n{0} +error.open.browser=Beim �ffnen des Standardwebbrowsers ist ein Fehler aufgetreten. # UI categorytab.button.category.new=\ Neue Kategorie diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties index d826bea6e..c777879aa 100644 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties +++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties @@ -147,7 +147,8 @@ info.text.language.changed=Changes to the language will only take effect after a info.text.language.changed.restart.now=Restart Now info.text.language.changed.restart.later=Restart Later info.title.update.available=Update available -info.text.update.available=An update is available.\nNew version: {0}\n\nChanges:\n{1} +info.text.update.available=An update is available.\nNew version: {0}\n\n +info.text.update.available.show.changes=Show Changes (opens web browsers) info.text.update.available.now=Update Now info.title.start.after.update=Update successfull info.header.text.start.after.update=Successfully updated BudgetMaster to version {0} @@ -203,6 +204,7 @@ error.database.import.wrong.file=The specified file does not contain a valid Bud error.password.save=An error occurred while saving the password. error.updater.get.latest.version=An error occurred while checking for updates. Information about latest versions could not be retrieved. Please try again later. error.updater.download.latest.version=An error occurred while downloading the update.\n\n{0} +error.open.browser=An error occurred while opening the default web browser. # UI categorytab.button.category.new=\ New Category diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/updater/Updater.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/updater/Updater.java index cfd054972..1eb50a9c7 100644 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/updater/Updater.java +++ b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/updater/Updater.java @@ -13,9 +13,6 @@ import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.Properties; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; - import de.deadlocker8.budgetmaster.logic.utils.Strings; import logger.Logger; import nativeWindows.NativeLauncher; @@ -28,7 +25,6 @@ public class Updater { private VersionInformation latestVersion; private static final String LATEST_VERSION_INFO_URL = "https://raw.githubusercontent.com/deadlocker8/BudgetMaster/master/src/de/deadlocker8/budgetmaster/resources/languages/_de.properties"; - private static final String CHANGELOG_URL = "https://raw.githubusercontent.com/deadlocker8/BudgetMaster/master/src/de/deadlocker8/budgetmaster/resources/changelog.json"; private static final String BUILD_FOLDER = "https://github.com/deadlocker8/BudgetMaster/raw/master/build/"; public Updater() @@ -65,35 +61,7 @@ public class Updater public VersionInformation getLatestVersion() { return latestVersion; - } - - public JsonObject getChangelogFromURL() throws IOException - { - URL webseite = new URL(CHANGELOG_URL); - URLConnection connection = webseite.openConnection(); - - BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); - String line; - StringBuilder data = new StringBuilder(); - while ((line = br.readLine()) != null) - { - data.append(line); - } - - JsonParser parser = new JsonParser(); - return parser.parse(data.toString()).getAsJsonObject(); - } - - public String getChangelog(int versionCode) throws Exception - { - JsonObject changelogJSON = getChangelogFromURL(); - - if(changelogJSON != null) - { - return changelogJSON.get(String.valueOf(versionCode)).getAsString(); - } - return null; - } + } private void downloadLatestUpdater(OSType osType) throws IOException { diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java index c30d28c37..735730eb2 100644 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java +++ b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/utils/Strings.java @@ -151,6 +151,7 @@ public class Strings public static final String INFO_TEXT_LANGUAGE_CHANGED_RESTART_LATER = "info.text.language.changed.restart.later"; public static final String INFO_TITLE_UPDATE_AVAILABLE = "info.title.update.available"; public static final String INFO_TEXT_UPDATE_AVAILABLE = "info.text.update.available"; + public static final String INFO_TEXT_UPDATE_AVAILABLE_SHOW_CHANGES = "info.text.update.available.show.changes"; public static final String INFO_TEXT_UPDATE_AVAILABLE_NOW = "info.text.update.available.now"; public static final String INFO_TITLE_START_AFTER_UPDATE = "info.title.start.after.update"; public static final String INFO_HEADER_TEXT_START_AFTER_UPDATE = "info.header.text.start.after.update"; @@ -206,4 +207,6 @@ public class Strings public static final String ERROR_PASSWORD_SAVE = "error.password.save"; public static final String ERROR_UPDATER_GET_LATEST_VERSION = "error.updater.get.latest.version"; public static final String ERROR_UPDATER_DOWNLOAD_LATEST_VERSION = "error.updater.download.latest.version"; + public static final String ERROR_OPEN_BROWSER = "error.open.browser"; + } \ No newline at end of file -- GitLab