public static void estimateKeyDerivationTime() { // This is run in the background after startup. If we haven't recorded it before, do a key // derivation to see // how long it takes. This helps us produce better progress feedback, as on Windows we don't // currently have a // native Scrypt impl and the Java version is ~3 times slower, plus it depends a lot on CPU // speed. checkGuiThread(); estimatedKeyDerivationTime = Main.instance.prefs.getExpectedKeyDerivationTime(); if (estimatedKeyDerivationTime == null) { new Thread( () -> { log.info("Doing background test key derivation"); KeyCrypterScrypt scrypt = new KeyCrypterScrypt(SCRYPT_PARAMETERS); long start = System.currentTimeMillis(); scrypt.deriveKey("test password"); long msec = System.currentTimeMillis() - start; log.info("Background test key derivation took {}msec", msec); Platform.runLater( () -> { estimatedKeyDerivationTime = Duration.ofMillis(msec); Main.instance.prefs.setExpectedKeyDerivationTime(estimatedKeyDerivationTime); }); }) .start(); } }
/** Met fin au programme et demande à l'utilisateur s'il veut sauvegarder. */ protected void quitter() { if (model.flagModif) { Alert alert = new Alert(AlertType.CONFIRMATION); alert.setTitle("Sauvegarde du dictionnaire"); alert.setContentText("Voulez-vous enregistrer les nouvelles modifications au dictionnaire?"); alert.setHeaderText(null); ButtonType yes = new ButtonType("Oui"); ButtonType no = new ButtonType("Non"); alert.getButtonTypes().setAll(yes, no); Optional<ButtonType> result = alert.showAndWait(); if (result.get() == yes) { try { model.sauvegardeFichier(); } catch (IOException e) { e.printStackTrace(); Alert alertSave = new Alert(AlertType.ERROR); alertSave.setTitle("IO Error"); alertSave.setContentText("Save File error"); alertSave.showAndWait(); } } } System.exit(0); }
/** * Cancel button click handler. * * @param event {@link javafx.event.ActionEvent} */ @FXML private void cancelButtonClick(ActionEvent event) { System.exit(0); }