From 9addc660b752a053209b67653ff9ffd9a99cc71f Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Thu, 8 Dec 2016 00:27:38 +0100
Subject: [PATCH] Fixed #3

---
 .../roadgame/ui/Controller$1.class            | Bin 1263 -> 1263 bytes
 .../roadgame/ui/Controller$2.class            | Bin 1401 -> 1401 bytes
 .../deadlocker8/roadgame/ui/Controller.class  | Bin 13210 -> 13411 bytes
 bin/de/deadlocker8/roadgame/ui/GUI.fxml       |   6 +-
 .../ui/ZoomableScrollPane$ZoomHandler.class   | Bin 0 -> 1350 bytes
 .../roadgame/ui/ZoomableScrollPane.class      | Bin 0 -> 2715 bytes
 .../deadlocker8/roadgame/ui/Controller.java   |  21 ++-
 src/de/deadlocker8/roadgame/ui/GUI.fxml       |   6 +-
 .../roadgame/ui/ZoomableScrollPane.java       | 136 ++++++++++++++++++
 9 files changed, 153 insertions(+), 16 deletions(-)
 create mode 100644 bin/de/deadlocker8/roadgame/ui/ZoomableScrollPane$ZoomHandler.class
 create mode 100644 bin/de/deadlocker8/roadgame/ui/ZoomableScrollPane.class
 create mode 100644 src/de/deadlocker8/roadgame/ui/ZoomableScrollPane.java

diff --git a/bin/de/deadlocker8/roadgame/ui/Controller$1.class b/bin/de/deadlocker8/roadgame/ui/Controller$1.class
index 6f25679d13703a2bd3e5d1e2f2263eca6fb93cae..4e053851e8c3cbe0d8718bff2acf9e8545bf0414 100644
GIT binary patch
delta 27
icmaFQ`JQuwAPb|%WFZzGPG1II27d+-hQP_`EFA!6ng)>o

