diff --git a/modules/time-calc-app/pom.xml b/modules/time-calc-app/pom.xml
index a9c6b98..cd9e00d 100644
--- a/modules/time-calc-app/pom.xml
+++ b/modules/time-calc-app/pom.xml
@@ -72,6 +72,17 @@
flatlaf
3.4.1
+
+
+ org.openjfx
+ javafx-controls
+ 21
+
+
+ org.openjfx
+ javafx-web
+ 21
+
\ No newline at end of file
diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java
index 0a241c8..2c92f8a 100644
--- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java
+++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java
@@ -426,6 +426,12 @@ public class TimeCalcConfiguration {
}
return mapOfProperties.get(timeCalcProperty);
}
+ public String getProperty(String key) {
+ return timeCalcProperties.getString(key);
+ }
+ public void setProperty(String key, String value) {
+ timeCalcProperties.setString(key, value);
+ }
public String print() {
StringBuilder sb = new StringBuilder();
diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperties.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperties.java
index 9df9c57..d10ae99 100644
--- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperties.java
+++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperties.java
@@ -83,6 +83,14 @@ public class TimeCalcProperties {
getDefaultStringValue(timeCalcProperty)));
}
+ public String getString(String key) {
+ return (String) properties.get(key);
+ }
+
+ public void setString(String key, String value) {
+ properties.put(key, value);
+ }
+
private String getDefaultStringValue(TimeCalcProperty timeCalcProperty) {
if (!defaultProperties
.containsKey(timeCalcProperty.getKey())) {
diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Widget.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Widget.java
index 4182638..592530f 100644
--- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Widget.java
+++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/common/Widget.java
@@ -101,7 +101,11 @@ public class Widget extends JPanel implements
private WidgetMenu widgetMenu = null;
public Widget() {
setBackground(BACKGROUND_COLOR);
- new Timer(getTimerDelay(), e -> repaint()).start();
+ int timerDelay = getTimerDelay();
+// if(timerDelay > 10) {
+// timerDelay = 10;
+// }
+ new Timer(timerDelay, e -> repaint()).start();
this.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent e) {
@@ -208,7 +212,7 @@ public class Widget extends JPanel implements
}
public int getTimerDelay() {
- return 100;
+ return 10;
}
// @Override
diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java
index 2fbb48c..472487e 100644
--- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java
+++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java
@@ -104,7 +104,7 @@ public class MainWindow extends TWindow {
private final TButton restartButton;
private final TButton focusButton;
private final TButton helpButton;
- private final TButton weatherButton;
+ private final TButton webBrowserButton;
private final TButton commandButton;
private final TButton jokeButton;
private final AboutButton aboutButton;
@@ -254,7 +254,7 @@ public class MainWindow extends TWindow {
this.exitButton = new TButton("Exit");
this.focusButton = new TButton(allowOnlyBasicFeaturesProperty.getValue() ? " " : "Focus");
this.helpButton = new TButton("Help");
- this.weatherButton = new TButton("Weather");
+ this.webBrowserButton = new TButton("Browse");
this.commandButton = new TButton("Command");
this.jokeButton = new TButton("Joke");
this.aboutButton = new AboutButton();
@@ -360,7 +360,7 @@ public class MainWindow extends TWindow {
add(walkingHumanProgress);
walkingHumanProgress.visibleProperty
.bindTo(timeCalcConfiguration.walkingHumanVisibleProperty);
- weatherButton
+ webBrowserButton
.setBounds(SwingUtils.MARGIN, walkingHumanProgress.getY()
+ walkingHumanProgress.getHeight());
@@ -631,6 +631,7 @@ public class MainWindow extends TWindow {
add(elapsedTextField);
add(remainingTextFieldLabel);
add(remainingTextField);
+ add(webBrowserButton);
}
if(!allowOnlyBasicFeaturesProperty.getValue()) {
add(saveButton);
@@ -672,6 +673,7 @@ public class MainWindow extends TWindow {
configButton.setBoundsFromTop(weekLabel);
workDaysButton.setBoundsFromLeft(configButton);
activitiesButton.setBoundsFromLeft(workDaysButton);
+ webBrowserButton.setBoundsFromLeft(activitiesButton);
exitButton.setBounds(saveButton.getX() + saveButton.getWidth() - activitiesButton.getWidth(), workDaysButton.getY(), activitiesButton.getWidth(), activitiesButton.getHeight());
restartButton.setBounds(exitButton.getX() - SwingUtils.MARGIN - activitiesButton.getWidth(), activitiesButton.getY(), activitiesButton.getWidth(), activitiesButton.getHeight());
@@ -694,8 +696,8 @@ public class MainWindow extends TWindow {
setTitle(getWindowTitle());
- weatherButton
- .addActionListener(e -> new WeatherWindow().setVisible(true));
+ webBrowserButton
+ .addActionListener(e -> WebBrowser.show(timeCalcConfiguration));
commandButton.addActionListener(
new CommandActionListener(timeCalcApp, timeCalcConfiguration));
diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/WeatherWindow.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/WeatherWindow.java
deleted file mode 100644
index c9e815c..0000000
--- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/WeatherWindow.java
+++ /dev/null
@@ -1,160 +0,0 @@
-package org.nanoboot.utils.timecalc.swing.windows;
-
-import org.nanoboot.utils.timecalc.utils.common.Utils;
-
-import javax.swing.JEditorPane;
-import javax.swing.JFrame;
-import javax.swing.JScrollPane;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.net.HttpURLConnection;
-import java.net.URL;
-
-/**
- * @author Robert Vokac
- * @since 16.02.2024
- */
-public class WeatherWindow extends JFrame {
-
- public WeatherWindow() {
- this.setSize(400, 300);
-
- JEditorPane jep = new JEditorPane();
- jep.setEditable(false);
- JScrollPane scrollPane = new JScrollPane(jep);
- scrollPane.setBounds(10, 10, 750, 550);
- getContentPane().add(scrollPane);
-
- // File proxyTxt = new File("proxy.txt");
- // if (!proxyTxt.exists()) {
- // jep.setText("Sorry, file proxy.txt was not found.");
- // return;
- // }
- // final HttpProxy httpProxy;
- // try {
- // httpProxy = new HttpProxy(proxyTxt);
- // } catch (RuntimeException e) {
- // jep.setContentType("text/html");
- // jep.setText(e.getMessage());
- // return;
- // }
- try {
- String pocasiHtml = null;
- File pocasiHtmlFile = new File("pocasi.html");
- try {
- pocasiHtml = downloadFile("https://pocasi.seznam.cz/praha");
- pocasiHtml = prettyFormatXml(pocasiHtml, 4);
- Utils.writeTextToFile(pocasiHtmlFile, pocasiHtml);
- } catch (Exception e) {
- e.printStackTrace();
- pocasiHtml = pocasiHtmlFile.exists()
- ? Utils.readTextFromFile(pocasiHtmlFile)
- : "Sorry, pocasi.html was not found.";
- }
-
- {
- StringBuilder sb = new StringBuilder();
- boolean ogm_detailed_forecast_Started = false;
- for (String line : pocasiHtml.split("\\r?\\n|\\r")) {
-
- if (line.contains("ogm-detailed-forecast")) {
- ogm_detailed_forecast_Started = true;
- }
- if (ogm_detailed_forecast_Started && line
- .contains("