Enable programmatically referencing Component's components
This commit is contained in:
@@ -1,14 +1,17 @@
|
||||
package com.bartlomiejpluta.base.lib.gui;
|
||||
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.gui.Component;
|
||||
import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
import com.bartlomiejpluta.base.api.gui.SizeMode;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class AbsoluteLayout extends BaseContainer {
|
||||
|
||||
public AbsoluteLayout(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public AbsoluteLayout(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
super.setSizeMode(SizeMode.ABSOLUTE, SizeMode.ABSOLUTE);
|
||||
super.setSize(0f, 0f);
|
||||
}
|
||||
|
||||
@@ -5,17 +5,20 @@ import com.bartlomiejpluta.base.api.gui.Component;
|
||||
import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static java.util.Collections.emptyList;
|
||||
|
||||
public abstract class BaseComponent extends BaseWidget implements Component {
|
||||
protected boolean focused;
|
||||
protected final Context context;
|
||||
protected final GUI gui;
|
||||
protected final Map<String, Component> refs;
|
||||
protected boolean focused;
|
||||
|
||||
protected BaseComponent(Context context, GUI gui) {
|
||||
protected BaseComponent(Context context, GUI gui, Map<String, Component> refs) {
|
||||
this.context = context;
|
||||
this.gui = gui;
|
||||
this.refs = refs;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static java.util.Collections.unmodifiableList;
|
||||
import static java.util.Objects.requireNonNull;
|
||||
@@ -15,8 +16,8 @@ public abstract class BaseContainer extends BaseComponent {
|
||||
protected final List<Component> children = new LinkedList<>();
|
||||
private final List<Component> readOnlyChildren = unmodifiableList(children);
|
||||
|
||||
public BaseContainer(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public BaseContainer(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -11,6 +11,8 @@ import java.util.Locale;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public abstract class BaseWidget implements Widget {
|
||||
protected final EventHandler eventHandler = new EventHandler();
|
||||
|
||||
protected Widget parent;
|
||||
|
||||
protected SizeMode widthMode = SizeMode.AUTO;
|
||||
@@ -32,7 +34,6 @@ public abstract class BaseWidget implements Widget {
|
||||
protected float paddingBottom;
|
||||
protected float paddingLeft;
|
||||
|
||||
protected final EventHandler eventHandler = new EventHandler();
|
||||
|
||||
protected abstract float getContentWidth();
|
||||
|
||||
@@ -45,6 +46,26 @@ public abstract class BaseWidget implements Widget {
|
||||
: getActualWidth();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWidth(Float width) {
|
||||
this.width = width;
|
||||
}
|
||||
|
||||
@Attribute("width")
|
||||
public void setWidth(String width) {
|
||||
var widthLowerCased = width.toLowerCase(Locale.ROOT);
|
||||
|
||||
if (widthLowerCased.equals("auto")) {
|
||||
this.widthMode = SizeMode.AUTO;
|
||||
} else if (widthLowerCased.equals("relative")) {
|
||||
this.widthMode = SizeMode.RELATIVE;
|
||||
this.width = 1f;
|
||||
} else {
|
||||
this.widthMode = SizeMode.ABSOLUTE;
|
||||
this.width = Float.parseFloat(width);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getActualWidth() {
|
||||
return paddingLeft + (widthMode == SizeMode.ABSOLUTE ? width : getContentWidth()) + paddingRight;
|
||||
@@ -57,16 +78,6 @@ public abstract class BaseWidget implements Widget {
|
||||
: getActualHeight();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getActualHeight() {
|
||||
return paddingTop + (heightMode == SizeMode.ABSOLUTE ? height : getContentHeight()) + paddingBottom;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWidth(Float width) {
|
||||
this.width = width;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHeight(Float height) {
|
||||
this.height = height;
|
||||
@@ -87,19 +98,9 @@ public abstract class BaseWidget implements Widget {
|
||||
}
|
||||
}
|
||||
|
||||
@Attribute("width")
|
||||
public void setWidth(String width) {
|
||||
var widthLowerCased = width.toLowerCase(Locale.ROOT);
|
||||
|
||||
if (widthLowerCased.equals("auto")) {
|
||||
this.widthMode = SizeMode.AUTO;
|
||||
} else if (widthLowerCased.equals("relative")) {
|
||||
this.widthMode = SizeMode.RELATIVE;
|
||||
this.width = 1f;
|
||||
} else {
|
||||
this.widthMode = SizeMode.ABSOLUTE;
|
||||
this.width = Float.parseFloat(width);
|
||||
}
|
||||
@Override
|
||||
public float getActualHeight() {
|
||||
return paddingTop + (heightMode == SizeMode.ABSOLUTE ? height : getContentHeight()) + paddingBottom;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -152,13 +153,13 @@ public abstract class BaseWidget implements Widget {
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getY() {
|
||||
return y;
|
||||
public void setX(Float x) {
|
||||
this.x = x;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setX(Float x) {
|
||||
this.x = x;
|
||||
public float getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -204,46 +205,46 @@ public abstract class BaseWidget implements Widget {
|
||||
this.marginLeft = all;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginTop(Float margin) {
|
||||
this.marginTop = margin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginRight(Float margin) {
|
||||
this.marginRight = margin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginBottom(Float margin) {
|
||||
this.marginBottom = margin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginLeft(Float margin) {
|
||||
this.marginLeft = margin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMarginTop() {
|
||||
return marginTop;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginTop(Float margin) {
|
||||
this.marginTop = margin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMarginRight() {
|
||||
return marginRight;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginRight(Float margin) {
|
||||
this.marginRight = margin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMarginBottom() {
|
||||
return marginBottom;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginBottom(Float margin) {
|
||||
this.marginBottom = margin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMarginLeft() {
|
||||
return marginLeft;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginLeft(Float margin) {
|
||||
this.marginLeft = margin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPadding(Float top, Float right, Float bottom, Float left) {
|
||||
this.paddingTop = top;
|
||||
@@ -276,46 +277,46 @@ public abstract class BaseWidget implements Widget {
|
||||
this.paddingLeft = all;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingTop(Float padding) {
|
||||
this.paddingTop = padding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingRight(Float padding) {
|
||||
this.paddingRight = padding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingBottom(Float padding) {
|
||||
this.paddingBottom = padding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingLeft(Float padding) {
|
||||
this.paddingLeft = padding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getPaddingTop() {
|
||||
return paddingTop;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingTop(Float padding) {
|
||||
this.paddingTop = padding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getPaddingRight() {
|
||||
return paddingRight;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingRight(Float padding) {
|
||||
this.paddingRight = padding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getPaddingBottom() {
|
||||
return paddingBottom;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingBottom(Float padding) {
|
||||
this.paddingBottom = padding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getPaddingLeft() {
|
||||
return paddingLeft;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingLeft(Float padding) {
|
||||
this.paddingLeft = padding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends Event> void handleEvent(E event) {
|
||||
eventHandler.handleEvent(event);
|
||||
|
||||
@@ -13,14 +13,12 @@ import static java.lang.String.format;
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
public abstract class BaseWindow extends BaseWidget implements Window {
|
||||
@Getter
|
||||
private final Map<String, Component> refs;
|
||||
protected Context context;
|
||||
protected GUI gui;
|
||||
protected WindowManager manager;
|
||||
protected Component content;
|
||||
|
||||
@Getter
|
||||
private final Map<String, Component> refs;
|
||||
|
||||
protected WindowPosition windowPosition = WindowPosition.CENTER;
|
||||
|
||||
protected BaseWindow(Context context, GUI gui, Map<String, Component> refs) {
|
||||
|
||||
@@ -6,10 +6,12 @@ import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
import com.bartlomiejpluta.base.api.gui.SizeMode;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class BorderLayout extends BaseContainer {
|
||||
|
||||
public BorderLayout(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public BorderLayout(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
super.setSizeMode(SizeMode.RELATIVE, SizeMode.RELATIVE);
|
||||
super.setSize(1f, 1f);
|
||||
}
|
||||
@@ -69,8 +71,8 @@ public class BorderLayout extends BaseContainer {
|
||||
}
|
||||
|
||||
public static abstract class Slot extends ComponentWrapper {
|
||||
protected Slot(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
protected Slot(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
protected abstract void setPosition(BorderLayout layout);
|
||||
@@ -78,8 +80,8 @@ public class BorderLayout extends BaseContainer {
|
||||
|
||||
public static class Top extends Slot {
|
||||
|
||||
public Top(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public Top(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -90,8 +92,8 @@ public class BorderLayout extends BaseContainer {
|
||||
|
||||
public static class TopRight extends Slot {
|
||||
|
||||
public TopRight(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public TopRight(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -102,8 +104,8 @@ public class BorderLayout extends BaseContainer {
|
||||
|
||||
public static class Right extends Slot {
|
||||
|
||||
public Right(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public Right(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -114,8 +116,8 @@ public class BorderLayout extends BaseContainer {
|
||||
|
||||
public static class BottomRight extends Slot {
|
||||
|
||||
public BottomRight(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public BottomRight(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -126,8 +128,8 @@ public class BorderLayout extends BaseContainer {
|
||||
|
||||
public static class Bottom extends Slot {
|
||||
|
||||
public Bottom(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public Bottom(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -138,8 +140,8 @@ public class BorderLayout extends BaseContainer {
|
||||
|
||||
public static class BottomLeft extends Slot {
|
||||
|
||||
public BottomLeft(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public BottomLeft(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -150,8 +152,8 @@ public class BorderLayout extends BaseContainer {
|
||||
|
||||
public static class Left extends Slot {
|
||||
|
||||
public Left(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public Left(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -162,8 +164,8 @@ public class BorderLayout extends BaseContainer {
|
||||
|
||||
public static class TopLeft extends Slot {
|
||||
|
||||
public TopLeft(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public TopLeft(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -174,8 +176,8 @@ public class BorderLayout extends BaseContainer {
|
||||
|
||||
public static class Center extends Slot {
|
||||
|
||||
public Center(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public Center(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -5,13 +5,15 @@ import com.bartlomiejpluta.base.api.gui.Component;
|
||||
import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
public abstract class ComponentWrapper extends BaseComponent {
|
||||
protected Component component;
|
||||
|
||||
protected ComponentWrapper(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
protected ComponentWrapper(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
package com.bartlomiejpluta.base.lib.gui;
|
||||
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.gui.Component;
|
||||
import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class HGridLayout extends BaseContainer {
|
||||
protected float offsetX = 0.0f;
|
||||
protected float offsetY = 0.0f;
|
||||
protected int rows = 2;
|
||||
private float[] heights = new float[rows];
|
||||
|
||||
public HGridLayout(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public HGridLayout(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
public void setRows(@NonNull Integer rows) {
|
||||
|
||||
@@ -13,6 +13,7 @@ import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.Map;
|
||||
|
||||
public class HGridOptionChoice extends HGridLayout {
|
||||
private static final EnumSet<KeyAction> ACTIONS = EnumSet.of(KeyAction.PRESS, KeyAction.REPEAT);
|
||||
@@ -26,8 +27,8 @@ public class HGridOptionChoice extends HGridLayout {
|
||||
@Getter
|
||||
private Component selectedComponent = null;
|
||||
|
||||
public HGridOptionChoice(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public HGridOptionChoice(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
addEventListener(KeyEvent.TYPE, this::switchOption);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
package com.bartlomiejpluta.base.lib.gui;
|
||||
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.gui.Component;
|
||||
import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class HLayout extends BaseContainer {
|
||||
protected float offsetX = 0.0f;
|
||||
protected float offsetY = 0.0f;
|
||||
|
||||
public HLayout(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public HLayout(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.Map;
|
||||
|
||||
public class HOptionChoice extends HLayout {
|
||||
private static final EnumSet<KeyAction> ACTIONS = EnumSet.of(KeyAction.PRESS, KeyAction.REPEAT);
|
||||
@@ -23,8 +24,8 @@ public class HOptionChoice extends HLayout {
|
||||
@Getter
|
||||
private Component selectedComponent = null;
|
||||
|
||||
public HOptionChoice(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public HOptionChoice(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
addEventListener(KeyEvent.TYPE, this::switchOption);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.bartlomiejpluta.base.lib.gui;
|
||||
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.gui.Component;
|
||||
import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
import com.bartlomiejpluta.base.api.gui.SizeMode;
|
||||
import com.bartlomiejpluta.base.api.input.Key;
|
||||
@@ -8,6 +9,8 @@ import com.bartlomiejpluta.base.api.input.KeyAction;
|
||||
import com.bartlomiejpluta.base.api.input.KeyEvent;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import static com.bartlomiejpluta.base.util.math.MathUtil.clamp;
|
||||
import static java.lang.Math.*;
|
||||
|
||||
@@ -16,8 +19,8 @@ public class HScrollableLayout extends HLayout {
|
||||
private float scrollStep = 0.25f;
|
||||
private float scrollSpeed = 0.1f;
|
||||
|
||||
public HScrollableLayout(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public HScrollableLayout(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
addEventListener(KeyEvent.TYPE, this::handleKeyEvent);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.bartlomiejpluta.base.lib.gui;
|
||||
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.gui.Component;
|
||||
import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
import com.bartlomiejpluta.base.api.gui.IconSet;
|
||||
import com.bartlomiejpluta.base.api.gui.Paint;
|
||||
@@ -9,6 +10,8 @@ import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
import lombok.NonNull;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class IconView extends BaseComponent {
|
||||
private final GUI gui;
|
||||
private final Paint paint;
|
||||
@@ -40,8 +43,8 @@ public class IconView extends BaseComponent {
|
||||
private Integer iconSetColumn = 0;
|
||||
|
||||
|
||||
public IconView(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public IconView(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
this.gui = gui;
|
||||
this.paint = gui.createPaint();
|
||||
}
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package com.bartlomiejpluta.base.lib.gui;
|
||||
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.gui.Component;
|
||||
import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
import com.bartlomiejpluta.base.api.gui.Image;
|
||||
import com.bartlomiejpluta.base.api.gui.Paint;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class ImageView extends BaseComponent {
|
||||
private final Paint paint;
|
||||
|
||||
@@ -15,31 +18,11 @@ public class ImageView extends BaseComponent {
|
||||
private float scaleX = 1;
|
||||
private float scaleY = 1;
|
||||
|
||||
public ImageView(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public ImageView(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
this.paint = gui.createPaint();
|
||||
}
|
||||
|
||||
public void setImage(String imageUid) {
|
||||
this.image = gui.getImage(imageUid);
|
||||
}
|
||||
|
||||
public void setAngle(float angle) {
|
||||
this.angle = angle;
|
||||
}
|
||||
|
||||
public void setOpacity(float opacity) {
|
||||
this.opacity = opacity;
|
||||
}
|
||||
|
||||
public void setScaleX(float scaleX) {
|
||||
this.scaleX = scaleX;
|
||||
}
|
||||
|
||||
public void setScaleY(float scaleY) {
|
||||
this.scaleY = scaleY;
|
||||
}
|
||||
|
||||
public void setScale(float scaleX, float scaleY) {
|
||||
this.scaleX = scaleX;
|
||||
this.scaleY = scaleY;
|
||||
@@ -54,22 +37,42 @@ public class ImageView extends BaseComponent {
|
||||
return image;
|
||||
}
|
||||
|
||||
public void setImage(String imageUid) {
|
||||
this.image = gui.getImage(imageUid);
|
||||
}
|
||||
|
||||
public float getAngle() {
|
||||
return angle;
|
||||
}
|
||||
|
||||
public void setAngle(float angle) {
|
||||
this.angle = angle;
|
||||
}
|
||||
|
||||
public float getOpacity() {
|
||||
return opacity;
|
||||
}
|
||||
|
||||
public void setOpacity(float opacity) {
|
||||
this.opacity = opacity;
|
||||
}
|
||||
|
||||
public float getScaleX() {
|
||||
return scaleX;
|
||||
}
|
||||
|
||||
public void setScaleX(float scaleX) {
|
||||
this.scaleX = scaleX;
|
||||
}
|
||||
|
||||
public float getScaleY() {
|
||||
return scaleY;
|
||||
}
|
||||
|
||||
public void setScaleY(float scaleY) {
|
||||
this.scaleY = scaleY;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected float getContentWidth() {
|
||||
return image.getWidth() * scaleX;
|
||||
|
||||
@@ -3,22 +3,24 @@ package com.bartlomiejpluta.base.lib.gui;
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.gui.Attribute;
|
||||
import com.bartlomiejpluta.base.api.gui.Color;
|
||||
import com.bartlomiejpluta.base.api.gui.Component;
|
||||
import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
public class Label extends BaseComponent {
|
||||
private final float[] bounds = new float[4];
|
||||
private String text = "";
|
||||
private String font;
|
||||
private float fontSize;
|
||||
private int alignment = GUI.ALIGN_LEFT;
|
||||
private Color color;
|
||||
private final Color color;
|
||||
|
||||
private final float[] bounds = new float[4];
|
||||
|
||||
public Label(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public Label(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
this.color = gui.createColor();
|
||||
this.color.setRGBA(0xFFFFFFFF);
|
||||
}
|
||||
|
||||
@@ -1,19 +1,21 @@
|
||||
package com.bartlomiejpluta.base.lib.gui;
|
||||
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.gui.Component;
|
||||
import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class VGridLayout extends BaseContainer {
|
||||
protected float offsetX = 0.0f;
|
||||
protected float offsetY = 0.0f;
|
||||
protected int columns = 2;
|
||||
private float[] widths = new float[columns];
|
||||
|
||||
public VGridLayout(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public VGridLayout(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
public void setColumns(@NonNull Integer columns) {
|
||||
|
||||
@@ -13,6 +13,7 @@ import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.Map;
|
||||
|
||||
public class VGridOptionChoice extends VGridLayout {
|
||||
private static final EnumSet<KeyAction> ACTIONS = EnumSet.of(KeyAction.PRESS, KeyAction.REPEAT);
|
||||
@@ -26,8 +27,8 @@ public class VGridOptionChoice extends VGridLayout {
|
||||
@Getter
|
||||
private Component selectedComponent = null;
|
||||
|
||||
public VGridOptionChoice(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public VGridOptionChoice(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
addEventListener(KeyEvent.TYPE, this::switchOption);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
package com.bartlomiejpluta.base.lib.gui;
|
||||
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.gui.Component;
|
||||
import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class VLayout extends BaseContainer {
|
||||
protected float offsetX = 0.0f;
|
||||
protected float offsetY = 0.0f;
|
||||
|
||||
public VLayout(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public VLayout(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.Map;
|
||||
|
||||
public class VOptionChoice extends VLayout {
|
||||
private static final EnumSet<KeyAction> ACTIONS = EnumSet.of(KeyAction.PRESS, KeyAction.REPEAT);
|
||||
@@ -23,8 +24,8 @@ public class VOptionChoice extends VLayout {
|
||||
@Getter
|
||||
private Component selectedComponent = null;
|
||||
|
||||
public VOptionChoice(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public VOptionChoice(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
addEventListener(KeyEvent.TYPE, this::switchOption);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.bartlomiejpluta.base.lib.gui;
|
||||
|
||||
import com.bartlomiejpluta.base.api.context.Context;
|
||||
import com.bartlomiejpluta.base.api.gui.Component;
|
||||
import com.bartlomiejpluta.base.api.gui.GUI;
|
||||
import com.bartlomiejpluta.base.api.gui.SizeMode;
|
||||
import com.bartlomiejpluta.base.api.input.Key;
|
||||
@@ -8,6 +9,8 @@ import com.bartlomiejpluta.base.api.input.KeyAction;
|
||||
import com.bartlomiejpluta.base.api.input.KeyEvent;
|
||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import static com.bartlomiejpluta.base.util.math.MathUtil.clamp;
|
||||
import static java.lang.Math.*;
|
||||
|
||||
@@ -16,8 +19,8 @@ public class VScrollableLayout extends VLayout {
|
||||
private float scrollStep = 0.25f;
|
||||
private float scrollSpeed = 0.1f;
|
||||
|
||||
public VScrollableLayout(Context context, GUI gui) {
|
||||
super(context, gui);
|
||||
public VScrollableLayout(Context context, GUI gui, Map<String, Component> refs) {
|
||||
super(context, gui, refs);
|
||||
addEventListener(KeyEvent.TYPE, this::scroll);
|
||||
}
|
||||
|
||||
|
||||
@@ -233,7 +233,7 @@ public class DefaultInflater implements Inflater {
|
||||
|
||||
@SneakyThrows
|
||||
private Component createComponent(Class<? extends Widget> componentClass, NamedNodeMap attributes, Map<String, Component> refs, Context context, GUI gui) {
|
||||
var component = (Component) componentClass.getConstructor(Context.class, GUI.class).newInstance(context, gui);
|
||||
var component = (Component) componentClass.getConstructor(Context.class, GUI.class, Map.class).newInstance(context, gui, refs);
|
||||
|
||||
// Set attributes via setter methods
|
||||
for (int i = 0; i < attributes.getLength(); ++i) {
|
||||
|
||||
Reference in New Issue
Block a user