delta 27
icmaFQ`JQuwAPb}YWFZzGP8SAV1~&!~29L?<EFA!4{040R

diff --git a/bin/de/deadlocker8/roadgame/ui/Controller$2.class b/bin/de/deadlocker8/roadgame/ui/Controller$2.class
index fbe577013de6ba25a8f7dccf22368c68e3f615ae..96d6c60f6b62215bc8af9008d96194a98f7dc941 100644
GIT binary patch
delta 27
jcmey#^^<GEWERGClc%tRaBgPcW!TCf!?1nwN0tr%l0*sJ

delta 27
jcmey#^^<GEWERGylc%tRaIRwDWmv-?!?14hN0tr%kfsT_

diff --git a/bin/de/deadlocker8/roadgame/ui/Controller.class b/bin/de/deadlocker8/roadgame/ui/Controller.class
index 5cfb47e5e37c56fb953c13b3aa1a0facd10988d5..125ef454b418ee3c37fa4114307dd6a209ce8bb8 100644
GIT binary patch
delta 6922
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
DNqb#%

delta 6889
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
JWGZlw1OO#TE6o4^

diff --git a/bin/de/deadlocker8/roadgame/ui/GUI.fxml b/bin/de/deadlocker8/roadgame/ui/GUI.fxml
index 22974c0..83ae0d5 100644
--- a/bin/de/deadlocker8/roadgame/ui/GUI.fxml
+++ b/bin/de/deadlocker8/roadgame/ui/GUI.fxml
@@ -5,7 +5,6 @@
 <?import javafx.scene.control.Menu?>
 <?import javafx.scene.control.MenuBar?>
 <?import javafx.scene.control.MenuItem?>
-<?import javafx.scene.control.ScrollPane?>
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.layout.HBox?>
 <?import javafx.scene.layout.StackPane?>
@@ -15,10 +14,7 @@
    <children>
       <HBox layoutX="14.0" layoutY="40.0" prefHeight="546.0" prefWidth="772.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="40.0">
          <children>
-            <AnchorPane fx:id="anchorPaneGame" prefHeight="572.0" prefWidth="599.0" HBox.hgrow="ALWAYS">
-               <children>
-                  <ScrollPane fx:id="scrollPane" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
-               </children></AnchorPane>
+            <AnchorPane fx:id="anchorPaneGame" prefHeight="572.0" prefWidth="599.0" HBox.hgrow="ALWAYS" />
             <VBox alignment="TOP_CENTER" prefHeight="572.0" prefWidth="124.0">
                <HBox.margin>
                   <Insets left="20.0" />
diff --git a/bin/de/deadlocker8/roadgame/ui/ZoomableScrollPane$ZoomHandler.class b/bin/de/deadlocker8/roadgame/ui/ZoomableScrollPane$ZoomHandler.class
new file mode 100644
index 0000000000000000000000000000000000000000..6ebaee931c211e1dc65fbb96c1c0d00a4e3f5e27
GIT binary patch
literal 1350
zcmX^0Z`VEs1_l!bb9M$MMh452RQ;6H#FU);<m}WU3;m+}#FX^J+*JM2O#P_*{M^K(
zoYdgtqWqkkfW*916_AieVqQv4Y7sjF3nPO-R$^JAeokUuy1su>R%&tyI|CadgCs~a
ztwKMwEH$r0-xWkcH8C=<m1JZVs~9jc==+dlwKXFHn@wh3W{DjmgOLV_dNsos8Cab2
zQ&Kq@7#VnZ7}yy&xEPoj_<0yO83Y&^m^DBO_<b_-QvFJElTwR9K;C9#5c0`SPRt2Q
zEXoA&p@J+R4=^%Vlja2EkOO%o100Bq49Xfl(7-BAPR&cz&&(?*EzyUBI5^;}HN&_V
zBp9UF86+7Q<nXKIVUT8!VPxP;Pc3mt%_&KY1bfYei$RV-ft^8~kwKTFAm?FF1ceTJ
zRepZ1e`yKG7-b#?6_6MkNX#=2<T5oL26d1SdvbnWacOQUBLjCaIKhCO&&Z%a$b*aw
zyul@j$=SY%1<)WChX)E$3IYcNBZDpvgD8U-BSS8!X@G+G0!0BMg8?YDa4|A)1?QI*
zC8xS&=A<$*h=XzjD0M)h43tUqK#|1Az!{vGo|jlsT9nGj;13Q1<a}Zc7QvcFY+zEj
zQiPo~BLk0TUS4XEb53G$acVIm12@PS&^*SVz`)4B%)rRN%D^Zf07~l&3=Av`Obnb1
zTnvm1+~C~L#K6SBz`&)Yy_JDSYdZtqMg|53CI&$U1_m|;Mg|6k5(Xg#1_mB5n~Oo1
zL4<*Ufe{q)P!kHlCNeO{Yj0x^=bJHyfmdq_1J5=F+2sse5SEhmHU?FYvCLp&r5M;4
z7#OM<I2mdg1Q_ZVgc%wcq!?Nl<QUq(R*8WfBoDQUfkB=@gF%ylkwFXMcwsgHM+Q*_
zZK(B{3=j`+YH1%}kl4nc1F{I&{fuBknHU%Z7#KJi^q|_*7?>ECL4MTI-p-(pt_R|0
gP`EHN7=pvYh`|_4n=qJyLW_ZsfssLu!Hj_k0KI2VqyPW_

literal 0
HcmV?d00001

diff --git a/bin/de/deadlocker8/roadgame/ui/ZoomableScrollPane.class b/bin/de/deadlocker8/roadgame/ui/ZoomableScrollPane.class
new file mode 100644
index 0000000000000000000000000000000000000000..6bc0c53ad5bcb6fa305c70236010b97c4e463dc3
GIT binary patch
literal 2715
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
O0F|*842%qI3`_u*LQ&5E

literal 0
HcmV?d00001

diff --git a/src/de/deadlocker8/roadgame/ui/Controller.java b/src/de/deadlocker8/roadgame/ui/Controller.java
index 6986277..5e5df99 100644
--- a/src/de/deadlocker8/roadgame/ui/Controller.java
+++ b/src/de/deadlocker8/roadgame/ui/Controller.java
@@ -21,7 +21,6 @@ import javafx.scene.control.Alert;
 import javafx.scene.control.Alert.AlertType;
 import javafx.scene.control.Button;
 import javafx.scene.control.Label;
-import javafx.scene.control.ScrollPane;
 import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
 import javafx.scene.input.MouseButton;
@@ -39,14 +38,14 @@ public class Controller
 	@FXML private AnchorPane anchorPaneGame;
 	@FXML private StackPane stackPaneCurrentTile;
 	@FXML private Button buttonRotate;
-	@FXML private ScrollPane scrollPane;
-
+	
 	private Stage stage;
 	private Image icon = new Image("de/deadlocker8/roadgame/resources/icon.png");
 	private final ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/roadgame/main/", Locale.GERMANY);
 	private GridPane grid;
 	private Game game;
 	private Textures textures;
+	private ZoomableScrollPane scrollPane;
 	private StackPane stackPanePlaceHolder;
 	
 	public void init(Stage stage)
@@ -56,10 +55,20 @@ public class Controller
 
 		anchorPaneGame.setStyle("-fx-border-color: #333333; -fx-border-width: 2px");
 		stackPaneCurrentTile.setStyle("-fx-border-color: #333333; -fx-border-width: 2px");
-
+	
 		grid = new GridPane();
-		grid.setFocusTraversable(false);		
-		scrollPane.setContent(grid);
+		grid.setFocusTraversable(false);	
+		
+		scrollPane = new ZoomableScrollPane(grid);		
+		scrollPane.setPannable(true);		
+		scrollPane.setFitToHeight(true);
+		scrollPane.setFitToWidth(true);		
+		anchorPaneGame.getChildren().add(scrollPane);
+		AnchorPane.setTopAnchor(scrollPane, 0.0);
+		AnchorPane.setRightAnchor(scrollPane, 0.0);
+		AnchorPane.setBottomAnchor(scrollPane, 0.0);
+		AnchorPane.setLeftAnchor(scrollPane, 0.0);		
+		
 		anchorPaneGame.setOnMouseClicked(new EventHandler<MouseEvent>()
 		{
 			@Override
diff --git a/src/de/deadlocker8/roadgame/ui/GUI.fxml b/src/de/deadlocker8/roadgame/ui/GUI.fxml
index 22974c0..83ae0d5 100644
--- a/src/de/deadlocker8/roadgame/ui/GUI.fxml
+++ b/src/de/deadlocker8/roadgame/ui/GUI.fxml
@@ -5,7 +5,6 @@
 <?import javafx.scene.control.Menu?>
 <?import javafx.scene.control.MenuBar?>
 <?import javafx.scene.control.MenuItem?>
-<?import javafx.scene.control.ScrollPane?>
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.layout.HBox?>
 <?import javafx.scene.layout.StackPane?>
@@ -15,10 +14,7 @@
    <children>
       <HBox layoutX="14.0" layoutY="40.0" prefHeight="546.0" prefWidth="772.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="40.0">
          <children>
-            <AnchorPane fx:id="anchorPaneGame" prefHeight="572.0" prefWidth="599.0" HBox.hgrow="ALWAYS">
-               <children>
-                  <ScrollPane fx:id="scrollPane" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
-               </children></AnchorPane>
+            <AnchorPane fx:id="anchorPaneGame" prefHeight="572.0" prefWidth="599.0" HBox.hgrow="ALWAYS" />
             <VBox alignment="TOP_CENTER" prefHeight="572.0" prefWidth="124.0">
                <HBox.margin>
                   <Insets left="20.0" />
diff --git a/src/de/deadlocker8/roadgame/ui/ZoomableScrollPane.java b/src/de/deadlocker8/roadgame/ui/ZoomableScrollPane.java
new file mode 100644
index 0000000..8e648f0
--- /dev/null
+++ b/src/de/deadlocker8/roadgame/ui/ZoomableScrollPane.java
@@ -0,0 +1,136 @@
+package de.deadlocker8.roadgame.ui;
+
+import javafx.event.EventHandler;
+import javafx.scene.Group;
+import javafx.scene.Node;
+import javafx.scene.control.ScrollPane;
+import javafx.scene.input.ScrollEvent;
+import javafx.scene.transform.Scale;
+
+public class ZoomableScrollPane extends ScrollPane
+{
+	Group zoomGroup;
+	Scale scaleTransform;
+	Node content;
+	double scaleValue = 1.0;
+	double delta = 0.1;
+
+	public ZoomableScrollPane(Node content)
+	{
+		this.content = content;
+		Group contentGroup = new Group();
+		zoomGroup = new Group();
+		contentGroup.getChildren().add(zoomGroup);
+		zoomGroup.getChildren().add(content);
+		setContent(contentGroup);
+		scaleTransform = new Scale(scaleValue, scaleValue, 0, 0);
+		zoomGroup.getTransforms().add(scaleTransform);
+
+		zoomGroup.setOnScroll(new ZoomHandler());
+	}
+
+	public double getScaleValue()
+	{
+		return scaleValue;
+	}
+
+	public void zoomToActual()
+	{
+		zoomTo(1.0);
+	}
+
+	public void zoomTo(double scaleValue)
+	{
+		this.scaleValue = scaleValue;
+
+		scaleTransform.setX(scaleValue);
+		scaleTransform.setY(scaleValue);
+	}
+
+	public void zoomActual()
+	{
+		scaleValue = 1;
+		zoomTo(scaleValue);
+	}
+
+	public void zoomOut()
+	{
+		scaleValue -= delta;
+
+		if(Double.compare(scaleValue, 0.2) < 0)
+		{
+			scaleValue = 0.2;
+		}
+
+		zoomTo(scaleValue);
+	}
+
+	public void zoomIn()
+	{
+		scaleValue += delta;
+
+		if(Double.compare(scaleValue, 2) > 0)
+		{
+			scaleValue = 2;
+		}
+
+		zoomTo(scaleValue);
+	}
+
+	/**
+	 * 
+	 * @param minimizeOnly
+	 *            If the content fits already into the viewport, then we don't
+	 *            zoom if this parameter is true.
+	 */
+	public void zoomToFit(boolean minimizeOnly)
+	{
+
+		double scaleX = getViewportBounds().getWidth() / getContent().getBoundsInLocal().getWidth();
+		double scaleY = getViewportBounds().getHeight() / getContent().getBoundsInLocal().getHeight();
+
+		// consider current scale (in content calculation)
+		scaleX *= scaleValue;
+		scaleY *= scaleValue;
+
+		// distorted zoom: we don't want it => we search the minimum scale
+		// factor and apply it
+		double scale = Math.min(scaleX, scaleY);
+
+		// check precondition
+		if(minimizeOnly)
+		{
+
+			// check if zoom factor would be an enlargement and if so, just set
+			// it to 1
+			if(Double.compare(scale, 1) > 0)
+			{
+				scale = 1;
+			}
+		}
+
+		// apply zoom
+		zoomTo(scale);
+	}
+
+	private class ZoomHandler implements EventHandler<ScrollEvent>
+	{
+		@Override
+		public void handle(ScrollEvent scrollEvent)
+		{
+			// if (scrollEvent.isControlDown())
+			{
+				if(scrollEvent.getDeltaY() < 0)
+				{
+					zoomOut();
+				}
+				else
+				{
+					zoomIn();
+				}			
+
+				scrollEvent.consume();
+			}
+		}
+	}
+}
\ No newline at end of file
-- 
GitLab