diff options
author | LopyMine <127966446+LopyMine@users.noreply.github.com> | 2023-10-15 16:17:06 +0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-15 14:17:06 +0300 |
commit | 3e74a563b2d2d3e0683733c3b4e52bac768659fd (patch) | |
tree | f1f27e705b5882b1bfa4e50f8eafe3e876dc5e28 | |
parent | 41726ca942739f7283e0530aaa08cece365b3146 (diff) | |
download | LibGui-3e74a563b2d2d3e0683733c3b4e52bac768659fd.tar.gz LibGui-3e74a563b2d2d3e0683733c3b4e52bac768659fd.tar.bz2 LibGui-3e74a563b2d2d3e0683733c3b4e52bac768659fd.zip |
Added set/getScrollingSpeed methods and updated ScrollBarTestGui.java (#218)
-rw-r--r-- | src/main/java/io/github/cottonmc/cotton/gui/widget/WScrollBar.java | 29 | ||||
-rw-r--r-- | src/testMod/java/io/github/cottonmc/test/client/ScrollBarTestGui.java | 39 |
2 files changed, 57 insertions, 11 deletions
diff --git a/src/main/java/io/github/cottonmc/cotton/gui/widget/WScrollBar.java b/src/main/java/io/github/cottonmc/cotton/gui/widget/WScrollBar.java index add8688..ac5ddcb 100644 --- a/src/main/java/io/github/cottonmc/cotton/gui/widget/WScrollBar.java +++ b/src/main/java/io/github/cottonmc/cotton/gui/widget/WScrollBar.java @@ -15,7 +15,8 @@ import io.github.cottonmc.cotton.gui.widget.data.InputResult; public class WScrollBar extends WWidget { private static final Identifier FOCUS_TEXTURE = new Identifier(LibGuiCommon.MOD_ID, "widget/scroll_bar/focus"); - private static final int SCROLLING_SPEED = 4; + public static final int DEFAULT_SCROLLING_SPEED = 4; + private int scrollingSpeed = 4; protected Axis axis = Axis.HORIZONTAL; protected int value; @@ -203,7 +204,7 @@ public class WScrollBar extends WWidget { @Environment(EnvType.CLIENT) @Override public InputResult onMouseScroll(int x, int y, double horizontalAmount, double verticalAmount) { - setValue(getValue() + (int) (horizontalAmount - verticalAmount) * SCROLLING_SPEED); + setValue(getValue() + (int) (horizontalAmount - verticalAmount) * scrollingSpeed); return InputResult.PROCESSED; } @@ -227,6 +228,30 @@ public class WScrollBar extends WWidget { return this; } + /** + * Sets the mouse scroll speed; + * <p> + * Default value: {@value #DEFAULT_SCROLLING_SPEED} + * @param scrollingSpeed the scroll speed + * @return this scroll bar + */ + public WScrollBar setScrollingSpeed(int scrollingSpeed) { + if(scrollingSpeed < 0) throw new IllegalArgumentException("Negative value for scrolling speed"); + if(scrollingSpeed == 0) throw new IllegalArgumentException("Zero value for scrolling speed"); + + this.scrollingSpeed = scrollingSpeed; + return this; + } + + /** + * Gets the mouse scroll speed; + * <p> + * Default value: {@value #DEFAULT_SCROLLING_SPEED} + */ + public int getScrollingSpeed() { + return scrollingSpeed; + } + public int getWindow() { return window; } diff --git a/src/testMod/java/io/github/cottonmc/test/client/ScrollBarTestGui.java b/src/testMod/java/io/github/cottonmc/test/client/ScrollBarTestGui.java index efac9d5..7c94a53 100644 --- a/src/testMod/java/io/github/cottonmc/test/client/ScrollBarTestGui.java +++ b/src/testMod/java/io/github/cottonmc/test/client/ScrollBarTestGui.java @@ -1,13 +1,18 @@ package io.github.cottonmc.test.client; import net.fabricmc.fabric.api.util.TriState; +import net.minecraft.text.Text; import io.github.cottonmc.cotton.gui.client.LightweightGuiDescription; +import io.github.cottonmc.cotton.gui.widget.WLabel; import io.github.cottonmc.cotton.gui.widget.WPlainPanel; import io.github.cottonmc.cotton.gui.widget.WScrollBar; +import io.github.cottonmc.cotton.gui.widget.WSlider; import io.github.cottonmc.cotton.gui.widget.WToggleButton; import io.github.cottonmc.cotton.gui.widget.data.Axis; +import io.github.cottonmc.cotton.gui.widget.data.HorizontalAlignment; import io.github.cottonmc.cotton.gui.widget.data.Insets; +import io.github.cottonmc.cotton.gui.widget.data.VerticalAlignment; public class ScrollBarTestGui extends LightweightGuiDescription { private boolean darkMode = false; @@ -18,21 +23,37 @@ public class ScrollBarTestGui extends LightweightGuiDescription { root.setSize(256, 240); root.setInsets(Insets.ROOT_PANEL); - WScrollBar scrollBar1 = new WScrollBar(Axis.HORIZONTAL); - root.add(scrollBar1, 0, 0, 256, 16); + WScrollBar scrollBarTop = new WScrollBar(Axis.HORIZONTAL); + root.add(scrollBarTop, 0, 0, 256, 16); - WScrollBar scrollBar2 = new WScrollBar(Axis.HORIZONTAL); - root.add(scrollBar2, 0, 240 - scrollBar2.getHeight(), 256, 8); + WScrollBar scrollBarDown = new WScrollBar(Axis.HORIZONTAL); + root.add(scrollBarDown, 0, 240 - scrollBarDown.getHeight(), 256, 8); - WScrollBar scrollBar3 = new WScrollBar(Axis.VERTICAL); - root.add(scrollBar3, 0, 18, 16, 202); + WScrollBar scrollBarLeft = new WScrollBar(Axis.VERTICAL); + root.add(scrollBarLeft, 0, 18, 16, 202); - WScrollBar scrollBar4 = new WScrollBar(Axis.VERTICAL); - root.add(scrollBar4, 248, 18, 8, 202); + WScrollBar scrollBarRight = new WScrollBar(Axis.VERTICAL); + root.add(scrollBarRight, 248, 18, 8, 202); + + WLabel label = new WLabel(Text.of("Scrolling Speed: 4")); + label.setHorizontalAlignment(HorizontalAlignment.CENTER); + label.setVerticalAlignment(VerticalAlignment.CENTER); + root.add(label, 32, 112, 192, 16); + + WSlider slider = new WSlider(1, 100, Axis.HORIZONTAL); + slider.setDraggingFinishedListener(i -> { + label.setText(Text.of("Scrolling Speed: " + i)); + + scrollBarTop.setScrollingSpeed(i); + scrollBarDown.setScrollingSpeed(i); + scrollBarLeft.setScrollingSpeed(i); + scrollBarRight.setScrollingSpeed(i); + }); + root.add(slider, 78, 128, 100, 16); WToggleButton toggleButton = new WToggleButton(); toggleButton.setOnToggle(on -> darkMode = on); - root.add(toggleButton, 128 - (toggleButton.getWidth() / 2), 120 - (toggleButton.getHeight() / 2)); + root.add(toggleButton, 128 - (toggleButton.getWidth() / 2), 104 - (toggleButton.getHeight() / 2)); root.validate(this); } |