diff --git a/bin/application/Main.class b/bin/application/Main.class index 3ad29be..1047668 100644 Binary files a/bin/application/Main.class and b/bin/application/Main.class differ diff --git a/src/application/Main.java b/src/application/Main.java index 776b1ab..142b506 100644 --- a/src/application/Main.java +++ b/src/application/Main.java @@ -20,6 +20,9 @@ import java.net.URL; import java.nio.channels.Channels; import java.nio.channels.ReadableByteChannel; import java.util.Optional; +import java.util.Timer; +import java.util.TimerTask; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import javafx.application.Application; @@ -189,6 +192,10 @@ public class Main extends Application { private void initActions() { final ChangeListener widthListener = new ChangeListener() { + + final Timer timer = new Timer(); + TimerTask saveTask = null; //task to execute save operation + final long delayTime = 500; //delay until the window size is saved, if the window is resized earlier it will be killed, default is 500ms @Override public void changed(ObservableValue observable, Number oldValue, final Number newValue) { @@ -201,16 +208,37 @@ public class Main extends Application { mainWindowController.refreshUIData(); } - //TODO saveSettings only on left mouseBtn release - mainWindowController.saveSettings(); + //if saveTask is already running kill it + if (saveTask != null) saveTask.cancel(); + + saveTask = new TimerTask() { + @Override + public void run() { + mainWindowController.saveSettings(); + } + }; + timer.schedule(saveTask, delayTime); } }; final ChangeListener heightListener = new ChangeListener() { + final Timer timer = new Timer(); + TimerTask saveTask = null; //task to execute save operation + final long delayTime = 500; //delay until the window size is saved, if the window is resized earlier it will be killed, default is 500ms + @Override public void changed(ObservableValue observable, Number oldValue, final Number newValue) { - mainWindowController.saveSettings(); + + if (saveTask != null) saveTask.cancel(); + + saveTask = new TimerTask() { + @Override + public void run() { + mainWindowController.saveSettings(); + } + }; + timer.schedule(saveTask, delayTime); } };