From 15efcca7a9462d362fe06f2aace8f9690707a3fc Mon Sep 17 00:00:00 2001
From: Nimrod Abramovich <grumpydormin@gmail.com>
Date: Thu, 27 Feb 2020 18:27:13 +0000
Subject: [PATCH] added file load functionality

---
 bin/coursework/Main.class   | Bin 12192 -> 12792 bytes
 bin/coursework/Square.class | Bin 2338 -> 2338 bytes
 src/coursework/Main.java    |  56 ++++++++++++++++++++----------------
 src/coursework/Square.java  |   4 ++-
 4 files changed, 34 insertions(+), 26 deletions(-)

diff --git a/bin/coursework/Main.class b/bin/coursework/Main.class
index 7830df1d45c823fed8ad31465aa8df7bbcfe4d74..b35577c6853cb8148f2dffd91cc66fa48d8aab8f 100644
GIT binary patch
literal 12792
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
WOiblWl}yzPl8o;dUoh1$NCE(^UTJ&)

literal 12192
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

diff --git a/bin/coursework/Square.class b/bin/coursework/Square.class
index 1d14989e7a7311d4033786e3645886cf67215abd..ef7b1b6f1ab6cf0ef440306e32c5b7b42af133f4 100644
GIT binary patch
delta 113
zcmZ1^v`A=!H@mDZg8+jbg9L*<g93vgg9d{Ug8_pvg9U>rg9C%v<P7#8PD=(31}g>u
z2J6Ya9Ga8gup4vQF>o;0GYBv^fJFj1j5(bdI2c?Q1Q=W=_j1H=dN6P>crpkuc!A{E
La~K#Hm>6;aM5+@;

delta 113
zcmZ1^v`A=!H@mD3g8+jrg9L*fg93vAg9d{kg8_pPg9U>zg9C%f<P7#8PICqh1`7rO
z2FuC49Ga8gup4vQFmN!~G6*o(fkgs2j5!?{I2fE51Q?tr_j1H=x-oDtxHAYac!1>D
La~K#Hm>6;aJzNtc

diff --git a/src/coursework/Main.java b/src/coursework/Main.java
index 656035c..c55ff0d 100644
--- a/src/coursework/Main.java
+++ b/src/coursework/Main.java
@@ -1,6 +1,7 @@
 package coursework;
 
 import java.io.BufferedReader;
+import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
@@ -31,18 +32,21 @@ import javafx.scene.shape.MoveTo;
 import javafx.scene.shape.Path;
 import javafx.scene.shape.Rectangle;
 import javafx.scene.shape.VLineTo;
+import javafx.stage.FileChooser;
 import javafx.stage.Stage;
 
 public class Main extends Application {
 	
 	final static public int N = 6;
 	
+	private Scene scene;
+	private Stage stage;
+	
 	final private double GRID_PERCENTAGE = 0.75;
 	private static Square[][] gridSquares = new Square[N][N];
 	private TextField[] gridNumbers = new TextField[N*N];
 	private static Label[][] cageLabels = new Label[N*N][2];
 	private Rectangle gridOutline;
-	Scene scene;
 	private boolean isWider;
 	private HBox previous = null;
 	
@@ -111,6 +115,7 @@ public class Main extends Application {
 		square.setBottomStroke(3, Color.BLACK);
 		square.setLeftStroke(3, Color.BLACK);
 		square.setRightStroke(3, Color.BLACK);
+		square.resizeLines(size);
 		return square;
 	}
 	
@@ -137,14 +142,18 @@ public class Main extends Application {
 		
 		topHBox.getChildren().addAll(loadGameFileButton, showMistakesButton, loadGameTextInputButton);
 		
-		final String PATH = "C:\\Java Eclipse Workspace\\Programming II Coursework\\mathdokuCage.txt";
 		loadGameFileButton.setOnAction(e -> {
 			try {
-				BufferedReader file = new BufferedReader(new FileReader(PATH));
+				FileChooser fileChooser = new FileChooser();
+				fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text Files", "*.txt"));
+				File selectedFile = fileChooser.showOpenDialog(stage);
+				BufferedReader file = new BufferedReader(new FileReader(selectedFile));
+				
 				String line;
 				while ((line = file.readLine()) != null) {
-					System.out.println(line);
+					createNewCage(line);
 				}
+				file.close();
 			} catch (FileNotFoundException e1) {
 				e1.printStackTrace();
 			} catch (IOException e2) {
@@ -155,6 +164,24 @@ public class Main extends Application {
 		return topHBox;
 	}
 	
+	private void createNewCage(String line) {
+		String[] splitLine = line.split(" ");
+		String[] shiftedIds = splitLine[1].split(",");
+		int[] ids = new int[shiftedIds.length];
+		for (int i = 0; i < shiftedIds.length; i++) {
+			ids[i] = Integer.parseInt(shiftedIds[i]) - 1;
+		}
+		
+		if (splitLine[0].contains("÷")) {
+			splitLine[0] = splitLine[0].replace("÷", "�");
+		}
+		
+		int value = Integer.parseInt(splitLine[0].substring(0, splitLine[0].length()- 1));
+		String operator = splitLine[0].substring(splitLine[0].length() - 1);
+		
+		new Cage(ids, value, operator);
+	}
+	
 	private HBox setupBottomHBox() {
 		HBox bottomHBox = new HBox();
 		bottomHBox.setSpacing(10);
@@ -207,25 +234,6 @@ public class Main extends Application {
 		});
 	}
 	
-	private void setupCages() {
-		new Cage(new int[] {0,6},11,"+");
-		new Cage(new int[] {1,2},2,"�");
-		new Cage(new int[] {3,9},20,"x");
-		new Cage(new int[] {7,8},3,"-");
-		new Cage(new int[] {4,5,11,17},6,"x");
-		new Cage(new int[] {10, 16},3,"�");
-		new Cage(new int[] {12,13,18,19},240,"x");
-		new Cage(new int[] {14,15},6,"x");
-		new Cage(new int[] {24,25},6,"x");
-		new Cage(new int[] {20,26},6,"x");
-		new Cage(new int[] {21,27,28},7,"+");
-		new Cage(new int[] {22,23},30,"x");
-		new Cage(new int[] {30,31,32},8,"+");
-		new Cage(new int[] {33,34},2,"�");
-		new Cage(new int[] {29,35},9,"+");
-		
-	}
-	
 	public void resizeGrid(double gridX, double gridY, double gridWidth) {
 		double newValue = isWider ? scene.getHeight() : scene.getWidth();
 		for (int i = 0; i < N; i++) {
@@ -258,8 +266,6 @@ public class Main extends Application {
 		
 		GridPane gridPane = setupGrid();
 		
-		setupCages();
-		
 		HBox topHBox = setupTopHBox();
 		HBox bottomHBox = setupBottomHBox();
 		
diff --git a/src/coursework/Square.java b/src/coursework/Square.java
index 4850fb9..c441424 100644
--- a/src/coursework/Square.java
+++ b/src/coursework/Square.java
@@ -40,7 +40,8 @@ public class Square {
 	}
 	
 	public void resizeLines(double newSize) {
-		top.setEndX(newSize);
+		top.setEndX(newSize );
+		
 		right.setStartX(newSize);
 		right.setEndX(newSize);
 		right.setEndY(newSize);
@@ -48,6 +49,7 @@ public class Square {
 		bottom.setStartX(newSize);
 		bottom.setStartY(newSize);
 		bottom.setEndY(newSize);
+
 		left.setStartY(newSize);
 	}
 	
-- 
GitLab