From d9b865f4094e6a919ee992f8643a64df6eb8a261 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Thu, 10 Aug 2017 18:55:01 +0200
Subject: [PATCH] Fixed #139 - Split fxml and controller files into individual
 packages and additional refractoring and cleanup

---
 .../budgetmaster/logic/utils/Helpers.java     | 39 ++++++++++++++-
 .../deadlocker8/budgetmaster/main/Main.java   |  9 ++--
 .../ui/cells/CategoryBudgetCell.java          |  2 +-
 .../budgetmaster/ui/cells/CategoryCell.java   | 17 +++----
 .../budgetmaster/ui/cells/PaymentCell.java    | 20 +++-----
 .../ui/{ => colorPick}/ColorView.java         |  4 +-
 .../{ => controller}/CategoryController.java  | 13 +++--
 .../ui/{ => controller}/ChartController.java  | 27 +++-------
 .../ui/{ => controller}/Controller.java       | 34 +++++--------
 .../ExportChartController.java                | 25 +++-------
 .../ui/{ => controller}/FilterController.java | 20 +++-----
 .../ui/{ => controller}/HomeController.java   | 11 ++--
 .../ui/{ => controller}/ModalController.java  |  2 +-
 .../NewCategoryController.java                | 35 +++----------
 .../NewPaymentController.java                 | 15 ++----
 .../{ => controller}/PaymentController.java   | 38 +++++---------
 .../ui/{ => controller}/ReportController.java | 50 +++++++++----------
 .../{ => controller}/SettingsController.java  |  3 +-
 .../SplashScreenController.java               | 13 ++---
 .../ui/{ => fxml}/CategoryTab.fxml            |  2 +-
 .../budgetmaster/ui/{ => fxml}/ChartTab.fxml  |  2 +-
 .../ui/{ => fxml}/ExportChartGUI.fxml         |  2 +-
 .../budgetmaster/ui/{ => fxml}/FilterGUI.fxml |  2 +-
 .../budgetmaster/ui/{ => fxml}/GUI.fxml       |  2 +-
 .../budgetmaster/ui/{ => fxml}/HomeTab.fxml   |  2 +-
 .../budgetmaster/ui/{ => fxml}/Modal.fxml     |  2 +-
 .../ui/{ => fxml}/NewCategoryGUI.fxml         |  2 +-
 .../ui/{ => fxml}/NewPaymentGUI.fxml          |  2 +-
 .../ui/{ => fxml}/PaymentTab.fxml             |  2 +-
 .../budgetmaster/ui/{ => fxml}/ReportTab.fxml |  2 +-
 .../ui/{ => fxml}/SettingsTab.fxml            |  2 +-
 .../ui/{ => fxml}/SplashScreen.fxml           |  2 +-
 32 files changed, 173 insertions(+), 230 deletions(-)
 rename src/de/deadlocker8/budgetmaster/ui/{ => colorPick}/ColorView.java (97%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => controller}/CategoryController.java (92%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => controller}/ChartController.java (92%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => controller}/Controller.java (92%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => controller}/ExportChartController.java (91%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => controller}/FilterController.java (89%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => controller}/HomeController.java (91%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => controller}/ModalController.java (85%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => controller}/NewCategoryController.java (78%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => controller}/NewPaymentController.java (97%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => controller}/PaymentController.java (88%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => controller}/ReportController.java (93%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => controller}/SettingsController.java (99%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => controller}/SplashScreenController.java (94%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => fxml}/CategoryTab.fxml (97%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => fxml}/ChartTab.fxml (99%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => fxml}/ExportChartGUI.fxml (98%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => fxml}/FilterGUI.fxml (98%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => fxml}/GUI.fxml (99%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => fxml}/HomeTab.fxml (98%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => fxml}/Modal.fxml (96%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => fxml}/NewCategoryGUI.fxml (97%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => fxml}/NewPaymentGUI.fxml (99%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => fxml}/PaymentTab.fxml (99%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => fxml}/ReportTab.fxml (99%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => fxml}/SettingsTab.fxml (99%)
 rename src/de/deadlocker8/budgetmaster/ui/{ => fxml}/SplashScreen.fxml (98%)

diff --git a/src/de/deadlocker8/budgetmaster/logic/utils/Helpers.java b/src/de/deadlocker8/budgetmaster/logic/utils/Helpers.java
index 79afb7987..1933a2fe1 100644
--- a/src/de/deadlocker8/budgetmaster/logic/utils/Helpers.java
+++ b/src/de/deadlocker8/budgetmaster/logic/utils/Helpers.java
@@ -8,11 +8,14 @@ import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 
-import de.deadlocker8.budgetmaster.ui.ModalController;
+import de.deadlocker8.budgetmaster.ui.controller.ModalController;
+import fontAwesome.FontIcon;
+import fontAwesome.FontIconType;
 import javafx.fxml.FXMLLoader;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
 import javafx.scene.image.Image;
+import javafx.scene.paint.Color;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 import logger.Logger;
@@ -85,11 +88,43 @@ public class Helpers
 		return years;
 	}
 	
