diff --git a/pom.xml b/pom.xml index 380ed970e82db5cfce1fddb96e0498f2f957db42..e16df4f8a4ad4af1deec47300632496adeb86be1 100644 --- a/pom.xml +++ b/pom.xml @@ -1,94 +1,139 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>de.deadlocker8</groupId> - <artifactId>SmartTime</artifactId> - <version>5.2.0</version> - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.7.0</version> - <configuration> - <source>1.8</source> - <target>1.8</target> - </configuration> - </plugin> - <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <configuration> - <outputDirectory>build/${project.version}</outputDirectory> - <finalName>SmartTime-v${project.version}</finalName> - <appendAssemblyId>false</appendAssemblyId> - <archive> - <manifest> - <mainClass>de.deadlocker8.smarttime.main.Main</mainClass> - </manifest> - </archive> - <descriptorRefs> - <descriptorRef>jar-with-dependencies</descriptorRef> - </descriptorRefs> - </configuration> - <executions> - <execution> - <id>make-assembly</id> <!-- this is used for inheritance merges --> - <phase>package</phase> <!-- bind to the packaging phase --> - <goals> - <goal>single</goal> - </goals> - </execution> - </executions> - </plugin> - <!-- LAUNCH4J --> - <plugin> - <groupId>com.akathist.maven.plugins.launch4j</groupId> - <artifactId>launch4j-maven-plugin</artifactId> - <version>1.7.21</version> - <executions> - <execution> - <id>l4j-clui</id> - <phase>package</phase> - <goals> - <goal>launch4j</goal> - </goals> - <configuration> - <headerType>gui</headerType> - <jar>build/${project.version}/SmartTime-v${project.version}.jar</jar> - <outfile>build/${project.version}/SmartTime-v${project.version}.exe</outfile> - <downloadUrl>http://java.com/download</downloadUrl> - <classPath> - <mainClass>de.deadlocker8.smarttime.main.Main</mainClass> - </classPath> - <jre> - <bundledJre64Bit>false</bundledJre64Bit> - <bundledJreAsFallback>false</bundledJreAsFallback> - <minVersion>1.8.0</minVersion> - <jdkPreference>preferJre</jdkPreference> - <runtimeBits>64/32</runtimeBits> - </jre> - <icon>build/Icon.ico</icon> - </configuration> - </execution> - </executions> - </plugin> - </plugins> - </build> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>de.deadlocker8</groupId> + <artifactId>SmartTime</artifactId> + <version>6.0.0</version> - <dependencies> - <dependency> - <groupId>de.deadlocker8</groupId> - <artifactId>tools</artifactId> - <version>1.0.0</version> - </dependency> - <dependency> - <groupId>com.google.code.gson</groupId> - <artifactId>gson</artifactId> - <version>2.8.1</version> - </dependency> - <dependency> - <groupId>org.xerial</groupId> - <artifactId>sqlite-jdbc</artifactId> - <version>3.21.0</version> - </dependency> - </dependencies> + <properties> + <jlibs.version>2.0.6</jlibs.version> + </properties> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.7.0</version> + <configuration> + <source>1.8</source> + <target>1.8</target> + </configuration> + </plugin> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <outputDirectory>build/${project.version}</outputDirectory> + <finalName>SmartTime-v${project.version}</finalName> + <appendAssemblyId>false</appendAssemblyId> + <archive> + <manifest> + <mainClass>de.deadlocker8.smarttime.main.Main</mainClass> + </manifest> + </archive> + <descriptorRefs> + <descriptorRef>jar-with-dependencies</descriptorRef> + </descriptorRefs> + </configuration> + <executions> + <execution> + <id>make-assembly</id> <!-- this is used for inheritance merges --> + <phase>package</phase> <!-- bind to the packaging phase --> + <goals> + <goal>single</goal> + </goals> + </execution> + </executions> + </plugin> + <!-- LAUNCH4J --> + <plugin> + <groupId>com.akathist.maven.plugins.launch4j</groupId> + <artifactId>launch4j-maven-plugin</artifactId> + <version>1.7.21</version> + <executions> + <execution> + <id>l4j-clui</id> + <phase>package</phase> + <goals> + <goal>launch4j</goal> + </goals> + <configuration> + <headerType>gui</headerType> + <jar>build/${project.version}/SmartTime-v${project.version}.jar</jar> + <outfile>build/${project.version}/SmartTime-v${project.version}.exe</outfile> + <downloadUrl>http://java.com/download</downloadUrl> + <classPath> + <mainClass>de.deadlocker8.smarttime.main.Main</mainClass> + </classPath> + <jre> + <bundledJre64Bit>false</bundledJre64Bit> + <bundledJreAsFallback>false</bundledJreAsFallback> + <minVersion>1.8.0</minVersion> + <jdkPreference>preferJre</jdkPreference> + <runtimeBits>64/32</runtimeBits> + </jre> + <icon>build/Icon.ico</icon> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>de.thecodelabs</groupId> + <artifactId>jlibs</artifactId> + <version>${jlibs.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + </dependencies> + </dependencyManagement> + + <dependencies> + <dependency> + <groupId>de.thecodelabs</groupId> + <artifactId>libUtils</artifactId> + </dependency> + <dependency> + <groupId>de.thecodelabs</groupId> + <artifactId>libLogger</artifactId> + </dependency> + + <dependency> + <groupId>com.google.code.gson</groupId> + <artifactId>gson</artifactId> + <version>2.8.1</version> + </dependency> + <dependency> + <groupId>org.xerial</groupId> + <artifactId>sqlite-jdbc</artifactId> + <version>3.21.0</version> + </dependency> + </dependencies> + + <repositories> + <repository> + <id>release</id> + <url>https://maven.thecodelabs.de/artifactory/Releases</url> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>false</enabled> + </snapshots> + </repository> + <repository> + <id>snapshots</id> + <url>https://maven.thecodelabs.de/artifactory/Snapshots</url> + <releases> + <enabled>false</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </repository> + </repositories> </project> \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/smarttime/charts/ChartGUIController.java b/src/main/java/de/deadlocker8/smarttime/charts/ChartGUIController.java index 2333e2448e7d5c70e6c32ea01a652296ff139b1f..b4a555808ebec16efb604e96e16096671c901216 100644 --- a/src/main/java/de/deadlocker8/smarttime/charts/ChartGUIController.java +++ b/src/main/java/de/deadlocker8/smarttime/charts/ChartGUIController.java @@ -1,13 +1,11 @@ package de.deadlocker8.smarttime.charts; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; - import de.deadlocker8.smarttime.core.LogObject; import de.deadlocker8.smarttime.core.SQL; import de.deadlocker8.smarttime.core.Settings; import de.deadlocker8.smarttime.core.Utils; +import de.thecodelabs.logger.Logger; +import de.thecodelabs.utils.ui.Alerts; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.fxml.FXML; @@ -20,8 +18,10 @@ import javafx.scene.image.Image; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.VBox; import javafx.stage.Stage; -import logger.Logger; -import tools.AlertGenerator; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; @SuppressWarnings("rawtypes") public class ChartGUIController @@ -431,7 +431,7 @@ public class ChartGUIController private void showErrorMessage() { - AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Fehler beim Erstellen des Diagramms.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.ERROR, "Fehler", "Fehler beim Erstellen des Diagramms.", stage); } private void showPieChart(PieChart chart) diff --git a/src/main/java/de/deadlocker8/smarttime/charts/PieChartGenerator.java b/src/main/java/de/deadlocker8/smarttime/charts/PieChartGenerator.java index fea7b62c1b4aee2c0eab163408de19d4f94c547a..18b723510069f221a65da3495c4a6c13181b9d36 100644 --- a/src/main/java/de/deadlocker8/smarttime/charts/PieChartGenerator.java +++ b/src/main/java/de/deadlocker8/smarttime/charts/PieChartGenerator.java @@ -13,7 +13,7 @@ import javafx.scene.Node; import javafx.scene.chart.PieChart; import javafx.scene.control.Tooltip; import javafx.scene.input.MouseEvent; -import tools.ConvertTo; +import de.deadlocker8.smarttime.core.ConvertTo; public class PieChartGenerator { diff --git a/src/main/java/de/deadlocker8/smarttime/charts/SummaryGenerator.java b/src/main/java/de/deadlocker8/smarttime/charts/SummaryGenerator.java index 0d6ee9b3b92dd96dd37f1834fcfcf488b495078a..944259354976baac9a24099e3c9480ddd5c616e1 100644 --- a/src/main/java/de/deadlocker8/smarttime/charts/SummaryGenerator.java +++ b/src/main/java/de/deadlocker8/smarttime/charts/SummaryGenerator.java @@ -10,7 +10,7 @@ import javafx.geometry.Pos; import javafx.scene.control.Label; import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; -import tools.ConvertTo; +import de.deadlocker8.smarttime.core.ConvertTo; public class SummaryGenerator { diff --git a/src/main/java/de/deadlocker8/smarttime/controller/Controller.java b/src/main/java/de/deadlocker8/smarttime/controller/Controller.java index c3782b8bfff1b17aace0115e0e88405519ca0532..fa77a7f9ee76716ede314ca4d882422d285dc6ef 100644 --- a/src/main/java/de/deadlocker8/smarttime/controller/Controller.java +++ b/src/main/java/de/deadlocker8/smarttime/controller/Controller.java @@ -13,13 +13,11 @@ import java.util.ResourceBundle; import java.util.regex.Pattern; import de.deadlocker8.smarttime.charts.ChartGUIController; -import de.deadlocker8.smarttime.core.Exporter; -import de.deadlocker8.smarttime.core.Importer; -import de.deadlocker8.smarttime.core.LogObject; -import de.deadlocker8.smarttime.core.SQL; -import de.deadlocker8.smarttime.core.Settings; -import de.deadlocker8.smarttime.core.Timer; -import de.deadlocker8.smarttime.core.Utils; +import de.deadlocker8.smarttime.core.*; +import de.thecodelabs.logger.Logger; +import de.thecodelabs.utils.io.PathUtils; +import de.thecodelabs.utils.ui.Alerts; +import de.thecodelabs.utils.util.SystemUtils; import javafx.application.Platform; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; @@ -61,10 +59,7 @@ import javafx.stage.Modality; import javafx.stage.Stage; import javafx.stage.WindowEvent; import javafx.util.Callback; -import logger.Logger; -import tools.AlertGenerator; -import tools.ConvertTo; -import tools.PathUtils; + public class Controller { @@ -91,7 +86,7 @@ public class Controller private long endTimestamp; private int longestProject; private ArrayList<LogObject> logObjects = new ArrayList<LogObject>(); - private final String DEFAULT_SAVE_PATH = PathUtils.getOSindependentPath() + "/Deadlocker/SmartTime/"; + private final String DEFAULT_SAVE_PATH = SystemUtils.getApplicationSupportDirectoryPath("Deadlocker", "SmartTime").toString(); private SQL sql; private Stage waitingStage = new Stage(); private Image icon; @@ -103,7 +98,7 @@ public class Controller this.stage = stage; labelSeparator.setStyle("-fx-background-color: #cdc6c6; -fx-font-size: 0.7"); - PathUtils.checkFolder(new File(DEFAULT_SAVE_PATH)); + PathUtils.createDirectoriesIfNotExists(new File(DEFAULT_SAVE_PATH).toPath()); icon = new Image("/de/deadlocker8/smarttime/icon.png"); accordion.setExpandedPane(gesamtesLog); projektExistiertFlag = false; @@ -136,7 +131,7 @@ public class Controller } else { - AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Kein Projekt ausgewählt.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.WARNING, "Warnung", "Kein Projekt ausgewählt.", stage); startButton.setSelected(false); } }); @@ -151,7 +146,7 @@ public class Controller // Prüft, ob die Stoppuhr noch läuft if(isTimerRunning()) { - AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Stoppuhr läuft noch!", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.WARNING, "Warnung", "Stoppuhr läuft noch!", stage); } else { @@ -207,7 +202,7 @@ public class Controller } else { - AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "Stoppuhr läuft noch!", "Projekt und Task können nur geändert werden,\nwenn die Stoppuhr nicht läuft.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.WARNING, "Warnung", "Stoppuhr läuft noch!", "Projekt und Task können nur geändert werden,\nwenn die Stoppuhr nicht läuft.", stage); } } @@ -278,7 +273,7 @@ public class Controller catch(Exception e) { Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Laden der Daten ist ein Fehler aufgetreten.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.ERROR, "Fehler", "Beim Laden der Daten ist ein Fehler aufgetreten.", stage); } } @@ -310,7 +305,7 @@ public class Controller catch(Exception ex) { Logger.error(ex); - AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Fehler beim Erstellen der Datenbank.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.ERROR, "Fehler", "Fehler beim Erstellen der Datenbank.", stage); } } } @@ -499,7 +494,7 @@ public class Controller catch(Exception e) { Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Fehler beim Speichern des Eintrags.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.ERROR, "Fehler", "Fehler beim Speichern des Eintrags.", stage); } loadAll(); @@ -642,9 +637,10 @@ public class Controller catch(IOException e) { Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Exportieren der Daten ist ein Fehler aufgetreten.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.ERROR, "Fehler", "Beim Exportieren der Daten ist ein Fehler aufgetreten.", stage); } - AlertGenerator.showAlert(AlertType.INFORMATION, "Erfolgreich exportiert", "", "Export erfolgreich abgeschlossen.", icon, stage, null, false); + + Alerts.getInstance().createAlert(AlertType.INFORMATION, "Erfolgreich exportiert", "Export erfolgreich abgeschlossen.", stage); } } @@ -749,7 +745,7 @@ public class Controller catch(Exception e) { Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Aktualisieren des Eintrags ist ein Fehler aufgetreten.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.ERROR, "Fehler", "Beim Aktualisieren des Eintrags ist ein Fehler aufgetreten.", stage); } } @@ -763,7 +759,7 @@ public class Controller catch(Exception e) { Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Löschen des Eintrags ist ein Fehler aufgetreten.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.ERROR, "Fehler", "Beim Löschen des Eintrags ist ein Fehler aufgetreten.", stage); } } @@ -789,7 +785,7 @@ public class Controller catch(IOException e) { Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Verschieben der Datenbank ist ein Fehler aufgetreten", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.ERROR, "Fehler", "Beim Verschieben der Datenbank ist ein Fehler aufgetreten.", stage); } } else @@ -824,7 +820,7 @@ public class Controller catch(Exception e) { Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Löschen der Datenbank ist ein Fehler aufgetreten.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.ERROR, "Fehler", "Beim Löschen der Datenbank ist ein Fehler aufgetreten.", stage); } } } @@ -893,6 +889,8 @@ public class Controller { ArrayList<String> creditLines = new ArrayList<>(); creditLines.add(bundle.getString("credits")); - AlertGenerator.showAboutAlertWithCredits(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date"), "Robert Goldmann", creditLines, icon, stage, null, false); + + // TODO +// AlertGenerator.showAboutAlertWithCredits(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date"), "Robert Goldmann", creditLines, icon, stage, null, false); } } \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/smarttime/controller/EditController.java b/src/main/java/de/deadlocker8/smarttime/controller/EditController.java index 3d8ddda97e46146a703f429f61c71abd456efdcc..8319231261adc3b2f8cf5d6e6777fc0f7be35f93 100644 --- a/src/main/java/de/deadlocker8/smarttime/controller/EditController.java +++ b/src/main/java/de/deadlocker8/smarttime/controller/EditController.java @@ -1,13 +1,10 @@ package de.deadlocker8.smarttime.controller; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Optional; - import de.deadlocker8.smarttime.core.LogObject; import de.deadlocker8.smarttime.core.SQL; import de.deadlocker8.smarttime.core.Settings; import de.deadlocker8.smarttime.core.Utils; +import de.thecodelabs.utils.ui.Alerts; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; @@ -19,7 +16,10 @@ import javafx.scene.control.ButtonType; import javafx.scene.control.ComboBox; import javafx.scene.image.Image; import javafx.stage.Stage; -import tools.AlertGenerator; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Optional; public class EditController @@ -89,7 +89,7 @@ public class EditController if(project == null || project.equals("") || task == null || task.equals("")) { - AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Die Felder dürfen nicht leer sein.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.WARNING, "Warnung", "Die Felder dürfen nicht leer sein.", stage); } else { diff --git a/src/main/java/de/deadlocker8/smarttime/controller/InsertTimeController.java b/src/main/java/de/deadlocker8/smarttime/controller/InsertTimeController.java index 266a1f9f5706e034ecb4d1fb711787f593bd412b..dd22f128af09ce0f79e1d639035e011d21ddcaf0 100644 --- a/src/main/java/de/deadlocker8/smarttime/controller/InsertTimeController.java +++ b/src/main/java/de/deadlocker8/smarttime/controller/InsertTimeController.java @@ -1,5 +1,21 @@ package de.deadlocker8.smarttime.controller; +import de.deadlocker8.smarttime.core.*; +import de.thecodelabs.logger.Logger; +import de.thecodelabs.utils.ui.Alerts; +import de.thecodelabs.utils.ui.icon.FontAwesomeType; +import de.thecodelabs.utils.ui.icon.FontIcon; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +import javafx.fxml.FXML; +import javafx.scene.Parent; +import javafx.scene.control.Alert.AlertType; +import javafx.scene.control.*; +import javafx.scene.image.Image; +import javafx.scene.paint.Color; +import javafx.stage.Stage; +import javafx.util.Callback; + import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; @@ -12,30 +28,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; -import de.deadlocker8.smarttime.core.LogObject; -import de.deadlocker8.smarttime.core.SQL; -import de.deadlocker8.smarttime.core.Settings; -import de.deadlocker8.smarttime.core.Utils; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; -import javafx.beans.value.ChangeListener; -import javafx.beans.value.ObservableValue; -import javafx.fxml.FXML; -import javafx.scene.Parent; -import javafx.scene.control.Alert.AlertType; -import javafx.scene.control.Button; -import javafx.scene.control.ComboBox; -import javafx.scene.control.DateCell; -import javafx.scene.control.DatePicker; -import javafx.scene.control.Label; -import javafx.scene.image.Image; -import javafx.scene.paint.Color; -import javafx.stage.Stage; -import javafx.util.Callback; -import logger.Logger; -import tools.AlertGenerator; -import tools.ConvertTo; - public class InsertTimeController { @FXML private DatePicker datePicker1; @@ -62,8 +54,11 @@ public class InsertTimeController this.stage = stage; this.controller = controller; this.icon = icon; - - buttonUseCurrentTime.setGraphic(new FontIcon(FontIconType.CLOCK_ALT, 14, Color.BLACK)); + + final FontIcon fontIconClock = new FontIcon(FontAwesomeType.CLOCK_ALT); + fontIconClock.setSize(14); + fontIconClock.setColor(Color.BLACK); + buttonUseCurrentTime.setGraphic(fontIconClock); ArrayList<String> objects = new ArrayList<String>(); @@ -210,21 +205,21 @@ public class InsertTimeController catch(Exception e) { Logger.error(e); - AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Fehler beim Speichern des Eintrags.", icon, stage, null, false); - } - - AlertGenerator.showAlert(AlertType.INFORMATION, "Gespeichert", "", "Der Eintrag wurde erfolgreich gespeichert.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.ERROR, "Fehler", "Fehler beim Speichern des Eintrags.", stage); + } + + Alerts.getInstance().createAlert(AlertType.INFORMATION, "Gespeichert", "Der Eintrag wurde erfolgreich gespeichert.", stage); stage.close(); controller.loadAll(); } else { - AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Endzeit muss vor Startzeit liegen.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.WARNING, "Warnung", "Endzeit muss vor Startzeit liegen.", stage); } } else { - AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Die Felder für Projekt und Task dürfen nicht leer sein.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.WARNING, "Warnung", "Die Felder für Projekt und Task dürfen nicht leer sein.", stage); } } @@ -399,7 +394,7 @@ public class InsertTimeController Duration d= Duration.between(dateTime, dateTime2); - labelDuration.setText(ConvertTo.ConvertSecondsToTime(d.getSeconds())); + labelDuration.setText(ConvertTo.ConvertSecondsToTime(d.getSeconds())); } public boolean isEndDateAfterStartDate() diff --git a/src/main/java/de/deadlocker8/smarttime/controller/ProjectController.java b/src/main/java/de/deadlocker8/smarttime/controller/ProjectController.java index eeb62597c853855f641adf04b81440345285a48c..f20820fcd502e004bbab8733e48bdaadead101e3 100644 --- a/src/main/java/de/deadlocker8/smarttime/controller/ProjectController.java +++ b/src/main/java/de/deadlocker8/smarttime/controller/ProjectController.java @@ -1,11 +1,9 @@ package de.deadlocker8.smarttime.controller; -import java.util.ArrayList; -import java.util.Collections; - import de.deadlocker8.smarttime.core.SQL; import de.deadlocker8.smarttime.core.Settings; import de.deadlocker8.smarttime.core.Utils; +import de.thecodelabs.utils.ui.Alerts; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; @@ -15,7 +13,9 @@ import javafx.scene.control.Button; import javafx.scene.control.ComboBox; import javafx.scene.image.Image; import javafx.stage.Stage; -import tools.AlertGenerator; + +import java.util.ArrayList; +import java.util.Collections; /** * Controllerklasse für das Projektfenster @@ -98,7 +98,7 @@ public class ProjectController if(project == null || project.equals("") || task == null || task.equals("")) { - AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Die Felder dürfen nicht leer sein.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.WARNING, "Warnung", "Die Felder dürfen nicht leer sein.", stage); } else { diff --git a/src/main/java/de/deadlocker8/smarttime/controller/ReportController.java b/src/main/java/de/deadlocker8/smarttime/controller/ReportController.java index 14f39099def53f6f624f8c98661fbf87ee5d3499..fea78e84ad0ec676228deb46f6b340ec43947cfa 100644 --- a/src/main/java/de/deadlocker8/smarttime/controller/ReportController.java +++ b/src/main/java/de/deadlocker8/smarttime/controller/ReportController.java @@ -6,6 +6,8 @@ import java.util.Collections; import de.deadlocker8.smarttime.core.SQL; import de.deadlocker8.smarttime.core.Settings; import de.deadlocker8.smarttime.core.Utils; +import de.thecodelabs.logger.Logger; +import de.thecodelabs.utils.ui.Alerts; import javafx.fxml.FXML; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.CheckBox; @@ -15,8 +17,6 @@ import javafx.scene.control.RadioButton; import javafx.scene.control.ToggleGroup; import javafx.scene.image.Image; import javafx.stage.Stage; -import logger.Logger; -import tools.AlertGenerator; public class ReportController { @@ -133,13 +133,13 @@ public class ReportController String project = comboBoxProject.getValue(); if(project == null || project.equals("")) { - AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Bitte wähle ein Projekt aus", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.WARNING, "Warnung", "Bitte wähle ein Projekt aus", stage); return; } if(!project.equals(ALL_PROJECTS) && getNumberOfActivatedTasks() == 0) { - AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Bitte wähle mindestens einen Task aus aus", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.WARNING, "Warnung", "Bitte wähle mindestens einen Task aus", stage); return; } diff --git a/src/main/java/de/deadlocker8/smarttime/controller/TimePickerController.java b/src/main/java/de/deadlocker8/smarttime/controller/TimePickerController.java index e538f7441c4c73cc67c3efdaa57d97f128b8a4d7..37e8e86781cde9205d8544bee63ef577c65d0be4 100644 --- a/src/main/java/de/deadlocker8/smarttime/controller/TimePickerController.java +++ b/src/main/java/de/deadlocker8/smarttime/controller/TimePickerController.java @@ -1,8 +1,7 @@ package de.deadlocker8.smarttime.controller; -import java.net.URL; -import java.util.ResourceBundle; - +import de.thecodelabs.utils.ui.icon.FontAwesomeType; +import de.thecodelabs.utils.ui.icon.FontIcon; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; @@ -13,8 +12,9 @@ import javafx.scene.control.Label; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; -import fontAwesome.FontIcon; -import fontAwesome.FontIconType; + +import java.net.URL; +import java.util.ResourceBundle; public class TimePickerController implements Initializable { @@ -93,11 +93,11 @@ public class TimePickerController implements Initializable @Override public void initialize(URL location, ResourceBundle resources) { - FontIcon arrowUp = new FontIcon(FontIconType.ARROW_UP); + FontIcon arrowUp = new FontIcon(FontAwesomeType.ARROW_UP); arrowUp.setSize(10); arrowUp.setColor(Color.web("#000000")); - FontIcon arrowDown = new FontIcon(FontIconType.ARROW_DOWN); + FontIcon arrowDown = new FontIcon(FontAwesomeType.ARROW_DOWN); arrowDown.setSize(10); arrowDown.setColor(Color.web("#000000")); @@ -133,11 +133,11 @@ public class TimePickerController implements Initializable //VBoxMinutes - arrowUp = new FontIcon(FontIconType.ARROW_UP); + arrowUp = new FontIcon(FontAwesomeType.ARROW_UP); arrowUp.setSize(10); arrowUp.setColor(Color.web("#000000")); - arrowDown = new FontIcon(FontIconType.ARROW_DOWN); + arrowDown = new FontIcon(FontAwesomeType.ARROW_DOWN); arrowDown.setSize(10); arrowDown.setColor(Color.web("#000000")); @@ -171,11 +171,11 @@ public class TimePickerController implements Initializable vboxMinutes.setAlignment(Pos.CENTER); //VBoxSeconds - arrowUp = new FontIcon(FontIconType.ARROW_UP); + arrowUp = new FontIcon(FontAwesomeType.ARROW_UP); arrowUp.setSize(10); arrowUp.setColor(Color.web("#000000")); - arrowDown = new FontIcon(FontIconType.ARROW_DOWN); + arrowDown = new FontIcon(FontAwesomeType.ARROW_DOWN); arrowDown.setSize(10); arrowDown.setColor(Color.web("#000000")); diff --git a/src/main/java/de/deadlocker8/smarttime/core/ConvertTo.java b/src/main/java/de/deadlocker8/smarttime/core/ConvertTo.java new file mode 100644 index 0000000000000000000000000000000000000000..73fa03bc2126082d1b9f2a00f5d28324758ecf94 --- /dev/null +++ b/src/main/java/de/deadlocker8/smarttime/core/ConvertTo.java @@ -0,0 +1,162 @@ +package de.deadlocker8.smarttime.core; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +import javafx.scene.paint.Color; + +/** + * stellt Methoden zur Konvertierung von Einheiten zur Verfügung + * + * @author Robert + * + */ +public class ConvertTo +{ + /** + * Konvertiert Millisekunden in Stunden, Minuten und Sekunden + * + * @param millis + * long - Millisekunden + * @return String - Stunden + Minuten + Sekunden + */ + public static String ConvertMillisToTime(long millis) + { + long sek = (millis / 1000) % 60; + long min = (millis / (1000 * 60)) % 60; + long hour = (millis / (1000 * 60 * 60)); + + return hour + " h " + min + " min " + sek + " sek"; + } + + /** + * Konvertiert Sekunden in Stunden, Minuten und Sekunden + * + * @param seconds + * long - Sekunden + * @return String - Stunden + Minuten + Sekunden + */ + public static String ConvertSecondsToTime(long seconds) + { + long sek = seconds % 60; + long min = seconds / 60 % 60; + long hour = seconds / (60 * 60); + + return hour + " h " + min + " min " + sek + " sek"; + } + + /** + * Konvertiert Sekunden in Minuten und Sekunden + * + * @param seconds + * long - Sekunden + * @return String - Minuten + Sekunden + */ + public static String ConvertMillisToMinutesAndSeconds(long millis) + { + long sek = (millis / 1000) % 60; + long min = (millis / 1000) / 60; + + return min + ":" + String.format("%02d", sek); + } + + /** + * Konvertiert Millisekunden in Datum und Uhrzeit + * + * @param millis + * long - Millisekunden + * @return String - dd.MM.yyyy-hh:mm:ss.SSS + */ + public static String ConvertMillisToDateAndTime(long millis) + { + Date date = new Date(millis); + + DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss.SSS"); + return formatter.format(date); + } + + /** + * Konvertiert einen Timestamp zurück in Millisekunden + * + * @param time + * String - Timestamp + * @return long - Millisekunden + */ + public static long ConvertTimestampToMillis(String time) + { + try + { + Timestamp timestamp = Timestamp.valueOf(time); + return timestamp.getTime(); + } + catch(IllegalArgumentException e) + { + System.err.println("Falsches Eingabeformat \nString muss folgende Struktur haben: yyyy-mm-dd hh:mm:ss[.SSSSSSSSS]"); + } + return 0; + } + + /** + * Konvertiert Bytes zu MB, KB und Bytes + * + * @param bytes + * long - Bytes + * @return String - Megabyte + Kilobyte + Byte; + */ + public static String ConvertBytesToDecimalSize(long bytes) + { + long normal = bytes % 1000; + long kilo = (bytes / 1000) % 1000; + long mega = (bytes / 1000000) % 1000000; + + return mega + " MB " + kilo + " KB " + normal; + } + + /** + * Konvertiert Bytes zu MB, KB und Bytes + * + * @param bytes + * long - Bytes + * @return String - Megabyte + Kilobyte + Byte; + */ + public static String ConvertBytesToBinarySize(long bytes) + { + long normal = bytes % 1024; + long kilo = (bytes / 1024) % 1024; + long mega = (bytes / 1048576) % 1048576; + + return mega + " MB " + kilo + " KB " + normal; + } + + public static String toRGBHex(Color color) + { + return String.format("#%02X%02X%02X%02X", (int)(color.getRed() * 255), (int)(color.getGreen() * 255), (int)(color.getBlue() * 255), (int)(color.getOpacity() * 255)); + } + + public static String toRGBHexWithoutOpacity(Color color) + { + return String.format("#%02X%02X%02X", (int)(color.getRed() * 255), (int)(color.getGreen() * 255), (int)(color.getBlue() * 255)); + } + + /** + * get an appropriate readable text color for given background color + * @param color - background color + * @return Color - text color + */ + public static Color getAppropriateTextColor(Color color) + { + // Counting the perceptive luminance - human eye favors green color... + double a = 1 - (0.299 * (int)(color.getRed()*255) + 0.587 * (int)(color.getGreen()*255) + 0.114 * (int)(color.getBlue()*255)) / 255; + + if(a < 0.5) + { + return Color.BLACK; + } + else + { + return Color.WHITE; + } + } +} \ No newline at end of file diff --git a/src/main/java/de/deadlocker8/smarttime/core/Exporter.java b/src/main/java/de/deadlocker8/smarttime/core/Exporter.java index 3fe6ff79d25c6af9b6e3c374ffc4d14c2aa58b77..f5f11bb43b3e2cee0a7ae68408a274d1d443f90a 100644 --- a/src/main/java/de/deadlocker8/smarttime/core/Exporter.java +++ b/src/main/java/de/deadlocker8/smarttime/core/Exporter.java @@ -1,20 +1,19 @@ package de.deadlocker8.smarttime.core; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.util.ArrayList; -import java.util.Date; - import com.google.gson.JsonArray; import com.google.gson.JsonObject; - +import de.thecodelabs.logger.Logger; +import de.thecodelabs.utils.ui.Alerts; import javafx.application.Platform; import javafx.scene.control.Alert.AlertType; import javafx.scene.image.Image; import javafx.stage.Stage; -import logger.Logger; -import tools.AlertGenerator; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.util.ArrayList; +import java.util.Date; public class Exporter { @@ -59,15 +58,15 @@ public class Exporter out.write(allItems.toString()); out.close(); - Platform.runLater(()->{ - AlertGenerator.showAlert(AlertType.INFORMATION, "Erfolgreich exportiert", "", "Der Exportvorgang wurde erfolgreich abgeschlossen.", icon, stage, null, false); + Platform.runLater(()->{ + Alerts.getInstance().createAlert(AlertType.INFORMATION, "Erfolgreich exportiert", "Der Exportvorgang wurde erfolgreich abgeschlossen.", stage); }); } catch(Exception e) { Logger.error(e); Platform.runLater(()->{ - AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Exportieren der Daten ist ein Fehler aufgetreten.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.ERROR, "Fehler", "Beim Exportieren der Daten ist ein Fehler aufgetreten.", stage); }); } } diff --git a/src/main/java/de/deadlocker8/smarttime/core/Importer.java b/src/main/java/de/deadlocker8/smarttime/core/Importer.java index f63fad730006d7330a3a5aaa7c121ee82de1065c..3c25f26c02dc59a7e6e89c60de69bfc54b53e417 100644 --- a/src/main/java/de/deadlocker8/smarttime/core/Importer.java +++ b/src/main/java/de/deadlocker8/smarttime/core/Importer.java @@ -1,22 +1,21 @@ package de.deadlocker8.smarttime.core; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.regex.Pattern; - import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParser; - +import de.thecodelabs.logger.Logger; +import de.thecodelabs.utils.ui.Alerts; import javafx.application.Platform; import javafx.scene.control.Alert.AlertType; import javafx.scene.image.Image; import javafx.stage.Stage; -import logger.Logger; -import tools.AlertGenerator; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.regex.Pattern; public class Importer { @@ -54,15 +53,15 @@ public class Importer sql.insert(o); } - Platform.runLater(()->{ - AlertGenerator.showAlert(AlertType.INFORMATION, "Erfolgreich importiert", "", "Der Importvorgang wurde erfolgreich abgeschlossen.", icon, stage, null, false); + Platform.runLater(()->{ + Alerts.getInstance().createAlert(AlertType.INFORMATION, "Erfolgreich importiert", "Der Importvorgang wurde erfolgreich abgeschlossen.", stage); }); } catch(Exception e) { Logger.error(e); Platform.runLater(()->{ - AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Importieren der Daten ist ein Fehler aufgetreten.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.ERROR, "Fehler", "Beim Importieren der Daten ist ein Fehler aufgetreten.", stage); }); } } @@ -79,15 +78,15 @@ public class Importer currentDB.insert(item); } - Platform.runLater(()->{ - AlertGenerator.showAlert(AlertType.INFORMATION, "Erfolgreich importiert", "", "Der Importvorgang wurde erfolgreich abgeschlossen.", icon, stage, null, false); + Platform.runLater(()->{ + Alerts.getInstance().createAlert(AlertType.INFORMATION, "Erfolgreich importiert", "Der Importvorgang wurde erfolgreich abgeschlossen.", stage); }); } catch(Exception e) { Logger.error(e); Platform.runLater(()->{ - AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Importieren der Daten ist ein Fehler aufgetreten.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.ERROR, "Fehler", "Beim Importieren der Daten ist ein Fehler aufgetreten.", stage); }); } } @@ -130,7 +129,7 @@ public class Importer { Logger.error(e); Platform.runLater(()->{ - AlertGenerator.showAlert(AlertType.ERROR, "Fehler", "", "Beim Importieren der Daten ist ein Fehler aufgetreten.", icon, stage, null, false); + Alerts.getInstance().createAlert(AlertType.ERROR, "Fehler", "Beim Importieren der Daten ist ein Fehler aufgetreten.", stage); }); } } diff --git a/src/main/java/de/deadlocker8/smarttime/core/LogObject.java b/src/main/java/de/deadlocker8/smarttime/core/LogObject.java index 8d27fe5b661b6c1a58a7adaaf46a1c43c46948a0..d1aab6e5471033847474bf0a040c64a5c953b135 100644 --- a/src/main/java/de/deadlocker8/smarttime/core/LogObject.java +++ b/src/main/java/de/deadlocker8/smarttime/core/LogObject.java @@ -3,7 +3,7 @@ package de.deadlocker8.smarttime.core; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import tools.ConvertTo; +import de.deadlocker8.smarttime.core.ConvertTo; /** * Klasse "Logobject" - generiert Objekte, die alle wichtigen Eigenschaften für das Logfile enthalten diff --git a/src/main/java/de/deadlocker8/smarttime/core/Timer.java b/src/main/java/de/deadlocker8/smarttime/core/Timer.java index 4c21a5e18e6dc323cf9456194cc8bdb31531fd9f..9c0c4c31295eec025ab2a266f3ec109679eca385 100644 --- a/src/main/java/de/deadlocker8/smarttime/core/Timer.java +++ b/src/main/java/de/deadlocker8/smarttime/core/Timer.java @@ -5,7 +5,7 @@ import javafx.animation.Timeline; import javafx.animation.Animation.Status; import javafx.scene.control.Label; import javafx.util.Duration; -import tools.ConvertTo; +import de.deadlocker8.smarttime.core.ConvertTo; public class Timer { diff --git a/src/main/java/de/deadlocker8/smarttime/core/Utils.java b/src/main/java/de/deadlocker8/smarttime/core/Utils.java index fe3725341f821d6c8abaafec6a01c3be7f684738..258b28f2935e616f119a639850dd6fe97f404ac9 100644 --- a/src/main/java/de/deadlocker8/smarttime/core/Utils.java +++ b/src/main/java/de/deadlocker8/smarttime/core/Utils.java @@ -6,14 +6,16 @@ import java.io.Reader; import java.io.Writer; import java.nio.charset.Charset; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; import java.util.Locale; import java.util.ResourceBundle; import com.google.gson.Gson; +import de.thecodelabs.utils.io.PathUtils; +import de.thecodelabs.utils.util.SystemUtils; -import tools.PathUtils; public class Utils { @@ -38,8 +40,9 @@ public class Utils Settings settings; try { - Gson gson = new Gson(); - Reader reader = Files.newBufferedReader(Paths.get(PathUtils.getOSindependentPath() + bundle.getString("folder") + "/settings.json"), Charset.forName("UTF-8")); + Gson gson = new Gson(); + Path configDir = SystemUtils.getApplicationSupportDirectoryPath(bundle.getString("folder")); + Reader reader = Files.newBufferedReader(configDir.resolve("settings.json"), Charset.forName("UTF-8")); settings = gson.fromJson(reader, Settings.class); reader.close(); return settings; @@ -54,8 +57,10 @@ public class Utils { Gson gson = new Gson(); String jsonString = gson.toJson(settings); - PathUtils.checkFolder(new File(PathUtils.getOSindependentPath() + bundle.getString("folder"))); - Writer writer = Files.newBufferedWriter(Paths.get(PathUtils.getOSindependentPath() + bundle.getString("folder") + "/settings.json"), Charset.forName("UTF-8")); + + Path configDir = SystemUtils.getApplicationSupportDirectoryPath(bundle.getString("folder")); + PathUtils.createDirectoriesIfNotExists(configDir); + Writer writer = Files.newBufferedWriter(configDir.resolve("settings.json"), Charset.forName("UTF-8")); writer.write(jsonString); writer.close(); } diff --git a/src/main/java/de/deadlocker8/smarttime/main/Main.java b/src/main/java/de/deadlocker8/smarttime/main/Main.java index 9afe3731ec4338d30924b59b4d7d5a3ea7829edf..1ce0c54b1ba4ea551644573573398a330f6d5eb9 100644 --- a/src/main/java/de/deadlocker8/smarttime/main/Main.java +++ b/src/main/java/de/deadlocker8/smarttime/main/Main.java @@ -1,10 +1,15 @@ package de.deadlocker8.smarttime.main; -import java.io.File; -import java.util.Locale; -import java.util.ResourceBundle; - import de.deadlocker8.smarttime.controller.Controller; +import de.thecodelabs.logger.FileOutputOption; +import de.thecodelabs.logger.LogLevelFilter; +import de.thecodelabs.logger.Logger; +import de.thecodelabs.utils.application.ApplicationUtils; +import de.thecodelabs.utils.application.container.PathType; +import de.thecodelabs.utils.io.PathUtils; +import de.thecodelabs.utils.ui.Alerts; +import de.thecodelabs.utils.ui.NVCStage; +import de.thecodelabs.utils.util.SystemUtils; import javafx.application.Application; import javafx.event.EventHandler; import javafx.fxml.FXMLLoader; @@ -14,10 +19,10 @@ import javafx.scene.control.Alert.AlertType; import javafx.scene.image.Image; import javafx.stage.Stage; import javafx.stage.WindowEvent; -import logger.FileOutputMode; -import logger.Logger; -import tools.AlertGenerator; -import tools.PathUtils; + +import java.util.Locale; +import java.util.Optional; +import java.util.ResourceBundle; public class Main extends Application @@ -26,9 +31,9 @@ public class Main extends Application public void start(Stage stage) { try - { + { FXMLLoader loader = new FXMLLoader(getClass().getResource("/de/deadlocker8/smarttime/fxml/MainGUI.fxml")); - Parent root = (Parent)loader.load(); + Parent root = (Parent) loader.load(); Scene scene = new Scene(root, 800, 800); scene.getStylesheets().add("/de/deadlocker8/smarttime/css/application.css"); @@ -37,8 +42,8 @@ public class Main extends Application stage.setResizable(true); stage.setTitle("SmartTime"); stage.setScene(scene); - - Controller controller = (Controller)loader.getController(); + + Controller controller = (Controller) loader.getController(); controller.init(stage); stage.getIcons().add(new Image("/de/deadlocker8/smarttime/icon.png")); @@ -52,8 +57,8 @@ public class Main extends Application { if(controller.isTimerRunning()) { - AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Die Stoppuhr läuft noch!", new Image("/de/deadlocker8/smarttime/icon.png"), stage, null, false); - + Alerts.getInstance().createAlert(AlertType.WARNING, "Warnung", "Die Stoppuhr läuft noch!", stage); + // "schluckt" die Aufforderung das Fenster zu schließen // (Fenster wird dadurch nicht geschlossen) we.consume(); @@ -70,23 +75,35 @@ public class Main extends Application Logger.error(e); } } - + @Override - public void init() throws Exception + public void init() { ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/smarttime/", Locale.GERMANY); - + Parameters params = getParameters(); - String logLevelParam = params.getNamed().get("loglevel"); - Logger.setLevel(logLevelParam); - - File logFolder = new File(PathUtils.getOSindependentPath() + "/Deadlocker/" + bundle.getString("app.name")); - PathUtils.checkFolder(logFolder); - Logger.enableFileOutput(logFolder, System.out, System.err, FileOutputMode.COMBINED); - - Logger.appInfo(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date")); + final Optional<String> isDebugOptional = params.getUnnamed().stream() + .filter(param -> param.contains("debug")) + .findAny(); + + final boolean isDebug = isDebugOptional.isPresent(); + + Logger.init(SystemUtils.getApplicationSupportDirectoryPath("Deadlocker", bundle.getString("app.name"))); + if(isDebug) + { + NVCStage.setDisabledSizeLoading(true); + Logger.setLevelFilter(LogLevelFilter.DEBUG); + Logger.setFileOutput(FileOutputOption.DISABLED); + } + else + { + Logger.setFileOutput(FileOutputOption.COMBINED); + } + Logger.info("Logging initialized (Running in LogLevel: {0})", Logger.getLevelFilter().toString()); + + Logger.appInfo(bundle.getString("app.name"), bundle.getString("version.name"), bundle.getString("version.code"), bundle.getString("version.date")); } - + public static void main(String[] args) { launch(args); diff --git a/src/main/resources/de/deadlocker8/smarttime/_de.properties b/src/main/resources/de/deadlocker8/smarttime/_de.properties index e081845078ba700c2aaab359f3d823d9d3a85220..bedddf2ee172c6a579e9fb2db00bca55d3758c14 100644 --- a/src/main/resources/de/deadlocker8/smarttime/_de.properties +++ b/src/main/resources/de/deadlocker8/smarttime/_de.properties @@ -1,7 +1,7 @@ app.name=SmartTime -version.code=32 -version.name=5.1.2 -version.date=05.06.17 +version.code=33 +version.name=6.0.0 +version.date=23.04.21 folder=Deadlocker/SmartTime credits=Icon made by Vectors Market from www.flaticon.com (licensed by CC 3.0 BY) \ No newline at end of file