diff --git a/src/de/deadlocker8/budgetmaster/logic/Helpers.java b/src/de/deadlocker8/budgetmaster/logic/Helpers.java index 20822ef9e2b7dad4bcbe61b01e76f613f8a6b72a..946b14824832b24e64e4670ef289d9e5903b0876 100644 --- a/src/de/deadlocker8/budgetmaster/logic/Helpers.java +++ b/src/de/deadlocker8/budgetmaster/logic/Helpers.java @@ -10,6 +10,8 @@ import java.util.ArrayList; public class Helpers { public static final DecimalFormat NUMBER_FORMAT = new DecimalFormat("0.00"); + public static final String COLOR_INCOME = "#22BAD9"; + public static final String COLOR_PAYMENT = "#F2612D"; public static String getURLEncodedString(String input) { diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java index ef050c0bee16ff2668e70a30ba49015b6c148a5c..22238d36676e749fead31964ffb4f0e51e3d567d 100644 --- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java +++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/BarChartGenerator.java @@ -1,6 +1,8 @@ package de.deadlocker8.budgetmaster.logic.chartGenerators; import java.util.ArrayList; +import java.util.Iterator; +import java.util.Set; import de.deadlocker8.budgetmaster.logic.Helpers; import de.deadlocker8.budgetmaster.logic.MonthInOutSum; @@ -11,6 +13,7 @@ import javafx.scene.chart.BarChart; import javafx.scene.chart.CategoryAxis; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.XYChart; +import javafx.scene.control.Label; import javafx.scene.control.Tooltip; import javafx.scene.input.MouseEvent; @@ -82,6 +85,43 @@ public class BarChartGenerator }); } }); + + // style bar for incomes + for(Node n : generatedChart.lookupAll(".default-color0.chart-bar")) + { + n.setStyle("-fx-bar-fill: " + Helpers.COLOR_INCOME + ";"); + } + + // style bar for payments + for(Node n : generatedChart.lookupAll(".default-color1.chart-bar")) + { + n.setStyle("-fx-bar-fill: " + Helpers.COLOR_PAYMENT + ";"); + } + + //style legend item according to color + Set<Node> nodes = generatedChart.lookupAll(".chart-legend-item"); + if(nodes.size() > 0) + { + Iterator<Node> iterator = nodes.iterator(); + int counter = 0; + while(iterator.hasNext()) + { + Node node = iterator.next(); + if(node instanceof Label) + { + Label labelLegendItem = (Label)node; + if(counter == 0) + { + labelLegendItem.getGraphic().setStyle("-fx-background-color: " + Helpers.COLOR_INCOME + ";"); + } + else + { + labelLegendItem.getGraphic().setStyle("-fx-background-color: " + Helpers.COLOR_PAYMENT + ";"); + } + } + counter++; + } + } return generatedChart; } diff --git a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java index 4ec04791e05ce65f6897ff945a05abdc470f13e9..cabefdf42b85d86ace0627b839133e4d565f3c51 100644 --- a/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java +++ b/src/de/deadlocker8/budgetmaster/logic/chartGenerators/LineChartGenerator.java @@ -1,6 +1,8 @@ package de.deadlocker8.budgetmaster.logic.chartGenerators; import java.util.ArrayList; +import java.util.Iterator; +import java.util.Set; import de.deadlocker8.budgetmaster.logic.Helpers; import de.deadlocker8.budgetmaster.logic.MonthInOutSum; @@ -11,6 +13,7 @@ import javafx.scene.chart.CategoryAxis; import javafx.scene.chart.LineChart; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.XYChart; +import javafx.scene.control.Label; import javafx.scene.control.Tooltip; import javafx.scene.input.MouseEvent; @@ -29,7 +32,7 @@ public class LineChartGenerator public LineChart<String, Number> generate() { final CategoryAxis xAxis = new CategoryAxis(); - final NumberAxis yAxis = new NumberAxis(); + final NumberAxis yAxis = new NumberAxis(); final LineChart<String, Number> generatedChart = new LineChart<>(xAxis, yAxis); generatedChart.setTitle(null); @@ -45,15 +48,15 @@ public class LineChartGenerator { String label = currentItem.getDate().toString("MMMM YY"); - seriesIN.getData().add(new XYChart.Data<String, Number>(label, currentItem.getBudgetIN()/100.0)); - seriesOUT.getData().add(new XYChart.Data<String, Number>(label, currentItem.getBudgetOUT()/100.0)); + seriesIN.getData().add(new XYChart.Data<String, Number>(label, currentItem.getBudgetIN() / 100.0)); + seriesOUT.getData().add(new XYChart.Data<String, Number>(label, currentItem.getBudgetOUT() / 100.0)); } generatedChart.getData().add(seriesIN); generatedChart.getData().add(seriesOUT); generatedChart.setLegendVisible(true); - + // add tooltip to every segment generatedChart.getData().stream().forEach(tool -> { for(XYChart.Data<String, Number> data : tool.getData()) @@ -82,8 +85,57 @@ public class LineChartGenerator }); } }); + + // style line for incomes + for(Node n : generatedChart.lookupAll(".default-color0.chart-series-line")) + { + n.setStyle("-fx-stroke: " + Helpers.COLOR_INCOME + ";"); + } + + // style line dots for incomes + for(Node n : generatedChart.lookupAll(".default-color0.chart-line-symbol")) + { + n.setStyle("-fx-background-color: " + Helpers.COLOR_INCOME + ", white;"); + } + + // style line for payments + for(Node n : generatedChart.lookupAll(".default-color1.chart-series-line")) + { + n.setStyle("-fx-stroke: " + Helpers.COLOR_PAYMENT + ";"); + } - //TODO color income green and payments red + // style line dots for payments + for(Node n : generatedChart.lookupAll(".default-color1.chart-line-symbol")) + { + n.setStyle("-fx-background-color: " + Helpers.COLOR_PAYMENT + ", white;"); + } + + // style legend item according to color + Set<Node> nodes = generatedChart.lookupAll(".chart-legend-item"); + if(nodes.size() > 0) + { + Iterator<Node> iterator = nodes.iterator(); + int counter = 0; + while(iterator.hasNext()) + { + Node node = iterator.next(); + if(node instanceof Label) + { + Label labelLegendItem = (Label)node; + if(counter == 0) + { + labelLegendItem.getGraphic().setStyle("-fx-background-color: " + Helpers.COLOR_INCOME + ";"); + } + else + { + labelLegendItem.getGraphic().setStyle("-fx-background-color: " + Helpers.COLOR_PAYMENT + ";"); + } + } + counter++; + } + } + + // TODO color income green and payments red return generatedChart; }