From a910521e47cda135ca0f1d1f561faac87dab53f0 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Wed, 9 Aug 2017 20:16:18 +0200
Subject: [PATCH] Fixed #141 - better prefilled value for export charts dialog

---
 .../logic/charts/CategoriesChart.java         | 12 +++++++
 .../logic/charts/ChartExportable.java         |  4 +++
 .../logic/charts/MonthBarChart.java           | 34 ++++++++++++++++++-
 .../logic/charts/MonthLineChart.java          | 14 +++++++-
 .../ui/ExportChartController.java             |  6 ++--
 5 files changed, 65 insertions(+), 5 deletions(-)

diff --git a/src/de/deadlocker8/budgetmaster/logic/charts/CategoriesChart.java b/src/de/deadlocker8/budgetmaster/logic/charts/CategoriesChart.java
index 17603ae33..6ba5192bd 100644
--- a/src/de/deadlocker8/budgetmaster/logic/charts/CategoriesChart.java
+++ b/src/de/deadlocker8/budgetmaster/logic/charts/CategoriesChart.java
@@ -319,4 +319,16 @@ public class CategoriesChart extends VBox implements ChartExportable
 		
 		return root.snapshot(sp, null);
 	}
+	
+	@Override
+	public double getSuggestedWidth()
+	{
+		return getWidth() + 50;
+	}
+
+	@Override
+	public double getSuggestedHeight()
+	{
+		return getHeight() + 50;
+	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/charts/ChartExportable.java b/src/de/deadlocker8/budgetmaster/logic/charts/ChartExportable.java
index 2077c7b06..d5516e19c 100644
--- a/src/de/deadlocker8/budgetmaster/logic/charts/ChartExportable.java
+++ b/src/de/deadlocker8/budgetmaster/logic/charts/ChartExportable.java
@@ -9,4 +9,8 @@ public interface ChartExportable
 	double getWidth();
 	
 	double getHeight();
+	
+	double getSuggestedWidth();
+	
+	double getSuggestedHeight();
 }
diff --git a/src/de/deadlocker8/budgetmaster/logic/charts/MonthBarChart.java b/src/de/deadlocker8/budgetmaster/logic/charts/MonthBarChart.java
index cdc88fc93..4b34420fe 100644
--- a/src/de/deadlocker8/budgetmaster/logic/charts/MonthBarChart.java
+++ b/src/de/deadlocker8/budgetmaster/logic/charts/MonthBarChart.java
@@ -8,6 +8,7 @@ import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import javafx.geometry.Insets;
 import javafx.geometry.Orientation;
 import javafx.geometry.Pos;
+import javafx.scene.Node;
 import javafx.scene.Scene;
 import javafx.scene.SnapshotParameters;
 import javafx.scene.control.Label;
@@ -51,7 +52,7 @@ public class MonthBarChart extends VBox implements ChartExportable
         scrollPane.setStyle("-fx-background-color: transparent; -fx-background-insets: 0; -fx-border-color: transparent; -fx-border-width: 0; -fx-border-insets: 0;");
         scrollPane.setPadding(new Insets(0, 0, 10, 0));
        
-        HBox generatedChart = generate();
+        HBox generatedChart = generate();              
         scrollPane.setContent(generatedChart);
         generatedChart.prefHeightProperty().bind(scrollPane.heightProperty().subtract(30));
         this.getChildren().add(scrollPane);
@@ -278,4 +279,35 @@ public class MonthBarChart extends VBox implements ChartExportable
         
         return root.snapshot(sp, null);
     }
+    
+    @Override
+	public double getSuggestedWidth()
+	{
+    	if(this.getChildren().size() < 2)
+    	{
+    		return 0;
+    	}
+    	
+    	Node currentNode = this.getChildren().get(0);
+    	
+    	if(!(currentNode instanceof ScrollPane))
+    	{
+    		return 0;
+    	}
+    	
+    	ScrollPane scrollPane = (ScrollPane)currentNode; 
+    	Node content = scrollPane.getContent();
+    	if(content == null)
+    	{
+    		return 0;
+    	}    	
+    	
+    	return ((Region)content).getWidth();
+	}
+
+	@Override
+	public double getSuggestedHeight()
+	{
+		return getHeight() + 50;
+	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/logic/charts/MonthLineChart.java b/src/de/deadlocker8/budgetmaster/logic/charts/MonthLineChart.java
index c15c39dab..af5152f69 100644
--- a/src/de/deadlocker8/budgetmaster/logic/charts/MonthLineChart.java
+++ b/src/de/deadlocker8/budgetmaster/logic/charts/MonthLineChart.java
@@ -161,7 +161,7 @@ public class MonthLineChart extends VBox implements ChartExportable
         newStage.initModality(Modality.NONE);
         newStage.setScene(new Scene(root, width, height));
         newStage.setResizable(false);       
-        newStage.show();       
+        newStage.show();
         
         SnapshotParameters sp = new SnapshotParameters();
         sp.setTransform(Transform.scale(width / root.getWidth(), height / root.getHeight()));
@@ -169,4 +169,16 @@ public class MonthLineChart extends VBox implements ChartExportable
         
         return root.snapshot(sp, null);
     }
+
+	@Override
+	public double getSuggestedWidth()
+	{
+		return getWidth() + 50;
+	}
+
+	@Override
+	public double getSuggestedHeight()
+	{
+		return getHeight() + 50;
+	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/ui/ExportChartController.java b/src/de/deadlocker8/budgetmaster/ui/ExportChartController.java
index 793f54a90..3b25804ae 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ExportChartController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/ExportChartController.java
@@ -53,9 +53,9 @@ public class ExportChartController
 		{
 			labelSavePath.setText(savePath.getAbsolutePath());
 		}
-				
-		textFieldWidth.setText(String.valueOf((int)chart.getWidth()));
-		textFieldHeight.setText(String.valueOf((int)chart.getHeight()));
+		
+		textFieldWidth.setText(String.valueOf((int)chart.getSuggestedWidth()));
+		textFieldHeight.setText(String.valueOf((int)chart.getSuggestedHeight()));
 
 		anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;");
 		
-- 
GitLab