Fix keybinding dialog creating on top of another keybinding dialog.

#story[1278]
This commit is contained in:
Zhi You Tan
2017-09-19 23:41:06 +12:00
parent 03f5f91043
commit 8084a61333
@@ -4,25 +4,13 @@ import com.jfoenix.controls.JFXButton;
import com.jfoenix.controls.JFXDecorator; import com.jfoenix.controls.JFXDecorator;
import com.jfoenix.controls.JFXDialog; import com.jfoenix.controls.JFXDialog;
import com.jfoenix.controls.JFXDialog.DialogTransition; import com.jfoenix.controls.JFXDialog.DialogTransition;
import com.jfoenix.controls.events.JFXDialogEvent;
import com.jfoenix.svg.SVGGlyph; import com.jfoenix.svg.SVGGlyph;
import com.sun.org.apache.xpath.internal.operations.Bool;
import java.io.IOException;
import java.util.HashMap;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Cursor; import javafx.scene.*;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.SceneAntialiasing;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import javafx.stage.Stage; import javafx.stage.Stage;
@@ -33,6 +21,9 @@ import seng302.utilities.BonjourInstallChecker;
import seng302.utilities.Sounds; import seng302.utilities.Sounds;
import seng302.visualiser.GameClient; import seng302.visualiser.GameClient;
import java.io.IOException;
import java.util.HashMap;
public class ViewManager { public class ViewManager {
private static ViewManager instance; private static ViewManager instance;
@@ -187,15 +178,22 @@ public class ViewManager {
} }
/**
* Recursively find JFXDialog given a starting node. Will traverse children of StackPane.
*
* @param nodes children nodes to be check.
* @return true if node contains JFXDialog.
*/
private Boolean checkDialogOpened(ObservableList<Node> nodes) { private Boolean checkDialogOpened(ObservableList<Node> nodes) {
boolean foundJFXDialog = false;
for (Node node : nodes) { for (Node node : nodes) {
if (node instanceof JFXDialog) { if (node instanceof JFXDialog) {
return true; return true;
} else if (node instanceof StackPane) { } else if (node instanceof StackPane) {
return checkDialogOpened(((StackPane) node).getChildren()); foundJFXDialog = checkDialogOpened(((StackPane) node).getChildren());
} }
} }
return false; return foundJFXDialog;
} }
private void showKeyBindingDialog() throws IOException { private void showKeyBindingDialog() throws IOException {