diff --git a/src/main/java/com/zhangmeng/minio/controller/MinioController.java b/src/main/java/com/zhangmeng/minio/controller/MinioController.java index 6856686..e02391c 100644 --- a/src/main/java/com/zhangmeng/minio/controller/MinioController.java +++ b/src/main/java/com/zhangmeng/minio/controller/MinioController.java @@ -8,6 +8,7 @@ import com.zhangmeng.minio.utils.AlertUtils; import com.zhangmeng.minio.utils.MinioUtils; import com.zhangmeng.minio.utils.ResourceUtils; import io.minio.messages.Bucket; +import javafx.application.Platform; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; @@ -24,6 +25,7 @@ import javafx.scene.input.KeyCombination; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.VBox; import javafx.stage.FileChooser; +import javafx.stage.Modality; import javafx.stage.Stage; import java.awt.Toolkit; @@ -37,6 +39,7 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.List; import java.util.Properties; +import java.util.concurrent.CompletableFuture; /** @@ -101,7 +104,7 @@ public class MinioController { public TableColumn file_bucket; public ImageView preview; public TextField upload_path_dir; - + public Button connect_server; private File upload_file; @@ -256,9 +259,9 @@ public class MinioController { return; } String uri = MinioUtils.upload_file(upload_file, upload_path_dir.getText()); - if (uri != null){ + if (uri != null) { String bucketName = backet_list.getSelectionModel().getSelectedItem(); - loadPreview(bucketName,uri); + loadPreview(bucketName, uri); reload(); } @@ -298,6 +301,10 @@ public class MinioController { } }); backet_list.setItems(backet_item_list); + + connect_server.setOnAction(event -> { + load_property(); + }); } public void save_properties() { @@ -354,7 +361,7 @@ public class MinioController { } } - private void loadPreview(String bucketName, String objectName){ + private void loadPreview(String bucketName, String objectName) { String objectUrl = MinioUtils.getPresignedObjectUrl(bucketName, objectName); preview.setImage(new javafx.scene.image.Image(objectUrl)); } @@ -364,12 +371,17 @@ public class MinioController { //获取所有储存桶 backet_item_list.clear(); List buckets = MinioUtils.getAllBuckets(); - if (buckets.size() > 0) { - for (Bucket bucket : buckets) { - backet_item_list.add(bucket.name()); - } + + if (buckets != null) { + Platform.runLater(() -> { + if (buckets.size() > 0) { + for (Bucket bucket : buckets) { + backet_item_list.add(bucket.name()); + } + } + this.backet_list.getSelectionModel().select(bucket_name.getText()); + }); } - this.backet_list.getSelectionModel().select(bucket_name.getText()); } public void load_property() { @@ -388,7 +400,25 @@ public class MinioController { ex.printStackTrace(); } } - load_bucket_list(); + + CompletableFuture future = CompletableFuture.supplyAsync(() -> { + try { + load_bucket_list(); + return "success"; + } catch (Exception e) { + return "failure"; + } + }); + + Alert alert = new Alert(Alert.AlertType.INFORMATION); + alert.initModality(Modality.APPLICATION_MODAL); + alert.setContentText("正在尝试连接服务器..."); + alert.setHeaderText(null); + alert.show(); + + future.whenComplete((result, ex) -> { + Platform.runLater(alert::close); + }); } @FXML diff --git a/src/main/java/com/zhangmeng/minio/utils/MinioUtils.java b/src/main/java/com/zhangmeng/minio/utils/MinioUtils.java index 51817ec..5ccacbc 100644 --- a/src/main/java/com/zhangmeng/minio/utils/MinioUtils.java +++ b/src/main/java/com/zhangmeng/minio/utils/MinioUtils.java @@ -60,7 +60,6 @@ public class MinioUtils { return null; } minioClient = MinioClient.builder().endpoint(endpoint.toString()).credentials(accessKey.toString(), secretKey.toString()).build(); - } return minioClient; } @@ -74,7 +73,10 @@ public class MinioUtils { try { return getDefault().listBuckets(); } catch (ErrorResponseException | InsufficientDataException | InvalidKeyException | InternalException | InvalidResponseException | IOException | NoSuchAlgorithmException | ServerException | XmlParserException e) { - e.printStackTrace(); +// e.printStackTrace(); + Platform.runLater(()->{ + AlertUtils.alert_warning("获取Bucket列表失败,请核对配置信息"); + }); } return null; } diff --git a/src/main/resources/fxml/main.fxml b/src/main/resources/fxml/main.fxml index 8fff2ea..8581773 100644 --- a/src/main/resources/fxml/main.fxml +++ b/src/main/resources/fxml/main.fxml @@ -15,7 +15,7 @@ - + @@ -39,6 +39,7 @@