From 362ef2282c3efa0a2a8b807218f61c77697c6367 Mon Sep 17 00:00:00 2001 From: Jakob Heher Date: Wed, 10 Aug 2022 10:47:13 +0200 Subject: offer factory reset if startup fails, or config screen fails to load, cf. #114 --- .../gui/workflow/states/ConfigurationUIState.java | 31 +++++++++++++++++++--- .../workflow/states/PrepareConfigurationState.java | 16 ++++++----- 2 files changed, 37 insertions(+), 10 deletions(-) (limited to 'pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states') diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ConfigurationUIState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ConfigurationUIState.java index 74b38410..2aad12c9 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ConfigurationUIState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/ConfigurationUIState.java @@ -20,11 +20,15 @@ import org.eclipse.swt.SWT; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import at.asit.pdfover.commons.Messages; import at.asit.pdfover.gui.MainWindowBehavior; import at.asit.pdfover.gui.MainWindow.Buttons; import at.asit.pdfover.gui.composites.ConfigurationComposite; +import at.asit.pdfover.gui.controls.ErrorDialog; +import at.asit.pdfover.gui.controls.Dialog.BUTTONS; import at.asit.pdfover.gui.workflow.StateMachine; import at.asit.pdfover.gui.workflow.Status; +import at.asit.pdfover.gui.workflow.config.ConfigurationManager; /** * @@ -64,10 +68,29 @@ public class ConfigurationUIState extends State { @Override public void run() { Status status = getStateMachine().status; - - ConfigurationComposite config = this.getConfigurationComposite(); - - getStateMachine().display(config); + + ConfigurationComposite config; + try { + config = this.getConfigurationComposite(); + getStateMachine().display(config); + } catch (Exception e) { + log.error("Failed to initialize config UI", e); + ErrorDialog error = new ErrorDialog( + getStateMachine().getMainShell(), + Messages.getString("error.ConfigInitialization"), + BUTTONS.YES_NO + ); + + int selection = error.open(); + if (selection == SWT.YES) + { + ConfigurationManager.factoryResetPersistentConfig(); + getStateMachine().exit(); + return; + } + + throw e; + } if(config.isUserDone()) { diff --git a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java index 1a3fd8b5..b6ea9c0b 100644 --- a/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java +++ b/pdf-over-gui/src/main/java/at/asit/pdfover/gui/workflow/states/PrepareConfigurationState.java @@ -348,15 +348,19 @@ public class PrepareConfigurationState extends State { setNextState(new OpenState(stateMachine)); - } catch (InitializationException e) { + } catch (Exception e) { log.error("Failed to initialize: ", e); - ErrorDialog error = new ErrorDialog(getStateMachine() - .getMainShell(), - Messages.getString("error.Initialization"), - BUTTONS.OK); + ErrorDialog error = new ErrorDialog( + getStateMachine().getMainShell(), + Messages.getString("error.Initialization"), + BUTTONS.YES_NO + ); // error.setException(e); // setNextState(error); - error.open(); + int selection = error.open(); + if (selection == SWT.YES) + ConfigurationManager.factoryResetPersistentConfig(); + getStateMachine().exit(); } } -- cgit v1.2.3