Add support for window inflating
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user