Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/main/java/com/cleanroommc/modularui/test/TestTile.java
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,7 @@ public ModularPanel buildUI(PosGuiData guiData, PanelSyncManager syncManager, UI
//.flex(flex -> flex.left(3)) // ?
.overlay(IKey.str("Button 2")))
.child(new TextFieldWidget()
.addTooltipLine("this tooltip is overridden")
.size(60, 18)
.setTextAlignment(Alignment.Center)
.value(SyncHandlers.string(() -> this.value, val -> this.value = val))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.cleanroommc.modularui.widgets.textfield;

import com.cleanroommc.modularui.ModularUI;
import com.cleanroommc.modularui.api.drawable.IDrawable;
import com.cleanroommc.modularui.api.drawable.IKey;
import com.cleanroommc.modularui.api.drawable.ITextLine;
import com.cleanroommc.modularui.api.value.IStringValue;
import com.cleanroommc.modularui.screen.RichTooltip;
import com.cleanroommc.modularui.screen.viewport.ModularGuiContext;
import com.cleanroommc.modularui.utils.MathUtils;
import com.cleanroommc.modularui.utils.ParseResult;
Expand All @@ -13,6 +16,7 @@
import org.jetbrains.annotations.NotNull;

import java.text.ParsePosition;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.regex.Pattern;
Expand All @@ -27,6 +31,7 @@ public class TextFieldWidget extends BaseTextFieldWidget<TextFieldWidget> {
private boolean numbers = false;
private String mathFailMessage = null;
private double defaultNumber = 0;
private boolean tooltipOverride = false;

public double parse(String num) {
ParseResult result = MathUtils.parseExpression(num, this.defaultNumber, true);
Expand All @@ -49,8 +54,10 @@ public void onInit() {
this.stringValue = new StringValue("");
}
setText(this.stringValue.getStringValue());
if (!hasTooltip()) {
if (!hasTooltip() && !tooltipOverride) {
tooltipBuilder(tooltip -> tooltip.addLine(IKey.str(getText())));
// set back to false so this won't get triggered
tooltipOverride = false;
}
}

Expand Down Expand Up @@ -80,7 +87,7 @@ public void onUpdate() {

@Override
public void drawForeground(ModularGuiContext context) {
if (hasTooltip() && getScrollData().isScrollBarActive(getScrollArea()) && isHoveringFor(getTooltip().getShowUpTimer())) {
if (hasTooltip() && (tooltipOverride || getScrollData().isScrollBarActive(getScrollArea())) && isHoveringFor(getTooltip().getShowUpTimer())) {
getTooltip().draw(getContext());
}
}
Expand Down Expand Up @@ -208,4 +215,87 @@ public TextFieldWidget value(IStringValue<?> stringValue) {
setValue(stringValue);
return this;
}

/**
* Normally, Tooltips on text field widgets are used to display the contents of the widget when the scrollbar is active
* This value is an override, that allows the methods provided by {@link com.cleanroommc.modularui.api.widget.ITooltip} to be used
* Every method that adds a tooltip from ITooltip is overridden to enable the tooltipOverride
* @param value - sets the tooltip override on or off
*/
public TextFieldWidget setTooltipOverride(boolean value) {
this.tooltipOverride = value;
return this;
}
@Override
public TextFieldWidget tooltipBuilder(Consumer<RichTooltip> tooltipBuilder) {
tooltipOverride = true;
return super.tooltipBuilder(tooltipBuilder);
}

@Override
public TextFieldWidget tooltip(RichTooltip tooltip) {
tooltipOverride = true;
return super.tooltip(tooltip);
}

@Override
public TextFieldWidget tooltip(Consumer<RichTooltip> tooltipConsumer) {
tooltipOverride = true;
return super.tooltip(tooltipConsumer);
}

@Override
public @NotNull RichTooltip tooltip() {
tooltipOverride = true;
return super.tooltip();
}

@Override
public TextFieldWidget tooltipDynamic(Consumer<RichTooltip> tooltipBuilder) {
tooltipOverride = true;
return super.tooltipDynamic(tooltipBuilder);
}

@Override
public TextFieldWidget addTooltipDrawableLines(Iterable<IDrawable> lines) {
tooltipOverride = true;
return super.addTooltipDrawableLines(lines);
}

@Override
public TextFieldWidget addTooltipElement(String s) {
tooltipOverride = true;
return super.addTooltipElement(s);
}

@Override
public TextFieldWidget addTooltipElement(IDrawable drawable) {
tooltipOverride = true;
return super.addTooltipElement(drawable);
}

@Override
public TextFieldWidget addTooltipLine(String line) {
tooltipOverride = true;
return super.addTooltipLine(line);
}

@Override
public TextFieldWidget addTooltipLine(ITextLine line) {
tooltipOverride = true;

return super.addTooltipLine(line);
}

@Override
public TextFieldWidget addTooltipLine(IDrawable drawable) {
tooltipOverride = true;
return super.addTooltipLine(drawable);
}

@Override
public TextFieldWidget addTooltipStringLines(Iterable<String> lines) {
tooltipOverride = true;
return super.addTooltipStringLines(lines);
}
}