Currently displaying basic javafx window with canvas. Also changed the file structure a bit.

At this point the javafx is not tied to the old code in any way #story[377]
This commit is contained in:
Peter
2017-03-15 18:16:43 +13:00
parent 9ca5f5e7fd
commit 550812d8e1
17 changed files with 176 additions and 124 deletions
+1 -1
View File
@@ -43,7 +43,7 @@
<transformer <transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries> <manifestEntries>
<Main-Class>seng302.App</Main-Class> <Main-Class>seng302.models.App</Main-Class>
<X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK> <X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>
<X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK> <X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK>
</manifestEntries> </manifestEntries>
+18 -101
View File
@@ -1,111 +1,28 @@
package seng302; package seng302;
import java.lang.reflect.Array; import javafx.application.Application;
import java.util.ArrayList; import javafx.fxml.FXMLLoader;
import java.util.Collections; import javafx.scene.Parent;
import java.util.Map; import javafx.scene.Scene;
import java.util.Random; import javafx.stage.Stage;
import java.io.FileNotFoundException;
public class App {
/** public class App extends Application
* Builds a race object for the AC35 course {
* @Override
* @return a Race object for the AC35 course public void start(Stage primaryStage) throws Exception {
*/ System.out.println(getClass().getResource("/RaceView.fxml"));
public static Race createRace(String configFile) throws Exception {
Race race = new Race();
FileParser fp;
// Read team names from file Parent root = FXMLLoader.load(getClass().getResource("/RaceView.fxml"));
try{ primaryStage.setTitle("RaceVision");
fp = new FileParser(configFile); primaryStage.setScene(new Scene(root));
}
catch (FileNotFoundException e){
System.out.println("Config file does not exist");
return null;
}
ArrayList<String> boatNames = new ArrayList<>(); primaryStage.show();
ArrayList<Map<String, Object>> teams = fp.getTeams();
//get race size
int numberOfBoats = (int) fp.getRaceSize();
//get time scale
double timeScale = fp.getTimeScale();
race.setTimeScale(timeScale);
for (Map<String, Object> team : teams) {
boatNames.add((String) team.get("team-name"));
}
// Shuffle team names
long seed = System.nanoTime();
Collections.shuffle(boatNames, new Random(seed));
if (numberOfBoats > Array.getLength(boatNames.toArray())) {
return null;
}
// Add boats to the race
for (int i = 0; i < numberOfBoats; i++) {
race.addBoat(new Boat(boatNames.get(i), (Double) (teams.get(i).get("velocity"))));
}
race.addLeg(new Leg(35, 100, "Start"));
race.addLeg(new Leg(10, 300, "Marker 1"));
race.addLeg(new Leg(350, 400, "Leeward Gate"));
race.addLeg(new Leg(10, 400, "Windward Gate"));
Leg finishingLeg = new Leg(10, 400, "Leeward Gate");
finishingLeg.setFinishingLeg(true);
race.addLeg(finishingLeg);
return race;
} }
public static void main(String[] args) { public static void main(String[] args) {
Race race = null; launch(args);
String raceConfigFile;
if (args.length == 2 && args[0].equals("-f")){
raceConfigFile = args[1];
}
else{
// Use default config
raceConfigFile = "doc/examples/config.json";
}
try {
race = createRace(raceConfigFile);
} catch (Exception e) {
System.out.println("There was an error creating the race.");
}
// If race was created
if (race != null) {
race.displayStartingBoats();
System.out.println("\n\n");
System.out.println("######################");
System.out.println("# Live Race Updates ");
System.out.println("######################");
race.startRace();
System.out.println("\n\n");
System.out.println("######################");
System.out.println("# Race Results ");
System.out.println("######################");
race.showRaceMarkerResults();
race.displayFinishingOrder();
} else {
System.out.println("There was an error creating the race. Exiting.");
}
} }
} }
@@ -0,0 +1,19 @@
package seng302.controllers;
import javafx.fxml.FXML;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
/**
* Created by ptg19 on 15/03/17.
*/
public class CanvasController {
@FXML private Canvas canvas;
public void initialize() {
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.setFill(Color.GREEN);
gc.fillOval(100, 200, 100, 80);
}
}
+111
View File
@@ -0,0 +1,111 @@
package seng302.models;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;
import java.util.Random;
import java.io.FileNotFoundException;
public class App {
/**
* Builds a race object for the AC35 course
*
* @return a Race object for the AC35 course
*/
public static Race createRace(String configFile) throws Exception {
Race race = new Race();
FileParser fp;
// Read team names from file
try{
fp = new FileParser(configFile);
}
catch (FileNotFoundException e){
System.out.println("Config file does not exist");
return null;
}
ArrayList<String> boatNames = new ArrayList<>();
ArrayList<Map<String, Object>> teams = fp.getTeams();
//get race size
int numberOfBoats = (int) fp.getRaceSize();
//get time scale
double timeScale = fp.getTimeScale();
race.setTimeScale(timeScale);
for (Map<String, Object> team : teams) {
boatNames.add((String) team.get("team-name"));
}
// Shuffle team names
long seed = System.nanoTime();
Collections.shuffle(boatNames, new Random(seed));
if (numberOfBoats > Array.getLength(boatNames.toArray())) {
return null;
}
// Add boats to the race
for (int i = 0; i < numberOfBoats; i++) {
race.addBoat(new Boat(boatNames.get(i), (Double) (teams.get(i).get("velocity"))));
}
race.addLeg(new Leg(35, 100, "Start"));
race.addLeg(new Leg(10, 300, "Marker 1"));
race.addLeg(new Leg(350, 400, "Leeward Gate"));
race.addLeg(new Leg(10, 400, "Windward Gate"));
Leg finishingLeg = new Leg(10, 400, "Leeward Gate");
finishingLeg.setFinishingLeg(true);
race.addLeg(finishingLeg);
return race;
}
public static void main(String[] args) {
Race race = null;
String raceConfigFile;
if (args.length == 2 && args[0].equals("-f")){
raceConfigFile = args[1];
}
else{
// Use default config
raceConfigFile = "doc/examples/config.json";
}
try {
race = createRace(raceConfigFile);
} catch (Exception e) {
System.out.println("There was an error creating the race.");
}
// If race was created
if (race != null) {
race.displayStartingBoats();
System.out.println("\n\n");
System.out.println("######################");
System.out.println("# Live Race Updates ");
System.out.println("######################");
race.startRace();
System.out.println("\n\n");
System.out.println("######################");
System.out.println("# Race Results ");
System.out.println("######################");
race.showRaceMarkerResults();
race.displayFinishingOrder();
} else {
System.out.println("There was an error creating the race. Exiting.");
}
}
}
@@ -1,4 +1,4 @@
package seng302; package seng302.models;
/** /**
* Represents a boat in the race. * Represents a boat in the race.
@@ -1,4 +1,4 @@
package seng302; package seng302.models;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
@@ -1,4 +1,4 @@
package seng302; package seng302.models;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser; import org.json.simple.parser.JSONParser;
@@ -1,4 +1,4 @@
package seng302; package seng302.models;
/** /**
* Represents the leg of a race. * Represents the leg of a race.
@@ -1,11 +1,11 @@
package seng302; package seng302.models;
import java.util.ArrayList; import java.util.ArrayList;
/** /**
* Represents the marker at the beginning of a leg * Represents the marker at the beginning of a leg
*/ */
class Marker{ public class Marker{
private String name; private String name;
private ArrayList<Boat> boatOrder; private ArrayList<Boat> boatOrder;
@@ -1,4 +1,4 @@
package seng302; package seng302.models;
import java.lang.reflect.Array; import java.lang.reflect.Array;
import java.util.*; import java.util.*;
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.canvas.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng302.controllers.CanvasController">
<children>
<Canvas fx:id="canvas" height="400.0" width="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
-15
View File
@@ -1,15 +0,0 @@
package seng302;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
/**
* Unit test for simple App.
*/
public class AppTest {
@Test
public void testApp() {
assertTrue(true);
}
}
+1
View File
@@ -1,6 +1,7 @@
package seng302; package seng302;
import org.junit.Test; import org.junit.Test;
import seng302.models.Boat;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
+3
View File
@@ -1,6 +1,9 @@
package seng302; package seng302;
import org.junit.Test; import org.junit.Test;
import seng302.models.Boat;
import seng302.models.Event;
import seng302.models.Leg;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@@ -1,6 +1,7 @@
package seng302; package seng302;
import org.junit.Test; import org.junit.Test;
import seng302.models.FileParser;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
+2
View File
@@ -1,6 +1,8 @@
package seng302; package seng302;
import org.junit.Test; import org.junit.Test;
import seng302.models.Leg;
import seng302.models.Marker;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
+2
View File
@@ -1,6 +1,8 @@
package seng302; package seng302;
import org.junit.Test; import org.junit.Test;
import seng302.models.Boat;
import seng302.models.Race;
import java.lang.reflect.Array; import java.lang.reflect.Array;