2424import java .util .Optional ;
2525import java .util .stream .Collectors ;
2626
27+ import javafx .stage .Window ;
2728import org .slf4j .Logger ;
2829import org .slf4j .LoggerFactory ;
2930import org .springframework .boot .SpringApplication ;
@@ -78,6 +79,7 @@ public class App extends Application {
7879 private ViewController viewController ;
7980
8081 private GlobalScreenListener globalScreenListener ;
82+ private Settings settings ;
8183
8284 @ Override
8385 public void init () throws Exception {
@@ -95,6 +97,7 @@ public void init() throws Exception {
9597
9698 model = springContext .getBean (Model .class );
9799 controller = springContext .getBean (Controller .class );
100+ settings = springContext .getBean (Settings .class );
98101 controller .enableAutoSave ();
99102 model .setSpringContext (springContext );
100103 }
@@ -108,36 +111,43 @@ public void start(final Stage primaryStage) {
108111 } catch (final Exception e ) {
109112 LOG .error ("There was an error while initialising the UI" , e );
110113
111- final Alert alert = new Alert (AlertType .ERROR );
112- alert .setTitle ("Error" );
113- alert .setHeaderText ("Could not start application" );
114- alert .setContentText ("Please send the error with your logs folder to a developer" );
114+ showErrorDialogAndWait ("Error" , "Could not start application" ,
115+ "Please send the error with your logs folder to a developer" , e , null );
116+ System .exit (1 );
117+ }
118+ }
115119
116- final StringWriter sw = new StringWriter ();
117- final PrintWriter pw = new PrintWriter (sw );
118- e .printStackTrace (pw );
119- final String exceptionText = sw .toString ();
120+ public static void showErrorDialogAndWait (String title , String header , String content , final Exception e , Window window ) {
121+ final Alert alert = new Alert (AlertType .ERROR );
122+ alert .setTitle (title );
123+ alert .setHeaderText (header );
124+ alert .setContentText (content );
125+ if (window != null ) {
126+ alert .initOwner (window );
127+ }
128+ final StringWriter sw = new StringWriter ();
129+ final PrintWriter pw = new PrintWriter (sw );
130+ e .printStackTrace (pw );
131+ final String exceptionText = sw .toString ();
120132
121- final Label label = new Label ("The exception stacktrace was:" );
133+ final Label label = new Label ("The exception stacktrace was:" );
122134
123- final TextArea textArea = new TextArea (exceptionText );
124- textArea .setEditable (false );
125- textArea .setWrapText (true );
135+ final TextArea textArea = new TextArea (exceptionText );
136+ textArea .setEditable (false );
137+ textArea .setWrapText (true );
126138
127- textArea .setMaxWidth (Double .MAX_VALUE );
128- textArea .setMaxHeight (Double .MAX_VALUE );
129- GridPane .setVgrow (textArea , Priority .ALWAYS );
130- GridPane .setHgrow (textArea , Priority .ALWAYS );
139+ textArea .setMaxWidth (Double .MAX_VALUE );
140+ textArea .setMaxHeight (Double .MAX_VALUE );
141+ GridPane .setVgrow (textArea , Priority .ALWAYS );
142+ GridPane .setHgrow (textArea , Priority .ALWAYS );
131143
132- final GridPane expContent = new GridPane ();
133- expContent .setMaxWidth (Double .MAX_VALUE );
134- expContent .add (label , 0 , 0 );
135- expContent .add (textArea , 0 , 1 );
144+ final GridPane expContent = new GridPane ();
145+ expContent .setMaxWidth (Double .MAX_VALUE );
146+ expContent .add (label , 0 , 0 );
147+ expContent .add (textArea , 0 , 1 );
136148
137- alert .getDialogPane ().setExpandableContent (expContent );
138- alert .showAndWait ();
139- System .exit (1 );
140- }
149+ alert .getDialogPane ().setExpandableContent (expContent );
150+ alert .showAndWait ();
141151 }
142152
143153 private void initialiseApplication (final Stage primaryStage ) throws Exception {
@@ -183,27 +193,6 @@ private void initialiseApplication(final Stage primaryStage) throws Exception {
183193 private void readSettings () {
184194 LOG .debug ("Reading configuration" );
185195
186- final List <Settings > settingsList = model .getSettingsRepository ().findAll ();
187- final Settings settings ;
188- if (settingsList .isEmpty ()) {
189- LOG .info ("Empty settings. Set default" );
190- settings = new Settings ();
191- settings .setTaskBarColor (model .taskBarColor .get ());
192-
193- settings .setDefaultBackgroundColor (Model .ORIGINAL_DEFAULT_BACKGROUND_COLOR );
194- settings .setDefaultFontColor (Model .ORIGINAL_DEFAULT_FONT_COLOR );
195-
196- settings .setHoverBackgroundColor (Model .ORIGINAL_HOVER_BACKGROUND_COLOR );
197- settings .setHoverFontColor (Model .ORIGINAL_HOVER_Font_COLOR );
198- settings .setUseHotkey (false );
199- settings .setDisplayProjectsRight (false );
200- settings .setHideProjectsOnMouseExit (false );
201- model .getSettingsRepository ().save (settings );
202- } else {
203- LOG .info ("Got settings from database" );
204- settings = settingsList .get (0 );
205- }
206-
207196 model .defaultBackgroundColor .set (settings .getDefaultBackgroundColor ());
208197 model .defaultFontColor .set (settings .getDefaultFontColor ());
209198 model .hoverBackgroundColor .set (settings .getHoverBackgroundColor ());
0 commit comments