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