Split hotkey button text over two lines if necessary (fixes #353)

This commit is contained in:
Jonas Herzig
2020-11-05 16:05:19 +01:00
parent 6016ebece7
commit 4402650971

View File

@@ -6,17 +6,14 @@ import com.replaymod.replay.events.ReplayOpenedCallback;
import com.replaymod.replay.gui.overlay.GuiReplayOverlay; import com.replaymod.replay.gui.overlay.GuiReplayOverlay;
import de.johni0702.minecraft.gui.GuiRenderer; import de.johni0702.minecraft.gui.GuiRenderer;
import de.johni0702.minecraft.gui.RenderInfo; import de.johni0702.minecraft.gui.RenderInfo;
import de.johni0702.minecraft.gui.container.GuiContainer;
import de.johni0702.minecraft.gui.container.GuiPanel; import de.johni0702.minecraft.gui.container.GuiPanel;
import de.johni0702.minecraft.gui.element.GuiButton; import de.johni0702.minecraft.gui.element.GuiButton;
import de.johni0702.minecraft.gui.element.GuiElement; import de.johni0702.minecraft.gui.element.GuiElement;
import de.johni0702.minecraft.gui.element.GuiLabel; import de.johni0702.minecraft.gui.element.GuiLabel;
import de.johni0702.minecraft.gui.layout.CustomLayout; import de.johni0702.minecraft.gui.layout.CustomLayout;
import de.johni0702.minecraft.gui.layout.GridLayout; import de.johni0702.minecraft.gui.layout.GridLayout;
import de.johni0702.minecraft.gui.layout.HorizontalLayout;
import de.johni0702.minecraft.gui.layout.LayoutData; import de.johni0702.minecraft.gui.layout.LayoutData;
import de.johni0702.minecraft.gui.utils.EventRegistrations; import de.johni0702.minecraft.gui.utils.EventRegistrations;
import de.johni0702.minecraft.gui.utils.lwjgl.Dimension;
import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension; import de.johni0702.minecraft.gui.utils.lwjgl.ReadableDimension;
import net.minecraft.client.resource.language.I18n; import net.minecraft.client.resource.language.I18n;
@@ -77,21 +74,24 @@ public class HotkeyButtons extends EventRegistrations implements Extra {
super.draw(renderer, size, renderInfo); super.draw(renderer, size, renderInfo);
} }
}.onClick(keyBinding::trigger); }.onClick(keyBinding::trigger);
panel.addElements(null, new GuiPanel().setSize(150, 20).setLayout(new HorizontalLayout().setSpacing(2)) GuiLabel label = new GuiLabel().setI18nText(keyBinding.name);
.addElements(new HorizontalLayout.Data(0.5), panel.addElements(null, new GuiPanel().setLayout(new CustomLayout<GuiPanel>() {
new GuiPanel().setLayout(new CustomLayout<GuiPanel>() { @Override
@Override protected void layout(GuiPanel container, int width, int height) {
protected void layout(GuiPanel container, int width, int height) { width(button, Math.max(10 /* consistent min width */, width(button)) + 10 /* padding */);
size(button, width, height); height(button, 20);
}
@Override int textWidth = width(label);
public ReadableDimension calcMinSize(GuiContainer<?> container) {
return new Dimension(Math.max(10, button.getMinSize().getWidth()) + 10, 20); x(label, width(button) + 4);
} width(label, width - x(label));
}).addElements(null, button),
new GuiLabel().setI18nText(keyBinding.name) if (textWidth > width - x(label)) {
)); height(label, height(label) * 2); // split over two lines
}
y(label, (height - height(label)) / 2);
}
}).addElements(null, button, label).setSize(150, 20));
}); });
overlay.setLayout(new CustomLayout<GuiReplayOverlay>(overlay.getLayout()) { overlay.setLayout(new CustomLayout<GuiReplayOverlay>(overlay.getLayout()) {