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

Refactor: Improve handling of ZipEntryPicker

Showing with 29 additions and 15 deletions
+29 -15
...@@ -94,7 +94,7 @@ public class ZipEntryPicker { ...@@ -94,7 +94,7 @@ public class ZipEntryPicker {
private ProgressBar subProgress; private ProgressBar subProgress;
private CityDoctorController controller; private CityDoctorController controller;
private int currentlyLoadedEntry = -1;
private String unknownValueText = Localization.getText("ZipEntryPicker.unknownValue"); private String unknownValueText = Localization.getText("ZipEntryPicker.unknownValue");
...@@ -156,10 +156,6 @@ public class ZipEntryPicker { ...@@ -156,10 +156,6 @@ public class ZipEntryPicker {
Platform.runLater(() -> progress.setProgress(progressValue)) Platform.runLater(() -> progress.setProgress(progressValue))
); );
Platform.runLater(() -> { Platform.runLater(() -> {
if (!decompressAllBtn.isDisable() &&
entryList.getItems().stream().allMatch(zipEntryNode -> zipEntryNode.getEntry().isDecompressed())) {
decompressAllBtn.setDisable(true);
}
populateZipEntryList(entryList.getSelectionModel().getSelectedIndex()); populateZipEntryList(entryList.getSelectionModel().getSelectedIndex());
}); });
}); });
...@@ -169,17 +165,31 @@ public class ZipEntryPicker { ...@@ -169,17 +165,31 @@ public class ZipEntryPicker {
loadBtn.setOnAction(e -> { loadBtn.setOnAction(e -> {
disableTaskButtons(); disableTaskButtons();
CityGmlZipEntry entry = entryList.getSelectionModel().getSelectedItem().getEntry(); entryList.setMouseTransparent(true);
if (entry.getErrorType() != null) { entryList.setFocusTraversable(false);
/** try {
* Button is disabled when an erroneous entry gets selected. int selectedIndex = entryList.getSelectionModel().getSelectedIndex();
* Silently fail in case an erroneous entry is somehow selected on Action. if (selectedIndex == currentlyLoadedEntry) {
*/ stage.hide();
logger.debug("IllegalState: loadBtn was pressed while an erroneous entry was selected"); return;
return; }
CityGmlZipEntry entry = entryList.getSelectionModel().getSelectedItem().getEntry();
if (entry.getErrorType() != null) {
/**
* 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);
} }
controller.loadZipEntry(entry);
stage.hide();
}); });
...@@ -242,6 +252,8 @@ public class ZipEntryPicker { ...@@ -242,6 +252,8 @@ public class ZipEntryPicker {
entryList.getSelectionModel().clearSelection(); entryList.getSelectionModel().clearSelection();
entryList.getSelectionModel().select(selectionIndex); entryList.getSelectionModel().select(selectionIndex);
showMetadata(entryList.getSelectionModel().getSelectedItem().getEntry()); showMetadata(entryList.getSelectionModel().getSelectedItem().getEntry());
decompressAllBtn.setDisable(
entryList.getItems().stream().allMatch(zipEntryNode -> zipEntryNode.getEntry().isDecompressed()));
} }
private void showMetadata(CityGmlZipEntry entry) { private void showMetadata(CityGmlZipEntry entry) {
...@@ -288,6 +300,7 @@ public class ZipEntryPicker { ...@@ -288,6 +300,7 @@ public class ZipEntryPicker {
} }
objectCountValue.setText(String.valueOf(entry.getModel().getNumberOfFeatures())); objectCountValue.setText(String.valueOf(entry.getModel().getNumberOfFeatures()));
} }
} }
private void disableTaskButtons() { private void disableTaskButtons() {
...@@ -314,5 +327,6 @@ public class ZipEntryPicker { ...@@ -314,5 +327,6 @@ public class ZipEntryPicker {
Platform.runLater(() -> { Platform.runLater(() -> {
stage.showAndWait(); 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