4545import javafx .application .Application ;
4646import javafx .beans .value .ChangeListener ;
4747import javafx .beans .value .ObservableValue ;
48- import javafx .event .EventHandler ;
4948import javafx .fxml .FXMLLoader ;
5049import javafx .scene .Parent ;
5150import javafx .scene .Scene ;
6362import javafx .scene .paint .Color ;
6463import javafx .stage .Stage ;
6564import javafx .stage .StageStyle ;
66- import javafx .stage .WindowEvent ;
6765
6866@ SpringBootApplication
6967public class Main extends Application {
@@ -206,8 +204,8 @@ private void readSettings() {
206204 model .useHotkey .set (settings .isUseHotkey ());
207205 model .displayProjectsRight .set (settings .isDisplayProjectsRight ());
208206 model .hideProjectsOnMouseExit .set (settings .isHideProjectsOnMouseExit ());
209- model .screenSettings .xProportion .set (settings .getWindowXProportion ());
210- model .screenSettings .yProportion .set (settings .getWindowYProportion ());
207+ model .screenSettings .proportionalX .set (settings .getWindowXProportion ());
208+ model .screenSettings .proportionalY .set (settings .getWindowYProportion ());
211209 model .screenSettings .screenHash .set (settings .getScreenHash ());
212210 model .screenSettings .saveWindowPosition .set (settings .isSaveWindowPosition ());
213211 model .remindIfNotesAreEmpty .set (settings .isRemindIfNotesAreEmpty ());
@@ -246,57 +244,13 @@ private void initialisePopupUI(final Stage primaryStage) throws IOException {
246244 private void initialiseUI (final Stage primaryStage ) throws IOException {
247245 LOG .debug ("Initialising main UI." );
248246
249- final ScreenPosHelper poshelper = new ScreenPosHelper (model .screenSettings .screenHash .get (),
250- model .screenSettings .xProportion .get (), model .screenSettings .yProportion .get ());
251- poshelper .resetPositionIfInvalid ();
252-
253- // set stage to saved Position
254- if (model .screenSettings .saveWindowPosition .get ()) {
255- primaryStage .setX (poshelper .getAbsoluteX ());
256- primaryStage .setY (poshelper .getAbsoluteY ());
257- }
258-
259- // add listeners to record Windowpositionchange
260-
261- final ChangeListener <Number > posChange = new ChangeListener <Number >() {
262-
263- @ Override
264- public void changed (final ObservableValue <? extends Number > observable , final Number oldValue ,
265- final Number newValue ) {
266-
267- // dont save if option disabled
268- if (!model .screenSettings .saveWindowPosition .get ()) {
269- return ;
270- }
271-
272- if (observable .equals (primaryStage .xProperty ())) {
273- poshelper .setAbsoluteX (newValue .doubleValue ());
274- } else {
275- poshelper .setAbsoluteY (newValue .doubleValue ());
276- }
277-
278- final Settings newSettings = new Settings (model .hoverBackgroundColor .get (), model .hoverFontColor .get (),
279- model .defaultBackgroundColor .get (), model .defaultFontColor .get (), model .taskBarColor .get (),
280- model .useHotkey .get (), model .displayProjectsRight .get (), model .hideProjectsOnMouseExit .get (),
281- poshelper .getProportionalX (), poshelper .getProportionalY (), poshelper .getScreenHash (),
282- model .screenSettings .saveWindowPosition .get (), model .remindIfNotesAreEmpty .get ());
283-
284- controller .updateSettings (newSettings );
285-
286- }
287-
288- };
289-
290- primaryStage .xProperty ().addListener (posChange );
291- primaryStage .yProperty ().addListener (posChange );
292-
293- Pane mainPane ;
247+ setupStagePositioning (primaryStage );
294248
295249 // Load root layout from fxml file.
296250 final FXMLLoader loader = new FXMLLoader ();
297251 loader .setLocation (Resources .getResource (RESOURCE .FXML_VIEW_LAYOUT ));
298252 loader .setControllerFactory (springContext ::getBean );
299- mainPane = loader .load ();
253+ final Pane mainPane = loader .load ();
300254 primaryStage .initStyle (StageStyle .TRANSPARENT );
301255 // Show the scene containing the root layout.
302256 final Scene mainScene = new Scene (mainPane , Color .TRANSPARENT );
@@ -309,19 +263,49 @@ public void changed(final ObservableValue<? extends Number> observable, final Nu
309263 primaryStage .setAlwaysOnTop (true );
310264 primaryStage .setResizable (false );
311265
312- primaryStage .setOnCloseRequest (new EventHandler <WindowEvent >() {
313- @ Override
314- public void handle (final WindowEvent event ) {
315- LOG .info ("On close request" );
316- }
317- });
266+ primaryStage .setOnCloseRequest (windowEvent -> LOG .info ("On close request" ));
267+
318268 primaryStage .show ();
319269 viewController = loader .getController ();
320270 // Give the controller access to the main app.
321271 viewController .setStage (primaryStage );
322272
323273 }
324274
275+ private void setupStagePositioning (final Stage stage ) {
276+ final ScreenPosHelper positionHelper = new ScreenPosHelper (model .screenSettings .screenHash .get (),
277+ model .screenSettings .proportionalX .get (), model .screenSettings .proportionalY .get ());
278+ positionHelper .resetPositionIfInvalid ();
279+
280+ // set stage to saved Position
281+ if (model .screenSettings .saveWindowPosition .get ()) {
282+ stage .setX (positionHelper .getAbsoluteX ());
283+ stage .setY (positionHelper .getAbsoluteY ());
284+ }
285+
286+ // add listeners to record Windowpositionchange
287+ final ChangeListener <Number > positionChangeListener = (final ObservableValue <? extends Number > observable ,
288+ final Number oldValue , final Number newValue ) -> {
289+ // don't save if option disabled
290+ if (!model .screenSettings .saveWindowPosition .get ()) {
291+ return ;
292+ }
293+
294+ if (observable .equals (stage .xProperty ())) {
295+ positionHelper .setAbsoluteX (newValue .doubleValue ());
296+ } else {
297+ positionHelper .setAbsoluteY (newValue .doubleValue ());
298+ }
299+
300+ model .screenSettings .screenHash .set (positionHelper .getScreenHash ());
301+ model .screenSettings .proportionalX .set (positionHelper .getProportionalX ());
302+ model .screenSettings .proportionalY .set (positionHelper .getProportionalY ());
303+ };
304+
305+ stage .xProperty ().addListener (positionChangeListener );
306+ stage .yProperty ().addListener (positionChangeListener );
307+ }
308+
325309 private void registerMinimizeEventlistener (final Scene mainScene , final Stage primaryStage ) {
326310 final KeyCombination keyComb = new KeyCodeCombination (KeyCode .DOWN , KeyCombination .META_DOWN );
327311 mainScene .addEventFilter (KeyEvent .KEY_RELEASED , keyEvent -> {
0 commit comments