Add support for window inflating

This commit is contained in:
2021-03-16 19:29:48 +01:00
parent cd9fba8637
commit 397e9e1f9c
7 changed files with 140 additions and 28 deletions

View File

@@ -1,6 +1,7 @@
package com.bartlomiejpluta.base.api.game.gui.base;
import com.bartlomiejpluta.base.api.game.gui.component.Component;
import com.bartlomiejpluta.base.api.game.gui.window.Window;
import com.bartlomiejpluta.base.api.game.input.KeyEventHandler;
import com.bartlomiejpluta.base.api.internal.gc.Disposable;
import com.bartlomiejpluta.base.api.internal.render.Renderable;
@@ -23,6 +24,8 @@ public interface GUI extends Renderable, Disposable, KeyEventHandler {
Component inflateComponent(String widgetUid);
Window inflateWindow(String widgetUid);
Widget getRoot();
void setRoot(Widget root);

View File

@@ -1,5 +1,6 @@
package com.bartlomiejpluta.base.api.game.gui.window;
import com.bartlomiejpluta.base.api.game.context.Context;
import com.bartlomiejpluta.base.api.game.gui.base.BaseWidget;
import com.bartlomiejpluta.base.api.game.gui.base.GUI;
import com.bartlomiejpluta.base.api.game.gui.component.Component;
@@ -9,9 +10,29 @@ import com.bartlomiejpluta.base.api.game.screen.Screen;
import static java.util.Objects.requireNonNull;
public abstract class BaseWindow extends BaseWidget implements Window {
protected Context context;
protected GUI gui;
protected Component content;
protected WindowPosition windowPosition;
protected BaseWindow(Context context, GUI gui) {
this.context = context;
this.gui = gui;
}
@Override
public void setContent(Component component) {
if (this.content != null) {
this.content.setParent(null);
}
this.content = component;
if (component != null) {
component.setParent(this);
}
}
@Override
public WindowPosition getWindowPosition() {
return windowPosition;
@@ -38,16 +59,6 @@ public abstract class BaseWindow extends BaseWidget implements Window {
content.draw(screen, gui);
}
@Override
public void onOpen(WindowManager manager) {
// do nothing
}
@Override
public void onClose(WindowManager manager) {
// do nothing
}
@Override
public void handleKeyEvent(KeyEvent event) {
content.handleKeyEvent(event);

View File

@@ -1,13 +1,20 @@
package com.bartlomiejpluta.base.api.game.gui.window;
import com.bartlomiejpluta.base.api.game.gui.base.Widget;
import com.bartlomiejpluta.base.api.game.gui.component.Component;
public interface Window extends Widget {
void setContent(Component component);
WindowPosition getWindowPosition();
void setWindowPosition(WindowPosition windowPosition);
void onOpen(WindowManager manager);
default void onOpen(WindowManager manager) {
// do nothing
}
void onClose(WindowManager manager);
default void onClose(WindowManager manager) {
// do nothing
}
}