diff --git a/pom.xml b/pom.xml
index 8579a57..2606997 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,11 +51,6 @@
scala-library
${lib.scala-library.version}
-
- org.scalafx
- scalafx_2.10
- ${lib.scalafx.version}
-
diff --git a/src/main/java/com/sothr/imagetools/App.java b/src/main/java/com/sothr/imagetools/App.java
index a391519..c9c62e3 100644
--- a/src/main/java/com/sothr/imagetools/App.java
+++ b/src/main/java/com/sothr/imagetools/App.java
@@ -1,23 +1,34 @@
package com.sothr.imagetools;
+import com.sothr.imagetools.errors.ImageToolsException;
+import com.sothr.imagetools.ui.controller.AppController;
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
+import java.io.IOException;
import java.util.Properties;
/**
* Hello world!
*
*/
-public class App
+public class App extends Application
{
private static Logger logger = LoggerFactory.getLogger(App.class);
+ private static final String MAINGUI_FXML = "fxml/mainapp/MainApp.fxml";
+
public static void main( String[] args )
{
+ //Logging Config
File file = new File("log4j.properties");
if (file.exists()) {
PropertyConfigurator.configure("log4j.properties");
@@ -38,7 +49,8 @@ public class App
logger.info("Image-Tools is starting");
try {
- System.out.println( "Hello World!" );
+ //try to run the UI
+ launch(args);
} catch (Exception ex) {
logger.error("A fatal error has occurred: ", ex);
//show popup about the error to the user then exit
@@ -46,4 +58,27 @@ public class App
logger.info("Image-Tools is shutting down");
}
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ logger.info(String.format("Launching GUI with FXML file %s", MAINGUI_FXML));
+ ClassLoader cl = this.getClass().getClassLoader();
+ try {
+ Parent root = FXMLLoader.load(cl.getResource(MAINGUI_FXML));
+ primaryStage.setScene(new Scene(root));
+ primaryStage.setTitle("Image Tools");
+ primaryStage.setResizable(true);
+ primaryStage.show();
+ } catch (IOException ioe) {
+ String message = String.format("Unable to load FXML file: %s", MAINGUI_FXML);
+ ImageToolsException ite = new ImageToolsException(message, ioe);
+ logger.error(message, ioe);
+ throw ite;
+ } catch (Exception ex) {
+ String message = "An unhandled exception was thrown by the GUI";
+ ImageToolsException ite = new ImageToolsException(message, ex);
+ logger.error(message, ex);
+ throw ite;
+ }
+ }
}
diff --git a/src/main/java/com/sothr/imagetools/errors/ImageToolsException.java b/src/main/java/com/sothr/imagetools/errors/ImageToolsException.java
new file mode 100644
index 0000000..b935788
--- /dev/null
+++ b/src/main/java/com/sothr/imagetools/errors/ImageToolsException.java
@@ -0,0 +1,13 @@
+package com.sothr.imagetools.errors;
+
+/**
+ * Created by drew on 12/31/13.
+ */
+public class ImageToolsException extends Exception {
+
+ public ImageToolsException() { super(); }
+ public ImageToolsException(String message) { super(message); }
+ public ImageToolsException(String message, Throwable cause) { super(message, cause); }
+ public ImageToolsException(Throwable cause) { super(cause); }
+
+}
diff --git a/src/main/resources/fxml/mainapp/MainApp.fxml b/src/main/resources/fxml/mainapp/MainApp.fxml
new file mode 100644
index 0000000..927c8f8
--- /dev/null
+++ b/src/main/resources/fxml/mainapp/MainApp.fxml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+ printBtn.text = 'Click Me ' + controller.print() + '!';
+
+
\ No newline at end of file
diff --git a/src/main/scala/com/sothr/imagetools/ui/controller/AppController.scala b/src/main/scala/com/sothr/imagetools/ui/controller/AppController.scala
new file mode 100644
index 0000000..947ac8c
--- /dev/null
+++ b/src/main/scala/com/sothr/imagetools/ui/controller/AppController.scala
@@ -0,0 +1,19 @@
+package com.sothr.imagetools.ui.controller
+
+import javafx.fxml.Initializable
+import java.net.URL
+import java.util.ResourceBundle
+
+/**
+ * Created by drew on 12/31/13.
+ */
+class AppController extends Initializable {
+
+ def print():String = {
+ return "This method works";
+ }
+
+ def initialize(p1: URL, p2: ResourceBundle): Unit = {
+
+ }
+}