Commit 1c4d930e authored by Riegel's avatar Riegel
Browse files

Refactor: Improve handling of ZipEntryPicker

2 merge requests!28Version 3.17.0 Release,!26Add ZIP-archive support
Showing with 29 additions and 15 deletions
+29 -15
......@@ -94,7 +94,7 @@ public class ZipEntryPicker {
private ProgressBar subProgress;
private CityDoctorController controller;
private int currentlyLoadedEntry = -1;
private String unknownValueText = Localization.getText("ZipEntryPicker.unknownValue");
......@@ -156,10 +156,6 @@ public class ZipEntryPicker {
Platform.runLater(() -> progress.setProgress(progressValue))
);
Platform.runLater(() -> {
if (!decompressAllBtn.isDisable() &&
entryList.getItems().stream().allMatch(zipEntryNode -> zipEntryNode.getEntry().isDecompressed())) {
decompressAllBtn.setDisable(true);
}
populateZipEntryList(entryList.getSelectionModel().getSelectedIndex());
});
});
......@@ -169,17 +165,31 @@ public class ZipEntryPicker {
loadBtn.setOnAction(e -> {
disableTaskButtons();
entryList.setMouseTransparent(true);
entryList.setFocusTraversable(false);
try {
int selectedIndex = entryList.getSelectionModel().getSelectedIndex();
if (selectedIndex == currentlyLoadedEntry) {
stage.hide();
return;
}
CityGmlZipEntry entry = entryList.getSelectionModel().getSelectedItem().getEntry();
if (entry.getErrorType() != null) {
/**
* Button is disabled when an erroneous entry gets selected.
* Button should be disabled when an erroneous entry gets selected.
* Silently fail in case an erroneous entry is somehow selected on Action.
*/
logger.debug("IllegalState: loadBtn was pressed while an erroneous entry was selected");
populateZipEntryList(selectedIndex);
return;
}
controller.loadZipEntry(entry);
currentlyLoadedEntry = selectedIndex;
stage.hide();
} finally {
entryList.setMouseTransparent(false);
entryList.setFocusTraversable(true);
}
});
......@@ -242,6 +252,8 @@ public class ZipEntryPicker {
entryList.getSelectionModel().clearSelection();
entryList.getSelectionModel().select(selectionIndex);
showMetadata(entryList.getSelectionModel().getSelectedItem().getEntry());
decompressAllBtn.setDisable(
entryList.getItems().stream().allMatch(zipEntryNode -> zipEntryNode.getEntry().isDecompressed()));
}
private void showMetadata(CityGmlZipEntry entry) {
......@@ -288,6 +300,7 @@ public class ZipEntryPicker {
}
objectCountValue.setText(String.valueOf(entry.getModel().getNumberOfFeatures()));
}
}
private void disableTaskButtons() {
......@@ -314,5 +327,6 @@ public class ZipEntryPicker {
Platform.runLater(() -> {
stage.showAndWait();
});
populateZipEntryList(entryList.getSelectionModel().getSelectedIndex());
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment