Skip to content

Commit

Permalink
Added MouseReleaseEvent for overlays and SliderChangeEvent.
Browse files Browse the repository at this point in the history
  • Loading branch information
HackusatePvP committed May 24, 2024
1 parent 10dcb27 commit d439938
Show file tree
Hide file tree
Showing 11 changed files with 141 additions and 7 deletions.
29 changes: 25 additions & 4 deletions src/main/java/me/piitex/renjava/gui/Element.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@
import javafx.scene.text.TextFlow;
import me.piitex.renjava.RenJava;
import me.piitex.renjava.api.scenes.transitions.Transitions;
import me.piitex.renjava.events.types.OverlayClickEvent;
import me.piitex.renjava.events.types.OverlayExitEvent;
import me.piitex.renjava.events.types.OverlayHoverEvent;
import me.piitex.renjava.events.types.*;
import me.piitex.renjava.gui.overlay.*;
import me.piitex.renjava.loggers.RenLogger;

Expand Down Expand Up @@ -82,7 +80,6 @@ public Element(Overlay overlay) {
slider.setTranslateX(sliderOverlay.x());
slider.setTranslateY(sliderOverlay.y());
slider.setBlockIncrement(sliderOverlay.getBlockIncrement());

// To design sliders we NEED a css file which contains the styling. I'm not able to inline this via code which sucks.
// Hopefully the slider gets improvements in JavaFX.

Expand All @@ -97,6 +94,15 @@ public Element(Overlay overlay) {
throw new RuntimeException(e);
}
}
// Handle slider events
slider.setOnMouseReleased(event -> {
SliderChangeEvent changeEvent = new SliderChangeEvent(sliderOverlay, slider.getValue());
sliderOverlay.getSliderChange().onSliderChange(changeEvent);
RenJava.callEvent(changeEvent);

RenJava.callEvent(new OverlayClickReleaseEvent(overlay, event));
});

this.node = slider;
} else if (overlay instanceof HyperlinkOverlay hyperlinkOverlay) {
Hyperlink hyperlink = new Hyperlink(hyperlinkOverlay.getLabel());
Expand Down Expand Up @@ -137,6 +143,16 @@ public void render(Pane root) {
root.getChildren().add(node);
}

public void render(Pane root, double width, double height) {
if (transitions != null) {
transitions.play(node);
}



root.getChildren().add(node);
}

private void handleInput() {
node.setOnMouseEntered(event -> {
RenJava.callEvent(new OverlayHoverEvent(overlay, event));
Expand All @@ -147,6 +163,11 @@ private void handleInput() {
node.setOnMouseExited(event -> {
RenJava.callEvent(new OverlayExitEvent(overlay, event));
});
if (node.getOnMouseReleased() == null) {
node.setOnMouseReleased(event -> {
RenJava.callEvent(new OverlayClickReleaseEvent(overlay, event));
});
}
}

public Node getNode() {
Expand Down
16 changes: 14 additions & 2 deletions src/main/java/me/piitex/renjava/gui/overlay/ButtonOverlay.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import me.piitex.renjava.RenJava;
import me.piitex.renjava.gui.Menu;
import me.piitex.renjava.gui.overlay.events.IOverlayClick;
import me.piitex.renjava.gui.overlay.events.IOverlayClickRelease;
import me.piitex.renjava.gui.overlay.events.IOverlayHover;
import me.piitex.renjava.loggers.RenLogger;
import me.piitex.renjava.api.loaders.ImageLoader;
Expand All @@ -34,12 +35,13 @@ public class ButtonOverlay implements Overlay, Region {
private Color borderColor;
private Color hoverColor;
private ImageLoader hoverImage;
private boolean hover;
private boolean hover = true;
private int borderWidth = 0;
private int backgroundRadius = 0;

private IOverlayHover iOverlayHover;
private IOverlayClick iOverlayClick;
private IOverlayClickRelease iOverlayClickRelease;

private double x = 1, y = 1;
private double maxHeight, maxWidth;
Expand Down Expand Up @@ -148,7 +150,6 @@ public ButtonOverlay(String id, String text, Color textFill, Font font, Color ba
this.yScale = yScale;
this.backgroundColor = backgroundColor;
this.borderColor = borderColor;
this.hover = true;
this.hoverColor = hoverColor;
}

Expand Down Expand Up @@ -406,6 +407,11 @@ public void setOnHover(IOverlayHover iOverlayHover) {
this.iOverlayHover = iOverlayHover;
}

@Override
public void setOnClickRelease(IOverlayClickRelease iOverlayClickRelease) {
this.iOverlayClickRelease = iOverlayClickRelease;
}

@Override
public IOverlayClick getOnClick() {
return iOverlayClick;
Expand All @@ -416,6 +422,11 @@ public IOverlayHover getOnHover() {
return iOverlayHover;
}

@Override
public IOverlayClickRelease getOnRelease() {
return iOverlayClickRelease;
}


public void setTransitions(Transitions transitions) {
this.transitions = transitions;
Expand Down Expand Up @@ -495,6 +506,7 @@ public Button build() {
button.setPrefHeight(maxHeight);
}
if (maxWidth > 0) {
button.setMinWidth(maxWidth);
button.setMaxWidth(maxWidth);
button.setPrefWidth(maxWidth);
}
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/me/piitex/renjava/gui/overlay/HyperlinkOverlay.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import me.piitex.renjava.api.loaders.FontLoader;
import me.piitex.renjava.api.scenes.transitions.Transitions;
import me.piitex.renjava.gui.overlay.events.IOverlayClick;
import me.piitex.renjava.gui.overlay.events.IOverlayClickRelease;
import me.piitex.renjava.gui.overlay.events.IOverlayHover;

public class HyperlinkOverlay implements Overlay {
Expand All @@ -14,6 +15,7 @@ public class HyperlinkOverlay implements Overlay {
private Transitions transitions;
private IOverlayHover iOverlayHover;
private IOverlayClick iOverlayClick;
private IOverlayClickRelease iOverlayClickRelease;

public HyperlinkOverlay(String label, String link, double x, double y) {
this.label = label;
Expand Down Expand Up @@ -81,6 +83,11 @@ public void setOnHover(IOverlayHover iOverlayHover) {
this.iOverlayHover = iOverlayHover;
}

@Override
public void setOnClickRelease(IOverlayClickRelease iOverlayClickRelease) {
this.iOverlayClickRelease = iOverlayClickRelease;
}

@Override
public IOverlayClick getOnClick() {
return iOverlayClick;
Expand All @@ -90,4 +97,9 @@ public IOverlayClick getOnClick() {
public IOverlayHover getOnHover() {
return iOverlayHover;
}

@Override
public IOverlayClickRelease getOnRelease() {
return iOverlayClickRelease;
}
}
13 changes: 12 additions & 1 deletion src/main/java/me/piitex/renjava/gui/overlay/ImageOverlay.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import javafx.scene.image.WritableImage;
import me.piitex.renjava.RenJava;
import me.piitex.renjava.gui.overlay.events.IOverlayClick;
import me.piitex.renjava.gui.overlay.events.IOverlayClickRelease;
import me.piitex.renjava.gui.overlay.events.IOverlayHover;
import me.piitex.renjava.loggers.RenLogger;
import me.piitex.renjava.api.loaders.ImageLoader;
Expand All @@ -21,8 +22,8 @@ public class ImageOverlay implements Overlay, Region {
private String fileName;

private IOverlayHover iOverlayHover;

private IOverlayClick iOverlayClick;
private IOverlayClickRelease iOverlayClickRelease;

private Transitions transitions;

Expand Down Expand Up @@ -194,6 +195,11 @@ public void setOnHover(IOverlayHover iOverlayHover) {
this.iOverlayHover = iOverlayHover;
}

@Override
public void setOnClickRelease(IOverlayClickRelease iOverlayClickRelease) {
this.iOverlayClickRelease = iOverlayClickRelease;
}

@Override
public IOverlayClick getOnClick() {
return iOverlayClick;
Expand All @@ -204,6 +210,11 @@ public IOverlayHover getOnHover() {
return iOverlayHover;
}

@Override
public IOverlayClickRelease getOnRelease() {
return iOverlayClickRelease;
}

public ImageOverlay setTransitions(Transitions transitions) {
this.transitions = transitions;
return this;
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/me/piitex/renjava/gui/overlay/InputFieldOverlay.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import me.piitex.renjava.api.loaders.FontLoader;
import me.piitex.renjava.api.scenes.transitions.Transitions;
import me.piitex.renjava.gui.overlay.events.IOverlayClick;
import me.piitex.renjava.gui.overlay.events.IOverlayClickRelease;
import me.piitex.renjava.gui.overlay.events.IOverlayHover;

public class InputFieldOverlay implements Overlay, Region {
Expand All @@ -16,6 +17,7 @@ public class InputFieldOverlay implements Overlay, Region {

private IOverlayClick iOverlayClick;
private IOverlayHover iOverlayHover;
private IOverlayClickRelease iOverlayClickRelease;

public InputFieldOverlay(double x, double y, FontLoader fontLoader) {
this.x = x;
Expand Down Expand Up @@ -98,6 +100,11 @@ public void setOnHover(IOverlayHover iOverlayHover) {
this.iOverlayHover = iOverlayHover;
}

@Override
public void setOnClickRelease(IOverlayClickRelease iOverlayClickRelease) {
this.iOverlayClickRelease = iOverlayClickRelease;
}

@Override
public IOverlayClick getOnClick() {
return iOverlayClick;
Expand All @@ -108,6 +115,11 @@ public IOverlayHover getOnHover() {
return iOverlayHover;
}

@Override
public IOverlayClickRelease getOnRelease() {
return iOverlayClickRelease;
}

public void setTransitions(Transitions transitions) {
this.transitions = transitions;
}
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/me/piitex/renjava/gui/overlay/Overlay.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import me.piitex.renjava.api.scenes.transitions.Transitions;
import me.piitex.renjava.gui.overlay.events.IOverlayClick;
import me.piitex.renjava.gui.overlay.events.IOverlayClickRelease;
import me.piitex.renjava.gui.overlay.events.IOverlayHover;

public interface Overlay {
Expand All @@ -19,7 +20,11 @@ public interface Overlay {

void setOnHover(IOverlayHover iOverlayHover);

void setOnClickRelease(IOverlayClickRelease iOverlayClickRelease);

IOverlayClick getOnClick();

IOverlayHover getOnHover();

IOverlayClickRelease getOnRelease();
}
22 changes: 22 additions & 0 deletions src/main/java/me/piitex/renjava/gui/overlay/SliderOverlay.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,19 @@

import me.piitex.renjava.api.scenes.transitions.Transitions;
import me.piitex.renjava.gui.overlay.events.IOverlayClick;
import me.piitex.renjava.gui.overlay.events.IOverlayClickRelease;
import me.piitex.renjava.gui.overlay.events.IOverlayHover;
import me.piitex.renjava.gui.overlay.events.ISliderChange;

public class SliderOverlay implements Overlay {
private final double maxValue, minValue, currentValue;
private double x, y;
private double blockIncrement;

private ISliderChange iSliderChange;
private IOverlayHover iOverlayHover;
private IOverlayClick iOverlayClick;
private IOverlayClickRelease iOverlayClickRelease;

public SliderOverlay(double maxValue, double minValue, double currentValue, double x, double y) {
// Sliders don't have regions like images or buttons do.
Expand Down Expand Up @@ -66,6 +70,14 @@ public Transitions getTransition() {
return null;
}

public void setOnSliderChange(ISliderChange iSliderChange) {
this.iSliderChange = iSliderChange;
}

public ISliderChange getSliderChange() {
return iSliderChange;
}

@Override
public void setOnclick(IOverlayClick iOverlayClick) {
this.iOverlayClick = iOverlayClick;
Expand All @@ -76,6 +88,11 @@ public void setOnHover(IOverlayHover iOverlayHover) {
this.iOverlayHover = iOverlayHover;
}

@Override
public void setOnClickRelease(IOverlayClickRelease iOverlayClickRelease) {
this.iOverlayClickRelease = iOverlayClickRelease;
}

@Override
public IOverlayClick getOnClick() {
return iOverlayClick;
Expand All @@ -86,4 +103,9 @@ public IOverlayHover getOnHover() {
return iOverlayHover;
}

@Override
public IOverlayClickRelease getOnRelease() {
return iOverlayClickRelease;
}

}
12 changes: 12 additions & 0 deletions src/main/java/me/piitex/renjava/gui/overlay/TextFlowOverlay.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import me.piitex.renjava.api.loaders.FontLoader;
import me.piitex.renjava.api.scenes.transitions.Transitions;
import me.piitex.renjava.gui.overlay.events.IOverlayClick;
import me.piitex.renjava.gui.overlay.events.IOverlayClickRelease;
import me.piitex.renjava.gui.overlay.events.IOverlayHover;

import java.util.LinkedList;
Expand All @@ -24,6 +25,7 @@ public class TextFlowOverlay implements Overlay, Region {

private IOverlayClick iOverlayClick;
private IOverlayHover iOverlayHover;
private IOverlayClickRelease iOverlayClickRelease;

private LinkedList<Text> texts = new LinkedList<>();

Expand Down Expand Up @@ -144,6 +146,11 @@ public void setOnHover(IOverlayHover iOverlayHover) {
this.iOverlayHover = iOverlayHover;
}

@Override
public void setOnClickRelease(IOverlayClickRelease iOverlayClickRelease) {
this.iOverlayClickRelease = iOverlayClickRelease;
}

@Override
public IOverlayClick getOnClick() {
return iOverlayClick;
Expand All @@ -154,6 +161,11 @@ public IOverlayHover getOnHover() {
return iOverlayHover;
}

@Override
public IOverlayClickRelease getOnRelease() {
return iOverlayClickRelease;
}


public void setTransitions(Transitions transitions) {
this.transitions = transitions;
Expand Down
Loading

0 comments on commit d439938

Please sign in to comment.