package games.strategy.engine.framework.map.download;
import java.util.List;
import java.util.Optional;
import games.strategy.ui.SwingComponents;
/**
* Simple static utility class to show a confirmation dialog to the user, if they hit accept a new browser
* window opens with the github issues page for the map selected.
*/
public final class FeedbackDialog {
private FeedbackDialog() {}
/**
* Determines the selected map and opens a confirmation dialog asking the user if its okay to open an external URL.
*/
public static void showFeedbackDialog(final List<String> selectedValuesList,
final List<DownloadFileDescription> maps) {
if (selectedValuesList.isEmpty()) {
return;
}
final Optional<DownloadFileDescription> mapSelection = findFirstSelectedMap(selectedValuesList, maps);
if (mapSelection.isPresent()) {
final String feedbackURL = mapSelection.get().getFeedbackUrl();
SwingComponents.newOpenUrlConfirmationDialog(feedbackURL);
} else {
SwingComponents.newMessageDialog("To open the map feedback from in your web browser, please first select a map "
+ "title, and then click the feedback button again.");
}
}
/*
* Returns an Optional.empty() if only 'header' elements were selected, otherwise the first
* map that was selected is returned.
*/
private static Optional<DownloadFileDescription> findFirstSelectedMap(final List<String> selectedValuesList,
final List<DownloadFileDescription> maps) {
for (final String selection : selectedValuesList) {
for (final DownloadFileDescription map : maps) {
if (map.getMapName().equals(selection)) {
return Optional.of(map);
}
}
}
return Optional.empty();
}
}