mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 10:54:51 +00:00
Working escape menu
This commit is contained in:
@@ -141,8 +141,8 @@ public final class App extends Application {
|
||||
if (WidgetContainer.getAllWidgets().stream().anyMatch(
|
||||
e -> e instanceof QuitPopup || e instanceof EscapePopup
|
||||
)) {
|
||||
WidgetContainer.findRemove(QuitPopup.class);
|
||||
WidgetContainer.findRemove(EscapePopup.class);
|
||||
WidgetContainer.findRemoveFirst(QuitPopup.class);
|
||||
WidgetContainer.findRemoveFirst(EscapePopup.class);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.toop.app.widget;
|
||||
|
||||
import javafx.scene.Node;
|
||||
import org.toop.app.widget.complex.PopupWidget;
|
||||
import org.toop.app.widget.complex.ViewWidget;
|
||||
|
||||
@@ -70,6 +71,19 @@ public final class WidgetContainer {
|
||||
);
|
||||
}
|
||||
|
||||
public static void findRemoveFirst(Class<? extends Widget> widgetClass) {
|
||||
if (root == null || currentView == null) return;
|
||||
|
||||
Platform.runLater(() -> {
|
||||
for (Node widget : currentView.getChildren()) {
|
||||
if (widgetClass.isAssignableFrom(widget.getClass())) {
|
||||
currentView.getChildren().remove(widget);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static ViewWidget getCurrentView() {
|
||||
return currentView;
|
||||
}
|
||||
|
||||
@@ -2,25 +2,30 @@ package org.toop.app.widget.popup;
|
||||
|
||||
import javafx.geometry.Pos;
|
||||
import org.toop.app.App;
|
||||
import org.toop.app.widget.Primitive;
|
||||
import org.toop.app.widget.WidgetContainer;
|
||||
import org.toop.app.widget.complex.ConfirmWidget;
|
||||
import org.toop.app.widget.complex.PopupWidget;
|
||||
import org.toop.app.widget.view.OptionsView;
|
||||
|
||||
public class EscapePopup extends PopupWidget {
|
||||
public EscapePopup() {
|
||||
var confirmWidget = new ConfirmWidget("are-you-sure");
|
||||
var con = Primitive.button("Continue", () -> { hide(); }, false); // TODO, localize
|
||||
|
||||
confirmWidget.addButton("yes", () -> {
|
||||
App.quit();
|
||||
});
|
||||
|
||||
confirmWidget.addButton("no", () -> {
|
||||
var qui = Primitive.button("quit", () -> {
|
||||
hide();
|
||||
WidgetContainer.add(Pos.CENTER, new QuitPopup());
|
||||
});
|
||||
|
||||
add(Pos.CENTER, confirmWidget);
|
||||
|
||||
setOnPop(() -> {
|
||||
if (!(WidgetContainer.getCurrentView().getClass().isAssignableFrom(OptionsView.class))) {
|
||||
var opt = Primitive.button("options", () -> {
|
||||
hide();
|
||||
WidgetContainer.getCurrentView().transitionNext(new OptionsView());
|
||||
});
|
||||
add(Pos.CENTER, Primitive.vbox(con, opt, qui));
|
||||
} else {
|
||||
add(Pos.CENTER, Primitive.vbox(con, qui));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user