aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/sowgro/npehero/main/ValidIndicator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/sowgro/npehero/main/ValidIndicator.java')
-rw-r--r--src/main/java/net/sowgro/npehero/main/ValidIndicator.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/net/sowgro/npehero/main/ValidIndicator.java b/src/main/java/net/sowgro/npehero/main/ValidIndicator.java
new file mode 100644
index 0000000..79df643
--- /dev/null
+++ b/src/main/java/net/sowgro/npehero/main/ValidIndicator.java
@@ -0,0 +1,50 @@
+package net.sowgro.npehero.main;
+
+import javafx.scene.control.Tooltip;
+import javafx.scene.layout.Background;
+import javafx.scene.layout.Region;
+import javafx.scene.paint.Color;
+import javafx.scene.shape.SVGPath;
+import javafx.util.Duration;
+import net.sowgro.npehero.Driver;
+
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+public class ValidIndicator extends Region {
+ public ValidIndicator() {
+ this.setScaleX(0.7);
+ this.setScaleY(0.7);
+ this.prefWidthProperty().bind(super.heightProperty());
+ }
+
+ public void setValid() {
+ this.setShape(null);
+ this.setBackground(Background.EMPTY);
+ }
+
+ public void setInvalid(String reason) {
+ Tooltip diffLabelTooltip = new Tooltip(reason);
+ diffLabelTooltip.setShowDelay(Duration.ZERO);
+ SVGPath diffLabelIcon = new SVGPath();
+ diffLabelIcon.setContent(pathFromSvg(Driver.getResource("error.svg")));
+ this.setShape(diffLabelIcon);
+ this.setBackground(Background.fill(Color.web("#a70000")));
+ Tooltip.install(this, diffLabelTooltip);
+ }
+
+ private String pathFromSvg(URL url) {
+ try {
+ String fileContent = Files.readString(Paths.get(url.toURI()));
+ String startKey = "<path d=\"";
+ String endKey = "\"";
+ int startIndex = fileContent.indexOf(startKey) + startKey.length();
+ int endIndex = fileContent.substring(startIndex).indexOf(endKey) + startIndex;
+ return fileContent.substring(startIndex, endIndex);
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+}