+	public static ArrayList<Color> getCategoryColorList()
+	{
+	    ArrayList<Color> colors = new ArrayList<>();       
+        //grey (light to dark)      
+        colors.add(Color.web("#CCCCCC"));   
+        colors.add(Color.web("#888888"));       
+        colors.add(Color.web("#333333"));   
+        colors.add(Color.rgb(255, 241, 119));   //lighyellow    
+        colors.add(Color.rgb(255, 204, 0));     //yellow
+        colors.add(Color.rgb(255, 149, 0));     //orange
+        colors.add(Color.rgb(255, 59, 48));     //red
+        colors.add(Color.rgb(169, 3, 41));      //darkred   
+        colors.add(Color.rgb(255, 81, 151));    //pink
+        colors.add(Color.rgb(155, 89, 182));    //purple
+        colors.add(Color.rgb(88, 86, 214));     //darkpurple
+        colors.add(Color.rgb(0, 122, 250));     //blue      
+        colors.add(Color.rgb(90, 200, 250));    //lightblue
+        colors.add(Color.rgb(76, 217, 100));    //lightgreen
+        colors.add(Color.rgb(46, 124, 43));     //darkgreen
+        
+        return colors;
+	}
+	
+	public static FontIcon getFontIcon(FontIconType type, int size, Color color)
+	{
+	    FontIcon icon = new FontIcon(type);
+	    icon.setSize(size);
+	    icon.setColor(color);
+	    
+	    return icon;
+	}
+	
 	public static Stage showModal(String title, String message, Stage owner, Image icon)
 	{
 		try
 		{
-			FXMLLoader fxmlLoader = new FXMLLoader(Helpers.class.getResource("/de/deadlocker8/budgetmaster/ui/Modal.fxml"));
+			FXMLLoader fxmlLoader = new FXMLLoader(Helpers.class.getResource("/de/deadlocker8/budgetmaster/ui/fxml/Modal.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
 			newStage.initOwner(owner);
diff --git a/src/de/deadlocker8/budgetmaster/main/Main.java b/src/de/deadlocker8/budgetmaster/main/Main.java
index cd3555d26..30857a6e2 100644
--- a/src/de/deadlocker8/budgetmaster/main/Main.java
+++ b/src/de/deadlocker8/budgetmaster/main/Main.java
@@ -4,7 +4,7 @@ import java.io.File;
 import java.util.Locale;
 import java.util.ResourceBundle;
 
-import de.deadlocker8.budgetmaster.ui.SplashScreenController;
+import de.deadlocker8.budgetmaster.ui.controller.SplashScreenController;
 import javafx.application.Application;
 import javafx.fxml.FXMLLoader;
 import javafx.scene.Parent;
@@ -24,15 +24,16 @@ public class Main extends Application
 	{
 		try
 		{
-			FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("de/deadlocker8/budgetmaster/ui/SplashScreen.fxml"));
+		    Image icon = new Image("/de/deadlocker8/budgetmaster/resources/icon.png");
+			FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml"));
 			Parent root = (Parent)loader.load();
 			
 			Scene scene = new Scene(root, 450, 230);
 
-			((SplashScreenController)loader.getController()).init(stage, new Image("/de/deadlocker8/budgetmaster/resources/icon.png"), bundle);
+			((SplashScreenController)loader.getController()).init(stage, icon, bundle);
 
 			stage.setResizable(false);			
-			stage.getIcons().add(new Image("/de/deadlocker8/budgetmaster/resources/icon.png"));
+			stage.getIcons().add(icon);
 			stage.setTitle(bundle.getString("app.name"));
 			stage.setScene(scene);			
 			stage.show();
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
index b06fef967..11296797f 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryBudgetCell.java
@@ -2,7 +2,7 @@ package de.deadlocker8.budgetmaster.ui.cells;
 
 import de.deadlocker8.budgetmaster.logic.CategoryBudget;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
-import de.deadlocker8.budgetmaster.ui.HomeController;
+import de.deadlocker8.budgetmaster.ui.controller.HomeController;
 import javafx.geometry.Insets;
 import javafx.geometry.Pos;
 import javafx.scene.control.Label;
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryCell.java
index c81345ed2..3d4b91854 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/CategoryCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/CategoryCell.java
@@ -3,8 +3,8 @@ package de.deadlocker8.budgetmaster.ui.cells;
 import java.util.Optional;
 
 import de.deadlocker8.budgetmaster.logic.Category;
-import de.deadlocker8.budgetmaster.ui.CategoryController;
-import fontAwesome.FontIcon;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.ui.controller.CategoryController;
 import fontAwesome.FontIconType;
 import javafx.geometry.Insets;
 import javafx.geometry.Pos;
@@ -16,6 +16,7 @@ import javafx.scene.control.ListCell;
 import javafx.scene.layout.HBox;
 import javafx.scene.layout.Priority;
 import javafx.scene.layout.Region;
+import javafx.scene.paint.Color;
 import javafx.stage.Stage;
 import tools.ConvertTo;
 
@@ -60,10 +61,8 @@ public class CategoryCell extends ListCell<Category>
 			hbox.getChildren().add(r);
 			HBox.setHgrow(r, Priority.ALWAYS);
 			
-			Button buttonEdit = new Button();
-			FontIcon iconEdit = new FontIcon(FontIconType.PENCIL);
-			iconEdit.setSize(16);
-			buttonEdit.setGraphic(iconEdit);
+			Button buttonEdit = new Button();			
+			buttonEdit.setGraphic(Helpers.getFontIcon(FontIconType.PENCIL, 16, Color.web("#212121")));
 			buttonEdit.setPrefHeight(HEIGHT);					
 			buttonEdit.getStyleClass().add("greylabel");
 			buttonEdit.setStyle("-fx-background-color: transparent");
@@ -73,10 +72,8 @@ public class CategoryCell extends ListCell<Category>
 			hbox.getChildren().add(buttonEdit);
 			HBox.setMargin(buttonEdit, new Insets(0, 0, 0, 25));
 			
-			Button buttonDelete = new Button();
-			FontIcon iconDelete = new FontIcon(FontIconType.TRASH);
-			iconDelete.setSize(16);
-			buttonDelete.setGraphic(iconDelete);
+			Button buttonDelete = new Button();			
+			buttonDelete.setGraphic(Helpers.getFontIcon(FontIconType.TRASH, 16, Color.web("#212121")));
 			buttonDelete.setPrefHeight(HEIGHT);					
 			buttonDelete.getStyleClass().add("greylabel");
 			buttonDelete.setStyle("-fx-background-color: transparent");
diff --git a/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java b/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
index 13edac0e3..ce02969c7 100644
--- a/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
+++ b/src/de/deadlocker8/budgetmaster/ui/cells/PaymentCell.java
@@ -11,8 +11,7 @@ import de.deadlocker8.budgetmaster.logic.NormalPayment;
 import de.deadlocker8.budgetmaster.logic.Payment;
 import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
-import de.deadlocker8.budgetmaster.ui.PaymentController;
-import fontAwesome.FontIcon;
+import de.deadlocker8.budgetmaster.ui.controller.PaymentController;
 import fontAwesome.FontIconType;
 import javafx.geometry.Insets;
 import javafx.geometry.Pos;
@@ -73,18 +72,15 @@ public class PaymentCell extends ListCell<Payment>
 			labelDate.setMinWidth(75);
 			hbox.getChildren().add(labelDate);
 
-			FontIcon iconRepeating = new FontIcon(FontIconType.CALENDAR);
-			iconRepeating.setSize(20);
+			Label labelRepeating = new Label();
 			if(item instanceof RepeatingPaymentEntry)
-			{
-				iconRepeating.setColor(Color.web("#212121"));
+			{				
+				labelRepeating.setGraphic(Helpers.getFontIcon(FontIconType.CALENDAR, 20, Color.web("#212121")));
 			}
 			else
 			{
-				iconRepeating.setColor(Color.TRANSPARENT);
+			    labelRepeating.setGraphic(Helpers.getFontIcon(FontIconType.CALENDAR, 20, Color.TRANSPARENT));
 			}
-			Label labelRepeating = new Label();
-			labelRepeating.setGraphic(iconRepeating);
 			labelRepeating.setPrefHeight(HEIGHT);
 			labelRepeating.setStyle("-fx-font-weight: bold; -fx-font-size: 16; -fx-text-fill: #212121");
 			labelRepeating.setAlignment(Pos.CENTER);
@@ -141,10 +137,8 @@ public class PaymentCell extends ListCell<Payment>
 				labelBudget.setStyle("-fx-font-weight: bold; -fx-font-size: 16; -fx-text-fill: #CC0000");
 			}
 
-			Button buttonDelete = new Button();
-			FontIcon iconDelete = new FontIcon(FontIconType.TRASH);
-			iconDelete.setSize(16);
-			buttonDelete.setGraphic(iconDelete);
+			Button buttonDelete = new Button();			
+			buttonDelete.setGraphic(Helpers.getFontIcon(FontIconType.TRASH, 16, Color.web("#212121")));
 			buttonDelete.setPrefHeight(HEIGHT);
 			buttonDelete.getStyleClass().add("greylabel");
 			buttonDelete.setStyle("-fx-background-color: transparent");			
diff --git a/src/de/deadlocker8/budgetmaster/ui/ColorView.java b/src/de/deadlocker8/budgetmaster/ui/colorPick/ColorView.java
similarity index 97%
rename from src/de/deadlocker8/budgetmaster/ui/ColorView.java
rename to src/de/deadlocker8/budgetmaster/ui/colorPick/ColorView.java
index 9abaf1f94..a633cbe1e 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ColorView.java
+++ b/src/de/deadlocker8/budgetmaster/ui/colorPick/ColorView.java
@@ -1,9 +1,9 @@
-package de.deadlocker8.budgetmaster.ui;
+package de.deadlocker8.budgetmaster.ui.colorPick;
 
 import java.util.ArrayList;
 import java.util.function.Consumer;
 
-import de.deadlocker8.budgetmaster.ui.colorPick.ColorPickController;
+import de.deadlocker8.budgetmaster.ui.controller.NewCategoryController;
 import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
 import javafx.fxml.FXMLLoader;
diff --git a/src/de/deadlocker8/budgetmaster/ui/CategoryController.java b/src/de/deadlocker8/budgetmaster/ui/controller/CategoryController.java
similarity index 92%
rename from src/de/deadlocker8/budgetmaster/ui/CategoryController.java
rename to src/de/deadlocker8/budgetmaster/ui/controller/CategoryController.java
index 1c5e03bcb..5a03fcc22 100644
--- a/src/de/deadlocker8/budgetmaster/ui/CategoryController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/CategoryController.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.ui;
+package de.deadlocker8.budgetmaster.ui.controller;
 
 
 import java.io.IOException;
@@ -7,8 +7,9 @@ import java.util.ArrayList;
 import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.ui.Refreshable;
 import de.deadlocker8.budgetmaster.ui.cells.CategoryCell;
-import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
 import javafx.application.Platform;
 import javafx.beans.value.ChangeListener;
@@ -24,6 +25,7 @@ import javafx.scene.control.ListCell;
 import javafx.scene.control.ListView;
 import javafx.scene.input.MouseEvent;
 import javafx.scene.layout.AnchorPane;
+import javafx.scene.paint.Color;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 import javafx.util.Callback;
@@ -86,10 +88,7 @@ public class CategoryController implements Refreshable
 		labelPlaceholder.setStyle("-fx-font-size: 16");
 		listView.setPlaceholder(labelPlaceholder);
 
-		FontIcon iconCategory = new FontIcon(FontIconType.PLUS);
-		iconCategory.setSize(18);
-		iconCategory.setStyle("-fx-text-fill: white");
-		buttonCategory.setGraphic(iconCategory);
+		buttonCategory.setGraphic(Helpers.getFontIcon(FontIconType.PLUS, 18, Color.WHITE));
 
 		//apply theme
 		anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;");
@@ -123,7 +122,7 @@ public class CategoryController implements Refreshable
 	{
 		try
 		{
-			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/NewCategoryGUI.fxml"));
+			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/NewCategoryGUI.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
 			newStage.initOwner(controller.getStage());
diff --git a/src/de/deadlocker8/budgetmaster/ui/ChartController.java b/src/de/deadlocker8/budgetmaster/ui/controller/ChartController.java
similarity index 92%
rename from src/de/deadlocker8/budgetmaster/ui/ChartController.java
rename to src/de/deadlocker8/budgetmaster/ui/controller/ChartController.java
index 0d8ab2d69..ddd988279 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ChartController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/ChartController.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.ui;
+package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.io.File;
 import java.io.IOException;
@@ -18,7 +18,7 @@ import de.deadlocker8.budgetmaster.logic.charts.MonthLineChart;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
-import fontAwesome.FontIcon;
+import de.deadlocker8.budgetmaster.ui.Refreshable;
 import fontAwesome.FontIconType;
 import javafx.application.Platform;
 import javafx.collections.FXCollections;
@@ -79,29 +79,18 @@ public class ChartController implements Refreshable
 		vboxChartCategories.setStyle("-fx-background-color: #F4F4F4;");
 		vboxChartCategories.setSpacing(20);
 		vboxChartMonth.setStyle("-fx-background-color: #F4F4F4;");
-		FontIcon iconShow = new FontIcon(FontIconType.CHECK);
-		iconShow.setSize(16);
-		iconShow.setColor(Color.WHITE);
+		
 		buttonChartCategoriesShow.setStyle("-fx-background-color: #2E79B9;");
-		buttonChartCategoriesShow.setGraphic(iconShow);
+		buttonChartCategoriesShow.setGraphic(Helpers.getFontIcon(FontIconType.CHECK, 16, Color.WHITE));
 
-		FontIcon iconShow2 = new FontIcon(FontIconType.SAVE);
-		iconShow2.setSize(16);
-		iconShow2.setColor(Color.WHITE);
 		buttonChartCategoriesExport.setStyle("-fx-background-color: #2E79B9;");
-		buttonChartCategoriesExport.setGraphic(iconShow2);
+		buttonChartCategoriesExport.setGraphic(Helpers.getFontIcon(FontIconType.SAVE, 16, Color.WHITE));
 
-		FontIcon iconShow3 = new FontIcon(FontIconType.CHECK);
-		iconShow3.setSize(16);
-		iconShow3.setColor(Color.WHITE);
 		buttonChartMonthShow.setStyle("-fx-background-color: #2E79B9;");
-		buttonChartMonthShow.setGraphic(iconShow3);
+		buttonChartMonthShow.setGraphic(Helpers.getFontIcon(FontIconType.CHECK, 16, Color.WHITE));
 
-		FontIcon iconShow4 = new FontIcon(FontIconType.SAVE);
-		iconShow4.setSize(16);
-		iconShow4.setColor(Color.WHITE);
 		buttonChartMonthExport.setStyle("-fx-background-color: #2E79B9;");
-		buttonChartMonthExport.setGraphic(iconShow4);		
+		buttonChartMonthExport.setGraphic(Helpers.getFontIcon(FontIconType.SAVE, 16, Color.WHITE));		
 	
 		datePickerEnd.setDayCellFactory(new Callback<DatePicker, DateCell>()
 		{
@@ -204,7 +193,7 @@ public class ChartController implements Refreshable
 			Platform.runLater(() -> {
 				try
 				{
-					FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/ExportChartGUI.fxml"));
+					FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/ExportChartGUI.fxml"));
 					Parent root = (Parent)fxmlLoader.load();
 					Stage newStage = new Stage();
 					newStage.initOwner(controller.getStage());
diff --git a/src/de/deadlocker8/budgetmaster/ui/Controller.java b/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
similarity index 92%
rename from src/de/deadlocker8/budgetmaster/ui/Controller.java
rename to src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
index 2fa2e5b0f..5d78940b5 100644
--- a/src/de/deadlocker8/budgetmaster/ui/Controller.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/Controller.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.ui;
+package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -15,7 +15,6 @@ import de.deadlocker8.budgetmaster.logic.Settings;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
-import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
 import javafx.animation.FadeTransition;
 import javafx.animation.SequentialTransition;
@@ -31,6 +30,7 @@ import javafx.scene.control.Tab;
 import javafx.scene.control.TabPane;
 import javafx.scene.image.Image;
 import javafx.scene.layout.AnchorPane;
+import javafx.scene.paint.Color;
 import javafx.stage.Stage;
 import javafx.util.Duration;
 import logger.Logger;
@@ -92,25 +92,25 @@ public class Controller
 
 		try
 		{
-			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/HomeTab.fxml"));
+			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/HomeTab.fxml"));
 			Parent nodeTabHome = (Parent)fxmlLoader.load();
 			homeController = fxmlLoader.getController();
 			homeController.init(this);
 			tabHome.setContent(nodeTabHome);
 
-			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/PaymentTab.fxml"));
+			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/PaymentTab.fxml"));
 			Parent nodeTabPayment = (Parent)fxmlLoader.load();
 			paymentController = fxmlLoader.getController();
 			paymentController.init(this);
 			tabPayments.setContent(nodeTabPayment);
 
-			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/CategoryTab.fxml"));
+			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/CategoryTab.fxml"));
 			Parent nodeTabCategory = (Parent)fxmlLoader.load();
 			categoryController = fxmlLoader.getController();
 			categoryController.init(this);
 			tabCategories.setContent(nodeTabCategory);
 
-			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/ChartTab.fxml"));
+			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/ChartTab.fxml"));
 			Parent nodeTabChart = (Parent)fxmlLoader.load();
 			chartController = fxmlLoader.getController();
 			chartController.init(this);
@@ -122,13 +122,13 @@ public class Controller
 				}
 			});
 			
-			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/ReportTab.fxml"));
+			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/ReportTab.fxml"));
 			Parent nodeTabReport = (Parent)fxmlLoader.load();
 			reportController = fxmlLoader.getController();
 			reportController.init(this);
 			tabReports.setContent(nodeTabReport);
 
-			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/SettingsTab.fxml"));
+			fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/SettingsTab.fxml"));
 			Parent nodeTabSettings = (Parent)fxmlLoader.load();
 			settingsController = fxmlLoader.getController();
 			settingsController.init(this);
@@ -141,19 +141,11 @@ public class Controller
 				AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Erstellen der Benutzeroberfläche ist ein Fehler aufgetreten", icon, stage, null, false);
 			});			
 		}
-
-		FontIcon iconPrevious = new FontIcon(FontIconType.CHEVRON_LEFT);
-		iconPrevious.setSize(20);
-		buttonLeft.setGraphic(iconPrevious);
-		FontIcon iconNext = new FontIcon(FontIconType.CHEVRON_RIGHT);
-		iconNext.setSize(20);
-		buttonRight.setGraphic(iconNext);
-		FontIcon iconToday = new FontIcon(FontIconType.CALENDAR_ALT);
-		iconToday.setSize(20);
-		buttonToday.setGraphic(iconToday);
-		FontIcon iconAbout = new FontIcon(FontIconType.INFO);
-		iconAbout.setSize(20);
-		buttonAbout.setGraphic(iconAbout);
+		
+		buttonLeft.setGraphic(Helpers.getFontIcon(FontIconType.CHEVRON_LEFT, 20, Color.web(bundle.getString("color.text"))));		
+		buttonRight.setGraphic(Helpers.getFontIcon(FontIconType.CHEVRON_RIGHT, 20, Color.web(bundle.getString("color.text"))));		
+		buttonToday.setGraphic(Helpers.getFontIcon(FontIconType.CALENDAR_ALT, 20, Color.web(bundle.getString("color.text"))));		
+		buttonAbout.setGraphic(Helpers.getFontIcon(FontIconType.INFO, 20, Color.web(bundle.getString("color.text"))));
 
 		// apply theme
 		anchorPaneMain.setStyle("-fx-background-color: #DDDDDD");
diff --git a/src/de/deadlocker8/budgetmaster/ui/ExportChartController.java b/src/de/deadlocker8/budgetmaster/ui/controller/ExportChartController.java
similarity index 91%
rename from src/de/deadlocker8/budgetmaster/ui/ExportChartController.java
rename to src/de/deadlocker8/budgetmaster/ui/controller/ExportChartController.java
index 3b25804ae..14e7cc02e 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ExportChartController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/ExportChartController.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.ui;
+package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.awt.Desktop;
 import java.io.File;
@@ -8,7 +8,7 @@ import java.util.Optional;
 import javax.imageio.ImageIO;
 
 import de.deadlocker8.budgetmaster.logic.charts.ChartExportable;
-import fontAwesome.FontIcon;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import fontAwesome.FontIconType;
 import javafx.embed.swing.SwingFXUtils;
 import javafx.fxml.FXML;
@@ -57,25 +57,16 @@ public class ExportChartController
 		textFieldWidth.setText(String.valueOf((int)chart.getSuggestedWidth()));
 		textFieldHeight.setText(String.valueOf((int)chart.getSuggestedHeight()));
 
-		anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;");
-		
-		FontIcon iconShow = new FontIcon(FontIconType.FOLDER_OPEN);
-		iconShow.setSize(14);
-		iconShow.setColor(Color.WHITE);
+		anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;");		
+	
 		buttonChooseFile.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
-		buttonChooseFile.setGraphic(iconShow);
-
-		FontIcon iconShow2 = new FontIcon(FontIconType.SAVE);
-		iconShow2.setSize(14);
-		iconShow2.setColor(Color.WHITE);
+		buttonChooseFile.setGraphic(Helpers.getFontIcon(FontIconType.FOLDER_OPEN, 14, Color.WHITE));
+		
 		buttonExport.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
-		buttonExport.setGraphic(iconShow2);
+		buttonExport.setGraphic(Helpers.getFontIcon(FontIconType.SAVE, 14, Color.WHITE));
 
-		FontIcon iconShow3 = new FontIcon(FontIconType.TIMES);
-		iconShow3.setSize(14);
-		iconShow3.setColor(Color.WHITE);
 		buttonCancel.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 14;");
-		buttonCancel.setGraphic(iconShow3);		
+		buttonCancel.setGraphic(Helpers.getFontIcon(FontIconType.TIMES, 14, Color.WHITE));		
 		
 		textFieldWidth.setTextFormatter(new TextFormatter<>(c -> {
 			if(c.getControlNewText().isEmpty())
diff --git a/src/de/deadlocker8/budgetmaster/ui/FilterController.java b/src/de/deadlocker8/budgetmaster/ui/controller/FilterController.java
similarity index 89%
rename from src/de/deadlocker8/budgetmaster/ui/FilterController.java
rename to src/de/deadlocker8/budgetmaster/ui/controller/FilterController.java
index 504610f91..c264a28ba 100644
--- a/src/de/deadlocker8/budgetmaster/ui/FilterController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/FilterController.java
@@ -1,10 +1,10 @@
-package de.deadlocker8.budgetmaster.ui;
+package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.util.ArrayList;
 
 import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.FilterSettings;
-import fontAwesome.FontIcon;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import fontAwesome.FontIconType;
 import javafx.fxml.FXML;
 import javafx.scene.Node;
@@ -12,6 +12,7 @@ import javafx.scene.control.Button;
 import javafx.scene.control.CheckBox;
 import javafx.scene.control.TextField;
 import javafx.scene.layout.VBox;
+import javafx.scene.paint.Color;
 import javafx.stage.Stage;
 
 public class FilterController
@@ -39,18 +40,9 @@ public class FilterController
 		this.controller = controller;
 		this.filterSetttings = filterSettings;
 
-		FontIcon iconCancel = new FontIcon(FontIconType.TIMES);
-		iconCancel.setSize(17);
-		iconCancel.setStyle("-fx-text-fill: white");
-		buttonCancel.setGraphic(iconCancel);
-		FontIcon iconReset = new FontIcon(FontIconType.UNDO);
-		iconReset.setSize(17);
-		iconReset.setStyle("-fx-text-fill: white");
-		buttonReset.setGraphic(iconReset);
-		FontIcon iconSave = new FontIcon(FontIconType.FILTER);
-		iconSave.setSize(17);
-		iconSave.setStyle("-fx-text-fill: white");
-		buttonFilter.setGraphic(iconSave);
+		buttonCancel.setGraphic(Helpers.getFontIcon(FontIconType.TIMES, 17, Color.WHITE));
+		buttonReset.setGraphic(Helpers.getFontIcon(FontIconType.UNDO, 17, Color.WHITE));		
+		buttonFilter.setGraphic(Helpers.getFontIcon(FontIconType.FILTER, 17, Color.WHITE));
 
 		buttonCancel.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
 		buttonReset.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
diff --git a/src/de/deadlocker8/budgetmaster/ui/HomeController.java b/src/de/deadlocker8/budgetmaster/ui/controller/HomeController.java
similarity index 91%
rename from src/de/deadlocker8/budgetmaster/ui/HomeController.java
rename to src/de/deadlocker8/budgetmaster/ui/controller/HomeController.java
index feb5c9899..5a8dcb30e 100644
--- a/src/de/deadlocker8/budgetmaster/ui/HomeController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/HomeController.java
@@ -1,10 +1,11 @@
-package de.deadlocker8.budgetmaster.ui;
+package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.util.ArrayList;
 
 import de.deadlocker8.budgetmaster.logic.Budget;
 import de.deadlocker8.budgetmaster.logic.CategoryBudget;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.ui.Refreshable;
 import de.deadlocker8.budgetmaster.ui.cells.CategoryBudgetCell;
 import javafx.application.Platform;
 import javafx.beans.value.ChangeListener;
@@ -40,6 +41,10 @@ public class HomeController implements Refreshable
 				return new CategoryBudgetCell(thisController);
 			}
 		});
+		
+		Label labelPlaceholder = new Label("Keine Daten verfügbar");          
+        labelPlaceholder.setStyle("-fx-font-size: 16");
+        listView.setPlaceholder(labelPlaceholder);
 
 		listView.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>()
 		{
@@ -112,9 +117,5 @@ public class HomeController implements Refreshable
 	{
 		refreshListView();	
 		refreshCounter();
-		
-		Label labelPlaceholder = new Label("Keine Daten verfügbar");			
-		labelPlaceholder.setStyle("-fx-font-size: 16");
-		listView.setPlaceholder(labelPlaceholder);
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/ui/ModalController.java b/src/de/deadlocker8/budgetmaster/ui/controller/ModalController.java
similarity index 85%
rename from src/de/deadlocker8/budgetmaster/ui/ModalController.java
rename to src/de/deadlocker8/budgetmaster/ui/controller/ModalController.java
index 042c7345a..d86c8cbc3 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ModalController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/ModalController.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.ui;
+package de.deadlocker8.budgetmaster.ui.controller;
 
 import javafx.fxml.FXML;
 import javafx.scene.control.Label;
diff --git a/src/de/deadlocker8/budgetmaster/ui/NewCategoryController.java b/src/de/deadlocker8/budgetmaster/ui/controller/NewCategoryController.java
similarity index 78%
rename from src/de/deadlocker8/budgetmaster/ui/NewCategoryController.java
rename to src/de/deadlocker8/budgetmaster/ui/controller/NewCategoryController.java
index 54070e374..6b08ff5df 100644
--- a/src/de/deadlocker8/budgetmaster/ui/NewCategoryController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/NewCategoryController.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.ui;
+package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.util.ArrayList;
 
@@ -8,7 +8,8 @@ import org.controlsfx.control.PopOver.ArrowLocation;
 import de.deadlocker8.budgetmaster.logic.Category;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
-import fontAwesome.FontIcon;
+import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.ui.colorPick.ColorView;
 import fontAwesome.FontIconType;
 import javafx.fxml.FXML;
 import javafx.scene.control.Alert.AlertType;
@@ -44,15 +45,9 @@ public class NewCategoryController
 		this.edit = edit;
 		this.color = null;
 		this.category = category;
-
-		FontIcon iconCancel = new FontIcon(FontIconType.TIMES);
-		iconCancel.setSize(17);
-		iconCancel.setStyle("-fx-text-fill: white");
-		buttonCancel.setGraphic(iconCancel);
-		FontIcon iconSave = new FontIcon(FontIconType.SAVE);
-		iconSave.setSize(17);
-		iconSave.setStyle("-fx-text-fill: white");
-		buttonSave.setGraphic(iconSave);
+	
+		buttonCancel.setGraphic(Helpers.getFontIcon(FontIconType.TIMES, 17, Color.WHITE));		
+		buttonSave.setGraphic(Helpers.getFontIcon(FontIconType.SAVE, 17, Color.WHITE));
 
 		buttonCancel.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
 		buttonSave.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
@@ -60,23 +55,7 @@ public class NewCategoryController
 		
 		buttonColor.prefWidthProperty().bind(textFieldName.widthProperty());
 		
-		ArrayList<Color> colors = new ArrayList<>();		
-		//grey (light to dark)		
-		colors.add(Color.web("#CCCCCC"));	
-		colors.add(Color.web("#888888"));		
-		colors.add(Color.web("#333333"));	
-		colors.add(Color.rgb(255, 241, 119));	//lighyellow	
-		colors.add(Color.rgb(255, 204, 0));		//yellow
-		colors.add(Color.rgb(255, 149, 0)); 	//orange
-		colors.add(Color.rgb(255, 59, 48));		//red
-		colors.add(Color.rgb(169, 3, 41));		//darkred	
-		colors.add(Color.rgb(255, 81, 151));	//pink
-		colors.add(Color.rgb(155, 89, 182));	//purple
-		colors.add(Color.rgb(88, 86, 214));		//darkpurple
-		colors.add(Color.rgb(0, 122, 250));		//blue		
-		colors.add(Color.rgb(90, 200, 250));	//lightblue
-		colors.add(Color.rgb(76, 217, 100));	//lightgreen
-		colors.add(Color.rgb(46, 124, 43));		//darkgreen
+		ArrayList<Color> colors = Helpers.getCategoryColorList();
 		
 		buttonColor.setOnMouseClicked((e) -> {
 
diff --git a/src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java b/src/de/deadlocker8/budgetmaster/ui/controller/NewPaymentController.java
similarity index 97%
rename from src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java
rename to src/de/deadlocker8/budgetmaster/ui/controller/NewPaymentController.java
index 2ba2285b1..51031c0f7 100644
--- a/src/de/deadlocker8/budgetmaster/ui/NewPaymentController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/NewPaymentController.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.ui;
+package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.time.LocalDate;
 import java.util.ArrayList;
@@ -16,7 +16,6 @@ import de.deadlocker8.budgetmaster.logic.utils.Helpers;
 import de.deadlocker8.budgetmaster.ui.cells.ButtonCategoryCell;
 import de.deadlocker8.budgetmaster.ui.cells.RepeatingDayCell;
 import de.deadlocker8.budgetmaster.ui.cells.SmallCategoryCell;
-import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
 import javafx.fxml.FXML;
 import javafx.scene.control.Alert.AlertType;
@@ -71,15 +70,9 @@ public class NewPaymentController
 		this.isPayment = isPayment;
 		this.edit = edit;
 		this.payment = payment;
-
-		FontIcon iconCancel = new FontIcon(FontIconType.TIMES);
-		iconCancel.setSize(17);
-		iconCancel.setStyle("-fx-text-fill: white");
-		buttonCancel.setGraphic(iconCancel);
-		FontIcon iconSave = new FontIcon(FontIconType.SAVE);
-		iconSave.setSize(17);
-		iconSave.setStyle("-fx-text-fill: white");
-		buttonSave.setGraphic(iconSave);
+		
+		buttonCancel.setGraphic(Helpers.getFontIcon(FontIconType.TIMES, 17, Color.WHITE));
+		buttonSave.setGraphic(Helpers.getFontIcon(FontIconType.SAVE, 17, Color.WHITE));
 
 		buttonCancel.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
 		buttonSave.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 15;");
diff --git a/src/de/deadlocker8/budgetmaster/ui/PaymentController.java b/src/de/deadlocker8/budgetmaster/ui/controller/PaymentController.java
similarity index 88%
rename from src/de/deadlocker8/budgetmaster/ui/PaymentController.java
rename to src/de/deadlocker8/budgetmaster/ui/controller/PaymentController.java
index 272e133d7..634a08e0e 100644
--- a/src/de/deadlocker8/budgetmaster/ui/PaymentController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/PaymentController.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.ui;
+package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -12,8 +12,8 @@ import de.deadlocker8.budgetmaster.logic.RepeatingPaymentEntry;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ExceptionHandler;
 import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
+import de.deadlocker8.budgetmaster.ui.Refreshable;
 import de.deadlocker8.budgetmaster.ui.cells.PaymentCell;
-import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
 import javafx.application.Platform;
 import javafx.beans.value.ChangeListener;
@@ -29,6 +29,7 @@ import javafx.scene.control.ListCell;
 import javafx.scene.control.ListView;
 import javafx.scene.input.MouseEvent;
 import javafx.scene.layout.AnchorPane;
+import javafx.scene.paint.Color;
 import javafx.stage.Modality;
 import javafx.stage.Stage;
 import javafx.util.Callback;
@@ -79,6 +80,10 @@ public class PaymentController implements Refreshable
 				return cell;
 			}
 		});
+		
+		Label labelPlaceholder = new Label("Keine Daten verfügbar");      
+        labelPlaceholder.setStyle("-fx-font-size: 16");
+        listView.setPlaceholder(labelPlaceholder);
 
 		listView.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>()
 		{
@@ -95,23 +100,10 @@ public class PaymentController implements Refreshable
 			}
 		});
 
-		FontIcon iconIncome = new FontIcon(FontIconType.DOWNLOAD);
-		iconIncome.setSize(18);
-		iconIncome.setStyle("-fx-text-fill: white");
-		buttonNewIncome.setGraphic(iconIncome);
-		FontIcon iconFilter = new FontIcon(FontIconType.FILTER);
-		iconFilter.setSize(18);
-		iconFilter.setStyle("-fx-text-fill: white");
-		buttonFilter.setGraphic(iconFilter);
-		FontIcon iconPayment = new FontIcon(FontIconType.UPLOAD);
-		iconPayment.setSize(18);
-		iconPayment.setStyle("-fx-text-fill: white");
-		buttonNewPayment.setGraphic(iconPayment);
-		
-		FontIcon iconWarning = new FontIcon(FontIconType.WARNING);
-		iconWarning.setSize(13);
-		iconWarning.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text"));
-		labelFilterActive.setGraphic(iconWarning);
+		buttonNewIncome.setGraphic(Helpers.getFontIcon(FontIconType.DOWNLOAD, 18, Color.WHITE));
+		buttonFilter.setGraphic(Helpers.getFontIcon(FontIconType.FILTER, 18, Color.WHITE));
+		buttonNewPayment.setGraphic(Helpers.getFontIcon(FontIconType.UPLOAD, 18, Color.WHITE));
+		labelFilterActive.setGraphic(Helpers.getFontIcon(FontIconType.WARNING, 13, Color.web(controller.getBundle().getString("color.text"))));
 
 		// apply theme
 		anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;");
@@ -141,7 +133,7 @@ public class PaymentController implements Refreshable
 	{
 		try
 		{
-			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/NewPaymentGUI.fxml"));
+			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
 			newStage.initOwner(controller.getStage());
@@ -248,7 +240,7 @@ public class PaymentController implements Refreshable
 	{
 		try
 		{
-			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/FilterGUI.fxml"));
+			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
 			newStage.initOwner(controller.getStage());
@@ -286,9 +278,5 @@ public class PaymentController implements Refreshable
 		{
 			labelFilterActive.setVisible(true);
 		}
-
-		Label labelPlaceholder = new Label("Keine Daten verfügbar");		
-		labelPlaceholder.setStyle("-fx-font-size: 16");
-		listView.setPlaceholder(labelPlaceholder);
 	}
 }
\ No newline at end of file
diff --git a/src/de/deadlocker8/budgetmaster/ui/ReportController.java b/src/de/deadlocker8/budgetmaster/ui/controller/ReportController.java
similarity index 93%
rename from src/de/deadlocker8/budgetmaster/ui/ReportController.java
rename to src/de/deadlocker8/budgetmaster/ui/controller/ReportController.java
index a0fe17c09..4790ea4e2 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ReportController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/ReportController.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.ui;
+package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.awt.Desktop;
 import java.io.File;
@@ -20,7 +20,7 @@ import de.deadlocker8.budgetmaster.logic.report.ColumnType;
 import de.deadlocker8.budgetmaster.logic.report.ReportGenerator;
 import de.deadlocker8.budgetmaster.logic.report.ReportItem;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
-import fontAwesome.FontIcon;
+import de.deadlocker8.budgetmaster.ui.Refreshable;
 import fontAwesome.FontIconType;
 import javafx.application.Platform;
 import javafx.beans.property.SimpleStringProperty;
@@ -74,18 +74,9 @@ public class ReportController implements Refreshable
 	{
 		this.controller = controller;
 
-		FontIcon iconFilter = new FontIcon(FontIconType.FILTER);
-		iconFilter.setSize(18);
-		iconFilter.setStyle("-fx-text-fill: white");
-		buttonFilter.setGraphic(iconFilter);
-		FontIcon iconPayment = new FontIcon(FontIconType.COGS);
-		iconPayment.setSize(18);
-		iconPayment.setStyle("-fx-text-fill: white");
-		buttonGenerate.setGraphic(iconPayment);
-		FontIcon iconWarning = new FontIcon(FontIconType.WARNING);
-		iconWarning.setSize(13);
-		iconWarning.setStyle("-fx-text-fill: " + controller.getBundle().getString("color.text"));
-		labelFilterActive.setGraphic(iconWarning);
+		buttonFilter.setGraphic(Helpers.getFontIcon(FontIconType.FILTER, 18, Color.WHITE));		
+		buttonGenerate.setGraphic(Helpers.getFontIcon(FontIconType.COGS, 18, Color.WHITE));	
+		labelFilterActive.setGraphic(Helpers.getFontIcon(FontIconType.WARNING, 16, Color.web(controller.getBundle().getString("color.text"))));
 		
 		initTable();
 
@@ -191,14 +182,16 @@ public class ReportController implements Refreshable
                     public void updateItem(Boolean item, boolean empty)
                     {
                         if(!empty)
-                        {                           
-                            FontIcon iconRepeating = new FontIcon(FontIconType.CALENDAR);
-                            iconRepeating.setSize(16);                          
-                            Color color = item ? Color.web("#212121") : Color.TRANSPARENT;
-                            iconRepeating.setColor(color);
-                            
+                        {   
                             Label labelRepeating = new Label();
-                            labelRepeating.setGraphic(iconRepeating);
+                            if(item)
+                            {
+                                labelRepeating.setGraphic(Helpers.getFontIcon(FontIconType.CALENDAR, 16, Color.web(controller.getBundle().getString("color.text"))));
+                            }
+                            else
+                            {
+                                labelRepeating.setGraphic(Helpers.getFontIcon(FontIconType.CALENDAR, 16, Color.TRANSPARENT));
+                            }                            
                             labelRepeating.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #212121");
                             labelRepeating.setAlignment(Pos.CENTER);
                             setGraphic(labelRepeating);
@@ -345,12 +338,15 @@ public class ReportController implements Refreshable
                     {
                         if(!empty)
                         {                               
-                            FontIcon iconRepeating = item > 0 ? new FontIcon(FontIconType.PLUS) : new FontIcon(FontIconType.MINUS);                     
-                            iconRepeating.setSize(14);
-                            iconRepeating.setColor(Color.web("#212121"));
-                            
                             Label labelRepeating = new Label();
-                            labelRepeating.setGraphic(iconRepeating);
+                            if(item > 0)
+                            {
+                                labelRepeating.setGraphic(Helpers.getFontIcon(FontIconType.PLUS, 14, Color.web(controller.getBundle().getString("color.text"))));
+                            }
+                            else
+                            {
+                                labelRepeating.setGraphic(Helpers.getFontIcon(FontIconType.MINUS, 14, Color.web(controller.getBundle().getString("color.text"))));
+                            }
                             labelRepeating.setStyle("-fx-font-weight: bold; -fx-font-size: 14; -fx-text-fill: #212121");
                             labelRepeating.setAlignment(Pos.CENTER);
                             setGraphic(labelRepeating);
@@ -452,7 +448,7 @@ public class ReportController implements Refreshable
 	{
 		try
 		{
-			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/FilterGUI.fxml"));
+			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
 			newStage.initOwner(controller.getStage());
diff --git a/src/de/deadlocker8/budgetmaster/ui/SettingsController.java b/src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java
similarity index 99%
rename from src/de/deadlocker8/budgetmaster/ui/SettingsController.java
rename to src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java
index 159c37cc1..34993a4d6 100644
--- a/src/de/deadlocker8/budgetmaster/ui/SettingsController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/SettingsController.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.ui;
+package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.io.File;
 import java.io.IOException;
@@ -163,7 +163,6 @@ public class SettingsController
 		{
 			if(!clientSecret.equals("******"))
 			{
-				System.out.println(clientSecret);
 				controller.getSettings().setClientSecret(HashUtils.hash(clientSecret, Helpers.SALT));
 			}
 			
diff --git a/src/de/deadlocker8/budgetmaster/ui/SplashScreenController.java b/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
similarity index 94%
rename from src/de/deadlocker8/budgetmaster/ui/SplashScreenController.java
rename to src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
index b40112b62..5c2efed54 100644
--- a/src/de/deadlocker8/budgetmaster/ui/SplashScreenController.java
+++ b/src/de/deadlocker8/budgetmaster/ui/controller/SplashScreenController.java
@@ -1,4 +1,4 @@
-package de.deadlocker8.budgetmaster.ui;
+package de.deadlocker8.budgetmaster.ui.controller;
 
 import java.io.IOException;
 import java.util.ResourceBundle;
@@ -6,7 +6,6 @@ import java.util.ResourceBundle;
 import de.deadlocker8.budgetmaster.logic.Settings;
 import de.deadlocker8.budgetmaster.logic.utils.FileHelper;
 import de.deadlocker8.budgetmaster.logic.utils.Helpers;
-import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
 import javafx.application.Platform;
 import javafx.fxml.FXML;
@@ -21,6 +20,7 @@ import javafx.scene.control.PasswordField;
 import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
 import javafx.scene.input.KeyCode;
+import javafx.scene.paint.Color;
 import javafx.stage.Stage;
 import logger.Logger;
 import tools.AlertGenerator;
@@ -48,11 +48,8 @@ public class SplashScreenController
 		imageViewLogo.setImage(icon);
 		
 		labelVersion.setText("v" + bundle.getString("version.name"));
-		
-		FontIcon iconLogin = new FontIcon(FontIconType.SIGN_IN);
-		iconLogin.setSize(18);
-		iconLogin.setStyle("-fx-text-fill: white");
-		buttonLogin.setGraphic(iconLogin);
+	
+		buttonLogin.setGraphic(Helpers.getFontIcon(FontIconType.SIGN_IN, 18, Color.WHITE));
 		buttonLogin.setStyle("-fx-background-color: #2E79B9; -fx-text-fill: white; -fx-font-weight: bold; -fx-font-size: 16;");
 		buttonLogin.setPadding(new Insets(3, 7, 3, 7));		
 		
@@ -134,7 +131,7 @@ public class SplashScreenController
 	{
 		try
 		{
-			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/GUI.fxml"));
+			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/budgetmaster/ui/fxml/GUI.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
 			newStage.setTitle(bundle.getString("app.name"));
diff --git a/src/de/deadlocker8/budgetmaster/ui/CategoryTab.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/CategoryTab.fxml
similarity index 97%
rename from src/de/deadlocker8/budgetmaster/ui/CategoryTab.fxml
rename to src/de/deadlocker8/budgetmaster/ui/fxml/CategoryTab.fxml
index 39c008340..308c45777 100644
--- a/src/de/deadlocker8/budgetmaster/ui/CategoryTab.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/CategoryTab.fxml
@@ -7,7 +7,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.CategoryController">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.CategoryController">
    <children>
       <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0">
          <children>
diff --git a/src/de/deadlocker8/budgetmaster/ui/ChartTab.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/ChartTab.fxml
similarity index 99%
rename from src/de/deadlocker8/budgetmaster/ui/ChartTab.fxml
rename to src/de/deadlocker8/budgetmaster/ui/fxml/ChartTab.fxml
index 58380127a..608f46d85 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ChartTab.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/ChartTab.fxml
@@ -13,7 +13,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.ChartController">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.ChartController">
    <children>
       <Accordion fx:id="accordion" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0">
         <panes>
diff --git a/src/de/deadlocker8/budgetmaster/ui/ExportChartGUI.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/ExportChartGUI.fxml
similarity index 98%
rename from src/de/deadlocker8/budgetmaster/ui/ExportChartGUI.fxml
rename to src/de/deadlocker8/budgetmaster/ui/fxml/ExportChartGUI.fxml
index 2cf04b071..1b0ad1292 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ExportChartGUI.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/ExportChartGUI.fxml
@@ -9,7 +9,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="200.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.ExportChartController">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="200.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.ExportChartController">
    <children>
       <VBox AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
          <children>
diff --git a/src/de/deadlocker8/budgetmaster/ui/FilterGUI.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml
similarity index 98%
rename from src/de/deadlocker8/budgetmaster/ui/FilterGUI.fxml
rename to src/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml
index 643fd670e..9d3e61437 100644
--- a/src/de/deadlocker8/budgetmaster/ui/FilterGUI.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/FilterGUI.fxml
@@ -12,7 +12,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane prefHeight="600.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.FilterController">
+<AnchorPane prefHeight="600.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.FilterController">
    <children>
       <VBox prefHeight="273.0" prefWidth="465.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
          <children>
diff --git a/src/de/deadlocker8/budgetmaster/ui/GUI.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/GUI.fxml
similarity index 99%
rename from src/de/deadlocker8/budgetmaster/ui/GUI.fxml
rename to src/de/deadlocker8/budgetmaster/ui/fxml/GUI.fxml
index 549a7e45e..f6f3815ef 100644
--- a/src/de/deadlocker8/budgetmaster/ui/GUI.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/GUI.fxml
@@ -12,7 +12,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.Controller">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.Controller">
    <children>
       <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="15.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="14.0">
          <children>
diff --git a/src/de/deadlocker8/budgetmaster/ui/HomeTab.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/HomeTab.fxml
similarity index 98%
rename from src/de/deadlocker8/budgetmaster/ui/HomeTab.fxml
rename to src/de/deadlocker8/budgetmaster/ui/fxml/HomeTab.fxml
index 014498904..77674f01c 100644
--- a/src/de/deadlocker8/budgetmaster/ui/HomeTab.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/HomeTab.fxml
@@ -8,7 +8,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.HomeController">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.HomeController">
    <children>
       <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="15.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
          <children>
diff --git a/src/de/deadlocker8/budgetmaster/ui/Modal.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/Modal.fxml
similarity index 96%
rename from src/de/deadlocker8/budgetmaster/ui/Modal.fxml
rename to src/de/deadlocker8/budgetmaster/ui/fxml/Modal.fxml
index 33759ff9b..846a76e2b 100644
--- a/src/de/deadlocker8/budgetmaster/ui/Modal.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/Modal.fxml
@@ -6,7 +6,7 @@
 <?import javafx.scene.layout.HBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="100.0" prefWidth="375.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.ModalController">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="100.0" prefWidth="375.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.ModalController">
    <children>
       <HBox alignment="CENTER_LEFT" spacing="10.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
          <children>
diff --git a/src/de/deadlocker8/budgetmaster/ui/NewCategoryGUI.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/NewCategoryGUI.fxml
similarity index 97%
rename from src/de/deadlocker8/budgetmaster/ui/NewCategoryGUI.fxml
rename to src/de/deadlocker8/budgetmaster/ui/fxml/NewCategoryGUI.fxml
index 203d4acb8..0bb2bb676 100644
--- a/src/de/deadlocker8/budgetmaster/ui/NewCategoryGUI.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/NewCategoryGUI.fxml
@@ -9,7 +9,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane prefHeight="180.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.NewCategoryController">
+<AnchorPane prefHeight="180.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.NewCategoryController">
    <children>
       <VBox prefHeight="273.0" prefWidth="465.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
          <children>
diff --git a/src/de/deadlocker8/budgetmaster/ui/NewPaymentGUI.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml
similarity index 99%
rename from src/de/deadlocker8/budgetmaster/ui/NewPaymentGUI.fxml
rename to src/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml
index 31366e41d..59b546bdf 100644
--- a/src/de/deadlocker8/budgetmaster/ui/NewPaymentGUI.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/NewPaymentGUI.fxml
@@ -16,7 +16,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane prefHeight="600.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.NewPaymentController">
+<AnchorPane prefHeight="600.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.NewPaymentController">
    <children>
       <VBox prefHeight="273.0" prefWidth="465.0" spacing="20.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
          <children>
diff --git a/src/de/deadlocker8/budgetmaster/ui/PaymentTab.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/PaymentTab.fxml
similarity index 99%
rename from src/de/deadlocker8/budgetmaster/ui/PaymentTab.fxml
rename to src/de/deadlocker8/budgetmaster/ui/fxml/PaymentTab.fxml
index 6222f5e8f..ede86bb05 100644
--- a/src/de/deadlocker8/budgetmaster/ui/PaymentTab.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/PaymentTab.fxml
@@ -10,7 +10,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.PaymentController">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.PaymentController">
    <children>
       <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0">
          <children>
diff --git a/src/de/deadlocker8/budgetmaster/ui/ReportTab.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/ReportTab.fxml
similarity index 99%
rename from src/de/deadlocker8/budgetmaster/ui/ReportTab.fxml
rename to src/de/deadlocker8/budgetmaster/ui/fxml/ReportTab.fxml
index 7896f7852..ab291d656 100644
--- a/src/de/deadlocker8/budgetmaster/ui/ReportTab.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/ReportTab.fxml
@@ -10,7 +10,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.ReportController">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.ReportController">
    <children>
       <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="20.0" AnchorPane.bottomAnchor="35.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0">
          <children>
diff --git a/src/de/deadlocker8/budgetmaster/ui/SettingsTab.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/SettingsTab.fxml
similarity index 99%
rename from src/de/deadlocker8/budgetmaster/ui/SettingsTab.fxml
rename to src/de/deadlocker8/budgetmaster/ui/fxml/SettingsTab.fxml
index ef7cf9648..29b7eeb2e 100644
--- a/src/de/deadlocker8/budgetmaster/ui/SettingsTab.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/SettingsTab.fxml
@@ -12,7 +12,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.SettingsController">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.SettingsController">
    <children>
       <VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0">
          <children>
diff --git a/src/de/deadlocker8/budgetmaster/ui/SplashScreen.fxml b/src/de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml
similarity index 98%
rename from src/de/deadlocker8/budgetmaster/ui/SplashScreen.fxml
rename to src/de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml
index a7d5c94b8..a028fad4e 100644
--- a/src/de/deadlocker8/budgetmaster/ui/SplashScreen.fxml
+++ b/src/de/deadlocker8/budgetmaster/ui/fxml/SplashScreen.fxml
@@ -10,7 +10,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane fx:id="anchorPaneMain" prefHeight="230.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.SplashScreenController">
+<AnchorPane fx:id="anchorPaneMain" prefHeight="230.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.controller.SplashScreenController">
    <children>
       <VBox layoutX="14.0" layoutY="14.0" spacing="10.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
          <children>
-- 
GitLab