SimpleJavaEngine/src/main/java/speiger/src/coreengine/rendering/gui/components/window/misc/TextInputComponent.java

67 lines
2.8 KiB
Java

package speiger.src.coreengine.rendering.gui.components.window.misc;
import speiger.src.coreengine.math.misc.ColorObject;
import speiger.src.coreengine.rendering.gui.components.ButtonComponent;
import speiger.src.coreengine.rendering.gui.components.TextComponent;
import speiger.src.coreengine.rendering.gui.components.TextFieldComponent;
import speiger.src.coreengine.rendering.gui.components.WindowComponent;
import speiger.src.coreengine.rendering.gui.helper.constrains.ParentConstrain;
import speiger.src.coreengine.rendering.gui.helper.constrains.PixelConstrain;
import speiger.src.coreengine.rendering.gui.helper.constrains.RelativeConstrain;
import speiger.src.coreengine.rendering.gui.helper.constrains.TextConstrain;
public class TextInputComponent extends WindowComponent
{
TextComponent message = new TextComponent().setLimitedHeight(false).setTextScale(0.5F);
TextFieldComponent input = new TextFieldComponent(ColorObject.GRAY).setCanLoseFocus(false).setInfiniteText(true).setMaxTextLength(Integer.MAX_VALUE).setFocused(true);
ButtonComponent confirm = new ButtonComponent("Confirm", ColorObject.DARK_GREEN);
ButtonComponent cancel = new ButtonComponent("Cancel", ColorObject.RED);
public TextInputComponent(float width, String name, String message)
{
this(0F, 0F, width, name, message);
}
public TextInputComponent(float x, float y, float width, String name, String message)
{
super(x, y, width, 35F, FIXED_SIZE_POPUP, name);
this.message.setText(message);
}
public TextFieldComponent getInput()
{
return input;
}
public String getText()
{
return input.getText();
}
@Override
public void init()
{
super.init();
confirm.getText().setTextScale(0.5F);
cancel.getText().setTextScale(0.5F);
input.getRawText().setTextScale(0.5F);
addChild(confirm.addChangeListener(minimizedListener).addUserActionListener(this::onListen), new RelativeConstrain(0F), new ParentConstrain(10F).invert(), new RelativeConstrain(0.5F), new PixelConstrain(10F));
addChild(cancel.addChangeListener(minimizedListener).addUserActionListener(closeListener), new RelativeConstrain(0.5F), new ParentConstrain(10F).invert(), new RelativeConstrain(0.5F), new PixelConstrain(10F));
addChild(message.addChangeListener(minimizedListener), new PixelConstrain(10F), new PixelConstrain(11F), new ParentConstrain(10F), TextConstrain.height(message));
addChild(input.addChangeListener(minimizedListener).addUserActionListener(this::onListen), new PixelConstrain(10F), TextConstrain.height(message).setPadding(15F), new ParentConstrain(10F), new PixelConstrain(12F));
getBox().setHeight(45F + message.getMetadata().getMaxHeight());
}
private void onListen()
{
notifyListeners(LISTENER_USER_ACTION);
closeListener.accept(this);
}
@Override
public boolean isPopup()
{
return true;
}
}