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(
|
if (WidgetContainer.getAllWidgets().stream().anyMatch(
|
||||||
e -> e instanceof QuitPopup || e instanceof EscapePopup
|
e -> e instanceof QuitPopup || e instanceof EscapePopup
|
||||||
)) {
|
)) {
|
||||||
WidgetContainer.findRemove(QuitPopup.class);
|
WidgetContainer.findRemoveFirst(QuitPopup.class);
|
||||||
WidgetContainer.findRemove(EscapePopup.class);
|
WidgetContainer.findRemoveFirst(EscapePopup.class);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.toop.app.widget;
|
package org.toop.app.widget;
|
||||||
|
|
||||||
|
import javafx.scene.Node;
|
||||||
import org.toop.app.widget.complex.PopupWidget;
|
import org.toop.app.widget.complex.PopupWidget;
|
||||||
import org.toop.app.widget.complex.ViewWidget;
|
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() {
|
public static ViewWidget getCurrentView() {
|
||||||
return currentView;
|
return currentView;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,25 +2,30 @@ package org.toop.app.widget.popup;
|
|||||||
|
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
import org.toop.app.App;
|
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.ConfirmWidget;
|
||||||
import org.toop.app.widget.complex.PopupWidget;
|
import org.toop.app.widget.complex.PopupWidget;
|
||||||
|
import org.toop.app.widget.view.OptionsView;
|
||||||
|
|
||||||
public class EscapePopup extends PopupWidget {
|
public class EscapePopup extends PopupWidget {
|
||||||
public EscapePopup() {
|
public EscapePopup() {
|
||||||
var confirmWidget = new ConfirmWidget("are-you-sure");
|
var con = Primitive.button("Continue", () -> { hide(); }, false); // TODO, localize
|
||||||
|
|
||||||
confirmWidget.addButton("yes", () -> {
|
var qui = Primitive.button("quit", () -> {
|
||||||
App.quit();
|
|
||||||
});
|
|
||||||
|
|
||||||
confirmWidget.addButton("no", () -> {
|
|
||||||
hide();
|
hide();
|
||||||
|
WidgetContainer.add(Pos.CENTER, new QuitPopup());
|
||||||
});
|
});
|
||||||
|
|
||||||
add(Pos.CENTER, confirmWidget);
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
setOnPop(() -> {
|
|
||||||
hide();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user