• R/O
  • SSH
  • HTTPS

jpki: コミット


コミットメタ情報

リビジョン47 (tree)
日時2020-01-03 11:32:29
作者hirukawa_ryo

ログメッセージ

* jpki-pdf-signer 1.1
署名処理をワーカースレッドで実行するようにしました。

変更サマリ

差分

--- jpki-pdf-signer/trunk/src/main/java/net/osdn/jpki/pdf_signer/Main.java (revision 46)
+++ jpki-pdf-signer/trunk/src/main/java/net/osdn/jpki/pdf_signer/Main.java (revision 47)
@@ -4,7 +4,9 @@
44 import javafx.beans.binding.Bindings;
55 import javafx.beans.binding.ObjectBinding;
66 import javafx.beans.binding.StringBinding;
7+import javafx.beans.property.BooleanProperty;
78 import javafx.beans.property.ObjectProperty;
9+import javafx.beans.property.SimpleBooleanProperty;
810 import javafx.beans.property.SimpleObjectProperty;
911 import javafx.event.ActionEvent;
1012 import javafx.fxml.FXML;
@@ -18,6 +20,7 @@
1820 import javafx.scene.control.ListCell;
1921 import javafx.scene.control.ListView;
2022 import javafx.scene.control.MenuItem;
23+import javafx.scene.control.ProgressIndicator;
2124 import javafx.scene.image.Image;
2225 import javafx.scene.image.ImageView;
2326 import javafx.scene.input.DragEvent;
@@ -148,6 +151,9 @@
148151 title = exception.getClass().getName();
149152 }
150153 String message = exception.getLocalizedMessage();
154+ if(message != null) {
155+ message = message.trim();
156+ }
151157 toast.show(Toast.RED, title, message, null);
152158 };
153159 if(Platform.isFxApplicationThread()) {
@@ -165,6 +171,7 @@
165171 @FXML Pager pager;
166172 @FXML PdfView pdfView;
167173 @FXML ImageView ivCursor;
174+ @FXML ProgressIndicator piSign;
168175 @FXML Button btnRemoveSignature;
169176 @FXML Button btnEditSignature;
170177 @FXML Button btnAddSignature;
@@ -172,6 +179,7 @@
172179 ObjectBinding<Signature> signatureBinding;
173180 ObjectProperty<File> inputFileProperty = new SimpleObjectProperty<File>();
174181 ObjectProperty<File> signedTemporaryFileProperty = new SimpleObjectProperty<File>();
182+ BooleanProperty busyProperty = new SimpleBooleanProperty();
175183
176184 @Override
177185 public void initialize(URL location, ResourceBundle resources) {
@@ -224,6 +232,8 @@
224232 btnEditSignature.disableProperty().bind(
225233 Bindings.not(Bindings.selectBoolean(signatureBinding, "visible")));
226234
235+ piSign.visibleProperty().bind(busyProperty);
236+
227237 toast.maxWidthProperty().bind(getPrimaryStage().widthProperty().subtract(32));
228238 toast.maxHeightProperty().bind(getPrimaryStage().heightProperty().subtract(32));
229239 }
@@ -334,6 +344,7 @@
334344 File file = fc.showSaveDialog(getPrimaryStage());
335345 if(file != null) {
336346 Files.copy(signedTemporaryFileProperty.get().toPath(), file.toPath(), StandardCopyOption.REPLACE_EXISTING);
347+ toast.show(Toast.GREEN, "保存しました", file.getPath(), Toast.LONG);
337348 }
338349 }
339350
@@ -423,18 +434,23 @@
423434 PDDocument document = pdfView.getDocument();
424435 int pageIndex = pdfView.getPageIndex();
425436 SignatureOptions options = null;
426- File tmpFile = sign(document, null, APPLICATION_NAME, APPLICATION_VERSION);
427- if(tmpFile != null) {
428- signedTemporaryFileProperty.set(tmpFile);
429- pdfView.load(tmpFile, pageIndex);
430437
431- result = Dialogs.showConfirmation(getPrimaryStage(),
432- APPLICATION_NAME + " " + APPLICATION_VERSION,
433- "署名が完了しました。\nファイルに名前を付けて保存しますか?");
434- if(result == ButtonType.YES) {
435- menuFileSave.fire();
436- }
437- }
438+ busyProperty.set(true);
439+ Async.execute(() -> sign(document, null, APPLICATION_NAME, APPLICATION_VERSION))
440+ .onSucceeded(tmpFile -> {
441+ if(tmpFile != null) {
442+ signedTemporaryFileProperty.set(tmpFile);
443+ pdfView.load(tmpFile, pageIndex);
444+ busyProperty.set(false);
445+
446+ if(ButtonType.YES == Dialogs.showConfirmation(getPrimaryStage(),
447+ APPLICATION_NAME + " " + APPLICATION_VERSION,
448+ "署名が完了しました。\nファイルに名前を付けて保存しますか?")) {
449+ menuFileSave.fire();
450+ }
451+ }
452+ })
453+ .onCompleted(state -> busyProperty.set(false));
438454 }
439455 }
440456 } finally {
@@ -523,18 +539,23 @@
523539 options.setPage(pageIndex);
524540 options.setVisualSignature(props);
525541
526- File tmpFile = sign(document, options, APPLICATION_NAME, APPLICATION_VERSION);
527- if(tmpFile != null) {
528- signedTemporaryFileProperty.set(tmpFile);
529- pdfView.load(tmpFile, pageIndex);
542+ lvSignature.getSelectionModel().clearSelection();
543+ busyProperty.set(true);
544+ Async.execute(() -> sign(document, options, APPLICATION_NAME, APPLICATION_VERSION))
545+ .onSucceeded(tmpFile -> {
546+ if(tmpFile != null) {
547+ signedTemporaryFileProperty.set(tmpFile);
548+ pdfView.load(tmpFile, pageIndex);
549+ busyProperty.set(false);
530550
531- ButtonType result = Dialogs.showConfirmation(getPrimaryStage(), APPLICATION_NAME + " " + APPLICATION_VERSION,
532- "署名が完了しました。\nファイルに名前を付けて保存しますか?");
533- if(result == ButtonType.YES) {
534- menuFileSave.fire();
535- }
536- lvSignature.getSelectionModel().clearSelection();
537- }
551+ if(ButtonType.YES == Dialogs.showConfirmation(getPrimaryStage(), APPLICATION_NAME + " " + APPLICATION_VERSION,
552+ "署名が完了しました。\nファイルに名前を付けて保存しますか?")) {
553+ menuFileSave.fire();
554+ }
555+ lvSignature.getSelectionModel().clearSelection();
556+ }
557+ })
558+ .onCompleted(state -> busyProperty.set(false));
538559 }
539560
540561 protected File getFile(DragEvent event) {
旧リポジトリブラウザで表示