diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/Block.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/Block.java index 84e893b4..5b8e27f9 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/Block.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/Block.java @@ -173,6 +173,8 @@ public void deserialize(JSONObject json) { public abstract void delete(); + public abstract void openJavadocs(); + public String arg(int i, BuildInfo buildInfo) { return parameters.get(i).generateJava(buildInfo); } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/ExpressionBlock.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/ExpressionBlock.java index 78917c40..a56479b2 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/ExpressionBlock.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/ExpressionBlock.java @@ -1,9 +1,12 @@ package com.gmail.visualbukkit.blocks; import com.gmail.visualbukkit.VisualBukkitApp; +import com.gmail.visualbukkit.blocks.definitions.core.*; +import com.gmail.visualbukkit.blocks.definitions.gui.*; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.project.CopyPasteManager; +import com.gmail.visualbukkit.project.JavadocsManager; import com.gmail.visualbukkit.project.UndoManager; import com.gmail.visualbukkit.reflection.ClassInfo; import com.gmail.visualbukkit.ui.ActionMenuItem; @@ -20,6 +23,8 @@ import javafx.scene.paint.Color; import org.json.JSONObject; +import java.net.URI; + public non-sealed abstract class ExpressionBlock extends Block { private static final PseudoClass NESTED_STYLE_CLASS = PseudoClass.getPseudoClass("nested"); @@ -34,7 +39,9 @@ public ExpressionBlock() { CopyPasteManager.copyExpression(this); UndoManager.current().execute(this::delete); }), - new ActionMenuItem(VisualBukkitApp.localizedText("context_menu.delete"), e -> UndoManager.current().execute(this::delete))); + new ActionMenuItem(VisualBukkitApp.localizedText("context_menu.delete"), e -> UndoManager.current().execute(this::delete)), + new ActionMenuItem(VisualBukkitApp.localizedText("context_menu.javadocs"), e -> openJavadocs()) + ); setOnDragDetected(e -> { if (e.getButton() == MouseButton.PRIMARY) { @@ -118,5 +125,10 @@ public JSONObject serialize() { public void deserialize(JSONObject json) { this.json = json; } + + @Override + public void openJavadocs() { + VisualBukkitApp.displayError(VisualBukkitApp.localizedText("notification.unavailable_javadocs")); + } } } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/PluginComponentBlock.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/PluginComponentBlock.java index f1b5ffa4..efb3c578 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/PluginComponentBlock.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/PluginComponentBlock.java @@ -16,8 +16,9 @@ public PluginComponentBlock() { ActionMenuItem pasteItem = new ActionMenuItem(VisualBukkitApp.localizedText("context_menu.paste_after"), e -> UndoManager.current().execute(() -> childStatementHolder.addFirst(CopyPasteManager.pasteStatement()))); ActionMenuItem collapseItem = new ActionMenuItem(VisualBukkitApp.localizedText("context_menu.collapse_all"), e -> childStatementHolder.setCollapsedRecursive(true)); ActionMenuItem expandItem = new ActionMenuItem(VisualBukkitApp.localizedText("context_menu.expand_all"), e -> childStatementHolder.setCollapsedRecursive(false)); + ActionMenuItem javadocItem = new ActionMenuItem(VisualBukkitApp.localizedText("context_menu.javadocs"), e -> JavadocsManager.getCompJavaDocs(getPluginComponent())); pasteItem.disableProperty().bind(CopyPasteManager.statementCopiedProperty().not()); - getContextMenu().getItems().addAll(collapseItem, expandItem, pasteItem); + getContextMenu().getItems().addAll(collapseItem, expandItem, pasteItem, javadocItem); getContextMenu().setOnShowing(e -> { collapseItem.setDisable(childStatementHolder.isEmpty()); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/StatementBlock.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/StatementBlock.java index 8495b94e..a32d73d2 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/StatementBlock.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/StatementBlock.java @@ -1,9 +1,7 @@ package com.gmail.visualbukkit.blocks; import com.gmail.visualbukkit.VisualBukkitApp; -import com.gmail.visualbukkit.project.BuildInfo; -import com.gmail.visualbukkit.project.CopyPasteManager; -import com.gmail.visualbukkit.project.UndoManager; +import com.gmail.visualbukkit.project.*; import com.gmail.visualbukkit.ui.ActionMenuItem; import javafx.scene.SnapshotParameters; import javafx.scene.control.SeparatorMenuItem; @@ -36,9 +34,11 @@ public StatementBlock() { ActionMenuItem deleteStackItem = new ActionMenuItem(VisualBukkitApp.localizedText("context_menu.delete_stack"), e -> UndoManager.current().execute(() -> getParentStatementHolder().removeStack(this))); ActionMenuItem pasteBeforeItem = new ActionMenuItem(VisualBukkitApp.localizedText("context_menu.paste_before"), e -> UndoManager.current().execute(() -> getParentStatementHolder().addBefore(this, CopyPasteManager.pasteStatement()))); ActionMenuItem pasteAfterItem = new ActionMenuItem(VisualBukkitApp.localizedText("context_menu.paste_after"), e -> UndoManager.current().execute(() -> getParentStatementHolder().addAfter(this, CopyPasteManager.pasteStatement()))); + ActionMenuItem javadocsItem = new ActionMenuItem(VisualBukkitApp.localizedText("context_menu.javadocs"), e -> openJavadocs()); + pasteBeforeItem.disableProperty().bind(CopyPasteManager.statementCopiedProperty().not()); pasteAfterItem.disableProperty().bind(pasteBeforeItem.disableProperty()); - getContextMenu().getItems().addAll(copyItem, cutItem, deleteItem, new SeparatorMenuItem(), copyStackItem, cutStackItem, deleteStackItem, new SeparatorMenuItem(), pasteBeforeItem, pasteAfterItem); + getContextMenu().getItems().addAll(copyItem, cutItem, deleteItem, new SeparatorMenuItem(), copyStackItem, cutStackItem, deleteStackItem, new SeparatorMenuItem(), pasteBeforeItem, pasteAfterItem, new SeparatorMenuItem(), javadocsItem); setOnDragDetected(e -> { if (e.getButton() == MouseButton.PRIMARY) { diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/bungee/StatBungeeCordConnect.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/bungee/StatBungeeCordConnect.java index 1ea0b5cd..4f4b571f 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/bungee/StatBungeeCordConnect.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/bungee/StatBungeeCordConnect.java @@ -1,19 +1,27 @@ package com.gmail.visualbukkit.blocks.definitions.bungee; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "stat-bungeecord-connect", name = "BungeeCord Connect", description = "Connects a player to a BungeeCord server") -public class StatBungeeCordConnect extends StatementBlock { +public class StatBungeeCordConnect extends StatementBlock { public StatBungeeCordConnect() { addParameter("Player", new ExpressionParameter(ClassInfo.of("org.bukkit.entity.Player"))); addParameter("Server", new ExpressionParameter(ClassInfo.of(String.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/")); + } + @Override public String generateJava(BuildInfo buildInfo) { if (buildInfo.getMetadata().putIfAbsent("bungeecordConnect()", true) == null) { diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprBoolean.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprBoolean.java index 35454465..a5b74330 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprBoolean.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprBoolean.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ChoiceParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-boolean", name = "Boolean", description = "A boolean (true or false)") public class ExprBoolean extends ExpressionBlock { @@ -13,6 +16,11 @@ public ExprBoolean() { addParameter("Value", new ChoiceParameter("true", "false")); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(boolean.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprBooleanLogic.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprBooleanLogic.java index cde2b5ff..55513db6 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprBooleanLogic.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprBooleanLogic.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.SizedExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.BlockParameter; @@ -8,6 +9,7 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.Map; import java.util.StringJoiner; import java.util.TreeMap; @@ -29,6 +31,11 @@ public ExprBooleanLogic() { addParameter("Boolean", new ExpressionParameter(ClassInfo.of(boolean.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(boolean.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprColoredString.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprColoredString.java index 2674bc98..20666031 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprColoredString.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprColoredString.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-colored-string", name = "Colored String", description = "A string with '&' color codes") public class ExprColoredString extends ExpressionBlock { @@ -13,6 +16,11 @@ public ExprColoredString() { addParameter("String", new ExpressionParameter(ClassInfo.of(String.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/ChatColor.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(String.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCommandArgument.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCommandArgument.java index 2fd94507..d3101394 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCommandArgument.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCommandArgument.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-command-argument", name = "Command Argument", description = "An argument passed to a command (must be used in a 'Command' or 'Tab Complete Handler' plugin component)") public class ExprCommandArgument extends ExpressionBlock { @@ -24,6 +27,11 @@ public void updateState() { checkForPluginComponent(CompCommand.class, CompTabCompleteHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/command/Command.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "(commandArgs.length > " + arg(0, buildInfo) + " ? commandArgs[" + arg(0, buildInfo) + "] : null" + ")"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCommandArguments.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCommandArguments.java index 82d41bb2..cb369d3f 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCommandArguments.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCommandArguments.java @@ -1,10 +1,12 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.List; @BlockDefinition(id = "expr-command-arguments", name = "Command Arguments", description = "The list of arguments passed to a command (must be used in a 'Command' or 'Tab Complete Handler' plugin component)") @@ -21,6 +23,11 @@ public void updateState() { checkForPluginComponent(CompCommand.class, CompTabCompleteHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/command/Command.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "List.of(commandArgs)"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCommandSender.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCommandSender.java index 29e9a8ea..387d7ade 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCommandSender.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCommandSender.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-command-sender", name = "Command Sender", description = "The player/console that executed the command (must be used in a 'Command' or 'Tab Complete Handler' plugin component)") public class ExprCommandSender extends ExpressionBlock { @@ -19,6 +22,11 @@ public void updateState() { checkForPluginComponent(CompCommand.class, CompTabCompleteHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/command/CommandSender.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "commandSender"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprConditionalExpression.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprConditionalExpression.java index 6d9e7b79..6b168960 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprConditionalExpression.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprConditionalExpression.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-conditional-expression", name = "Conditional Expression", description = "Returns one of two objects depending on a condition") public class ExprConditionalExpression extends ExpressionBlock { @@ -15,6 +18,11 @@ public ExprConditionalExpression() { addParameter("If False", new ExpressionParameter(ClassInfo.of(Object.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(Object.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprConsumer.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprConsumer.java index 214a7ba8..6b59ca79 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprConsumer.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprConsumer.java @@ -1,11 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.PluginComponentParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.function.Consumer; @BlockDefinition(id = "expr-consumer", name = "Consumer", description = "A consumer") @@ -17,6 +19,11 @@ public ExprConsumer() { addParameter("Consumer", parameter); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Consumer.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(Consumer.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprConsumerInput.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprConsumerInput.java index 61a7cdd1..209f829f 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprConsumerInput.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprConsumerInput.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-consumer-input", name = "Consumer Input", description = "The input to a consumer (must be used in a 'Consumer' plugin component)") public class ExprConsumerInput extends ExpressionBlock { @@ -14,6 +17,11 @@ public void updateState() { checkForPluginComponent(CompConsumer.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Consumer.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(Object.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCurrentEvent.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCurrentEvent.java index 4a59ddbc..f7f3b6a3 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCurrentEvent.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprCurrentEvent.java @@ -3,6 +3,7 @@ import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; +import com.gmail.visualbukkit.project.JavadocsManager; import com.gmail.visualbukkit.reflection.ClassInfo; @BlockDefinition(id = "expr-current-event", name = "Current Event", description = "The current event in a 'Event Listener' plugin component") @@ -14,6 +15,11 @@ public void updateState() { checkForPluginComponent(CompEventListener.class); } + @Override + public void openJavadocs() { + JavadocsManager.getCompJavaDocs(getPluginComponentBlock().getPluginComponent()); + } + @Override public ClassInfo getReturnType() { return getPluginComponentBlock() instanceof CompEventListener e ? e.getEvent() : null; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprEscapeSequence.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprEscapeSequence.java index 904f2439..b5f4b94a 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprEscapeSequence.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprEscapeSequence.java @@ -1,11 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ChoiceParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.HashMap; import java.util.Map; @@ -26,6 +28,11 @@ public ExprEscapeSequence() { addParameter("Sequence", new ChoiceParameter(escapeSequences.keySet())); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/data/characters.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(char.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprExecutionException.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprExecutionException.java index 13b67b1f..0d382ec0 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprExecutionException.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprExecutionException.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-execution-exception", name = "Execution Exception", description = "The exception that occurred (must be used in 'Handle Exception')") public class ExprExecutionException extends ExpressionBlock { @@ -17,4 +20,9 @@ public ClassInfo getReturnType() { public String generateJava(BuildInfo buildInfo) { return "$executionException" + getNestedContainers(StatHandleException.class); } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Exception.html")); + } } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprField.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprField.java index 9decb553..56c76741 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprField.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprField.java @@ -5,6 +5,7 @@ import com.gmail.visualbukkit.blocks.parameters.ClassParameter; import com.gmail.visualbukkit.blocks.parameters.FieldParameter; import com.gmail.visualbukkit.project.BuildInfo; +import com.gmail.visualbukkit.project.JavadocsManager; import com.gmail.visualbukkit.reflection.ClassInfo; import com.gmail.visualbukkit.reflection.FieldInfo; @@ -19,6 +20,11 @@ public ExprField() { addParameter("Field", fieldParameter = new FieldParameter(this, classParameter)); } + @Override + public void openJavadocs() { + JavadocsManager.getExprJavadocs(classParameter, fieldParameter); + } + @Override public ClassInfo getReturnType() { return fieldParameter.getValue() != null ? fieldParameter.getValue().getType() : ClassInfo.of(Object.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprFunctionArgument.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprFunctionArgument.java index 0e2ba9fc..f9bc0b7b 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprFunctionArgument.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprFunctionArgument.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-function-argument", name = "Function Argument", description = "An argument passed to a function (must be used in a 'Function' plugin component)") public class ExprFunctionArgument extends ExpressionBlock { @@ -19,6 +22,11 @@ public void updateState() { checkForPluginComponent(CompFunction.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(Object.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprFunctionArguments.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprFunctionArguments.java index 2e558808..a7bfed50 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprFunctionArguments.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprFunctionArguments.java @@ -1,10 +1,12 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.List; @BlockDefinition(id = "expr-function-arguments", name = "Function Arguments", description = "The list of arguments passed to a function (must be used in a 'Function' plugin component)") @@ -16,6 +18,11 @@ public void updateState() { checkForPluginComponent(CompFunction.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(List.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprFunctionValue.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprFunctionValue.java index 21295e63..776cecc2 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprFunctionValue.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprFunctionValue.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; @@ -7,6 +8,7 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.List; @BlockDefinition(id = "expr-function-value", name = "Function Value", description = "Evaluates the given function") @@ -17,6 +19,11 @@ public ExprFunctionValue() { addParameter("Arguments", new ExpressionParameter(ClassInfo.of(List.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(Object.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprGlobalVariable.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprGlobalVariable.java index a349d71a..428e5919 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprGlobalVariable.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprGlobalVariable.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; @@ -7,6 +8,8 @@ import com.gmail.visualbukkit.reflection.ClassInfo; import org.jboss.forge.roaster.model.source.JavaClassSource; +import java.net.URI; + @BlockDefinition(id = "expr-global-variable", name = "Global Variable", description = "The value of a global variable") public class ExprGlobalVariable extends ExpressionBlock { @@ -14,6 +17,11 @@ public ExprGlobalVariable() { addParameter("Variable", new ExpressionParameter(ClassInfo.of(String.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://github.com/OfficialDonut/VisualBukkit/wiki/Variables")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(Object.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprHashMap.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprHashMap.java index fa61b4a2..0793a849 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprHashMap.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprHashMap.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.SizedExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.BlockParameter; @@ -7,6 +8,7 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.HashMap; import java.util.StringJoiner; @@ -52,4 +54,9 @@ public static HashMap newHashMap(Object... objects) { } return "PluginMain.newHashMap(" + joiner + ")"; } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/HashMap.html")); + } } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprHashSet.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprHashSet.java index 95088d1f..edaa1c76 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprHashSet.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprHashSet.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.SizedExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.BlockParameter; @@ -7,6 +8,7 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.HashSet; import java.util.StringJoiner; @@ -39,4 +41,9 @@ public String generateJava(BuildInfo buildInfo) { } return "new HashSet(Arrays.asList(" + joiner + "))"; } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/HashSet.html")); + } } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprHexColoredString.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprHexColoredString.java index 2a5b8e88..7e248c43 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprHexColoredString.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprHexColoredString.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-hex-colored-string", name = "Hex Colored String", description = "A string with '&' and hex color codes") public class ExprHexColoredString extends ExpressionBlock { @@ -13,6 +16,11 @@ public ExprHexColoredString() { addParameter("String", new ExpressionParameter(ClassInfo.of(String.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/ChatColor.html#translateAlternateColorCodes(char,java.lang.String)")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(String.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprImmutableList.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprImmutableList.java index d0abfa33..55cb0026 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprImmutableList.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprImmutableList.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.SizedExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.BlockParameter; @@ -7,6 +8,7 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.List; import java.util.StringJoiner; @@ -39,4 +41,9 @@ public String generateJava(BuildInfo buildInfo) { } return "List.of(" + joiner + ")"; } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html")); + } } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprIsClass.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprIsClass.java index 278d3531..746eedee 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprIsClass.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprIsClass.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ClassParameter; @@ -7,6 +8,8 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-is-class", name = "Is Class", description = "Checks if an object is an instance of a class") public class ExprIsClass extends ExpressionBlock { @@ -17,6 +20,11 @@ public ExprIsClass() { addParameter("Object", new ExpressionParameter(ClassInfo.of(Object.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Class.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(boolean.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprIsEqual.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprIsEqual.java index 8e273dac..f8355889 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprIsEqual.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprIsEqual.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-is-equal", name = "Is Equal", description = "Checks if two objects are equal") public class ExprIsEqual extends ExpressionBlock { @@ -17,6 +20,11 @@ public ExprIsEqual() { addParameter("Object", expr2); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(boolean.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprIsNull.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprIsNull.java index 1cc20bb2..e8468cdb 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprIsNull.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprIsNull.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-is-null", name = "Is Null", description = "Checks if an object is null") public class ExprIsNull extends ExpressionBlock { @@ -13,6 +16,11 @@ public ExprIsNull() { addParameter("Object", new ExpressionParameter(ClassInfo.of(Object.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Objects.html#isNull(java.lang.Object)")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(boolean.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprItemStack.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprItemStack.java index 5d2bf1ac..702e4686 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprItemStack.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprItemStack.java @@ -1,11 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.List; @BlockDefinition(id = "expr-itemstack", name = "ItemStack", description = "An ItemStack optionally with a name and lore") @@ -17,6 +19,11 @@ public ExprItemStack() { addParameter("Lore", new ExpressionParameter(ClassInfo.of(List.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/inventory/ItemStack.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of("org.bukkit.inventory.ItemStack"); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprJavaCode.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprJavaCode.java index 923f19a0..44f10ded 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprJavaCode.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprJavaCode.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.MultilineInputParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-java-code", name = "Java Code", description = "Arbitrary Java code") public class ExprJavaCode extends ExpressionBlock { @@ -13,6 +16,11 @@ public ExprJavaCode() { addParameter("Java", new MultilineInputParameter()); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.OBJECT_OR_PRIMITIVE; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprList.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprList.java index 8a59dcfb..d1f2abe6 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprList.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprList.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.SizedExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.BlockParameter; @@ -7,6 +8,7 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.ArrayList; import java.util.StringJoiner; @@ -39,4 +41,9 @@ public String generateJava(BuildInfo buildInfo) { } return "new ArrayList(Arrays.asList(" + joiner + "))"; } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html")); + } } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprLocalVariable.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprLocalVariable.java index fa92ba00..346236eb 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprLocalVariable.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprLocalVariable.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.InputParameter; @@ -7,6 +8,7 @@ import com.gmail.visualbukkit.reflection.ClassInfo; import com.google.common.hash.Hashing; +import java.net.URI; import java.nio.charset.StandardCharsets; import java.util.Collections; import java.util.regex.Pattern; @@ -24,6 +26,11 @@ public ExprLocalVariable() { parameter.getStyleClass().add("local-variable-field"); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://github.com/OfficialDonut/VisualBukkit/wiki/Variables")); + } + public ExprLocalVariable(String var) { this(); parameter.setText(var); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprLoopNumber.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprLoopNumber.java index 22c42f4c..43ec3f66 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprLoopNumber.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprLoopNumber.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-loop-number", name = "Loop Number", description = "The current loop number") public class ExprLoopNumber extends ExpressionBlock { @@ -19,6 +22,11 @@ public void updateState() { checkForContainer(StatNumberLoop.class, StatAdvancedNumberLoop.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "$FINAL_loopNumber" + getNestedContainers(StatNumberLoop.class, StatAdvancedNumberLoop.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprLoopValue.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprLoopValue.java index 16b1193c..d6155a23 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprLoopValue.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprLoopValue.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-loop-value", name = "Loop Value", description = "The current loop value") public class ExprLoopValue extends ExpressionBlock { @@ -19,6 +22,11 @@ public void updateState() { checkForContainer(StatListLoop.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "$FINAL_loopValue" + getNestedContainers(StatListLoop.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprMath.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprMath.java index 0e1d35ef..7805030d 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprMath.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprMath.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.SizedExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.BlockParameter; @@ -8,6 +9,7 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.StringJoiner; @BlockDefinition(id = "expr-math", name = "Math", description = "Math operations (+, -, *, /, %)") @@ -21,6 +23,11 @@ public ExprMath() { addParameter("Number", new ExpressionParameter(ClassInfo.of(double.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(double.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprMethod.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprMethod.java index 93ed46ad..65603ac8 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprMethod.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprMethod.java @@ -6,6 +6,7 @@ import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.blocks.parameters.MethodParameter; import com.gmail.visualbukkit.project.BuildInfo; +import com.gmail.visualbukkit.project.JavadocsManager; import com.gmail.visualbukkit.reflection.ClassInfo; import com.gmail.visualbukkit.reflection.MethodInfo; @@ -22,6 +23,11 @@ public ExprMethod() { addParameter("Method", methodParameter = new MethodParameter(this, classParameter, m -> m.getReturnType() != null)); } + @Override + public void openJavadocs() { + JavadocsManager.getExprJavadocs(classParameter, methodParameter); + } + public ExprMethod(ClassInfo clazz, MethodInfo method, ExpressionBlock... parameterExpressions) { this(); classParameter.setValue(clazz); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprMultilineString.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprMultilineString.java index 8e51ca32..24081f39 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprMultilineString.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprMultilineString.java @@ -1,11 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.MultilineStringParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.Collections; @BlockDefinition(id = "expr-multiline-string", name = "Multiline String", description = "A multiline string literal") @@ -19,6 +21,11 @@ public ExprMultilineString() { parameters = Collections.singletonList(parameter); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/data/strings/multiline.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(String.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNegateBoolean.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNegateBoolean.java index fc52d156..7acd4d66 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNegateBoolean.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNegateBoolean.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-negate-boolean", name = "Negate Boolean", description = "Negates a boolean") public class ExprNegateBoolean extends ExpressionBlock { @@ -13,6 +16,11 @@ public ExprNegateBoolean() { addParameter("Boolean", new ExpressionParameter(ClassInfo.of(boolean.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(boolean.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNewObject.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNewObject.java index 8f8d8f9b..1d5c4f5c 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNewObject.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNewObject.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ClassParameter; @@ -9,6 +10,7 @@ import com.gmail.visualbukkit.reflection.ClassInfo; import com.gmail.visualbukkit.reflection.ConstructorInfo; +import java.net.URI; import java.util.StringJoiner; @BlockDefinition(id = "expr-new-object", name = "New Object", description = "Creates a new instance of a class") @@ -22,6 +24,11 @@ public ExprNewObject() { addParameter("Constructor", constructorParameter = new ConstructorParameter(this, classParameter)); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html")); + } + public ExprNewObject(ClassInfo clazz, ConstructorInfo constructor, ExpressionBlock... parameterExpressions) { this(); classParameter.setValue(clazz); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNull.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNull.java index e3e917ce..0ef0f334 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNull.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNull.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-null", name = "Null", description = "A null reference") public class ExprNull extends ExpressionBlock { @@ -17,4 +20,9 @@ public ClassInfo getReturnType() { public String generateJava(BuildInfo buildInfo) { return "((Object) null)"; } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://www.upwork.com/resources/what-is-null-in-java")); + } } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNumber.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNumber.java index c155a754..68824d36 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNumber.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNumber.java @@ -1,11 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.InputParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.Collections; import java.util.regex.Pattern; @@ -27,6 +29,11 @@ public ExprNumber() { }); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html")); + } + public ExprNumber(Number num) { this(); parameter.setText(num instanceof Double || num instanceof Float ? String.format("%.3f", num.doubleValue()) : String.format("%d", num.longValue())); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNumberComparison.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNumberComparison.java index f00d59b7..60a560db 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNumberComparison.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprNumberComparison.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ChoiceParameter; @@ -7,6 +8,8 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-number-comparison", name = "Number Comparison", description = "Compares two numbers") public class ExprNumberComparison extends ExpressionBlock { @@ -16,6 +19,11 @@ public ExprNumberComparison() { addParameter("Number", new ExpressionParameter(ClassInfo.of(double.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(boolean.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprPersistentVariable.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprPersistentVariable.java index a106b235..b9680924 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprPersistentVariable.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprPersistentVariable.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; @@ -8,6 +9,8 @@ import org.jboss.forge.roaster.model.source.JavaClassSource; import org.jboss.forge.roaster.model.source.MethodSource; +import java.net.URI; + @BlockDefinition(id = "expr-persistent-variable", name = "Persistent Variable", description = "The value of a persistent variable") public class ExprPersistentVariable extends ExpressionBlock { @@ -15,6 +18,11 @@ public ExprPersistentVariable() { addParameter("Variable", new ExpressionParameter(ClassInfo.of(String.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://github.com/OfficialDonut/VisualBukkit/wiki/Variables")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(Object.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprProcedureArgument.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprProcedureArgument.java index 4b91c7ab..00f5e6ff 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprProcedureArgument.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprProcedureArgument.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-procedure-argument", name = "Procedure Argument", description = "An argument passed to a procedure (must be used in a 'Procedure' plugin component)") public class ExprProcedureArgument extends ExpressionBlock { @@ -19,6 +22,11 @@ public void updateState() { checkForPluginComponent(CompProcedure.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(Object.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprProcedureArguments.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprProcedureArguments.java index 8044b3d9..2893611f 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprProcedureArguments.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprProcedureArguments.java @@ -1,10 +1,12 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.List; @BlockDefinition(id = "expr-procedure-arguments", name = "Procedure Arguments", description = "The list of arguments passed to a procedure (must be used in a 'Procedure' plugin component)") @@ -16,6 +18,11 @@ public void updateState() { checkForPluginComponent(CompProcedure.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(List.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprRawString.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprRawString.java index beb804a3..ba0f61d0 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprRawString.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprRawString.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.InputParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-raw-string", name = "Raw String", description = "A string in which escape sequences can be used") public class ExprRawString extends ExpressionBlock { @@ -13,6 +16,11 @@ public ExprRawString() { addParameter("String", new InputParameter()); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/data/strings/index.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(String.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprSerializedItemStack.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprSerializedItemStack.java index 7e320f24..a57a1ef5 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprSerializedItemStack.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprSerializedItemStack.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.MultilineStringParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-serialized-itemstack", name = "Serialized ItemStack", description = "Creates an ItemStack from YAML") public class ExprSerializedItemStack extends ExpressionBlock { @@ -15,6 +18,11 @@ public ExprSerializedItemStack() { addParameter("Yaml", parameter); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/inventory/ItemStack.html")); + } + public ExprSerializedItemStack(String yaml) { this(); parameter.setText(yaml); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprString.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprString.java index 375de1e3..74dbde9f 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprString.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprString.java @@ -1,11 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.StringParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.Collections; @BlockDefinition(id = "expr-string", name = "String", description = "A string literal") @@ -19,6 +21,11 @@ public ExprString() { parameters = Collections.singletonList(parameter); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html")); + } + public ExprString(String string) { this(); parameter.setText(string); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprStringConcatenation.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprStringConcatenation.java index f7ca001f..deb56e70 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprStringConcatenation.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprStringConcatenation.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.SizedExpressionBlock; import com.gmail.visualbukkit.blocks.parameters.BlockParameter; @@ -7,6 +8,7 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.StringJoiner; @BlockDefinition(id = "expr-string-concatenation", name = "String Concatenation", description = "Concatenates two or more strings") @@ -17,6 +19,11 @@ public ExprStringConcatenation() { addParameter("String", new ExpressionParameter(ClassInfo.of(String.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html#concat(java.lang.String)")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(String.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprThisPlugin.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprThisPlugin.java index 4deba7c9..21f8f856 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprThisPlugin.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/ExprThisPlugin.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-this-plugin", name = "This Plugin", description = "A reference to this plugin") public class ExprThisPlugin extends ExpressionBlock { @@ -17,4 +20,9 @@ public ClassInfo getReturnType() { public String generateJava(BuildInfo buildInfo) { return "PluginMain.getInstance()"; } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/plugin/java/JavaPlugin.html")); + } } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatAdvancedNumberLoop.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatAdvancedNumberLoop.java index 49c7eecc..48f07a35 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatAdvancedNumberLoop.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatAdvancedNumberLoop.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ContainerBlock; import com.gmail.visualbukkit.blocks.parameters.ChoiceParameter; @@ -7,6 +8,8 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "stat-advanced-number-loop", name = "Advanced Number Loop", description = "Loops through a range of numbers") public class StatAdvancedNumberLoop extends ContainerBlock { @@ -18,6 +21,11 @@ public StatAdvancedNumberLoop() { addParameter("Comparison", new ChoiceParameter("<", "<=", ">", ">=", "==", "!=")); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { String loopVar = "loopNumber" + getNestedContainers(StatNumberLoop.class, StatAdvancedNumberLoop.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatAttemptExecution.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatAttemptExecution.java index 1b8f2674..c8b17e0f 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatAttemptExecution.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatAttemptExecution.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ContainerBlock; import com.gmail.visualbukkit.project.BuildInfo; import org.apache.commons.lang3.RandomStringUtils; +import java.net.URI; + @BlockDefinition(id = "stat-attempt-execution", name = "Attempt Execution", description = "Attempts to execute code and suppresses any exceptions") public class StatAttemptExecution extends ContainerBlock { @@ -12,4 +15,9 @@ public class StatAttemptExecution extends ContainerBlock { public String generateJava(BuildInfo buildInfo) { return "try {" + generateChildrenJava(buildInfo) + (getParentStatementHolder().getNext(this) instanceof StatHandleException ? "}" : ("} catch (Exception $" + RandomStringUtils.randomAlphanumeric(16) + ") {}")); } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/essential/exceptions/try.html")); + } } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatBreakLoop.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatBreakLoop.java index c60303bf..f396df2a 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatBreakLoop.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatBreakLoop.java @@ -1,9 +1,12 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.project.BuildInfo; +import java.net.URI; + @BlockDefinition(id = "stat-break-loop", name = "Break Loop", description = "Immediately stops a loop") public class StatBreakLoop extends StatementBlock { @@ -13,6 +16,11 @@ public void updateState() { checkForContainer(StatWhileLoop.class, StatListLoop.class, StatNumberLoop.class, StatAdvancedNumberLoop.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "if (true) break;"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatCancelScheduledTask.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatCancelScheduledTask.java index 586f278d..80f95584 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatCancelScheduledTask.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatCancelScheduledTask.java @@ -1,9 +1,12 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.project.BuildInfo; +import java.net.URI; + @BlockDefinition(id = "stat-cancel-scheduled-task", name = "Cancel Scheduled Task", description = "Cancels a scheduled task") public class StatCancelScheduledTask extends StatementBlock { @@ -13,6 +16,11 @@ public void updateState() { checkForContainer(StatScheduleTask.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/scheduler/BukkitScheduler.html#cancelTask(int)")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "cancel();"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatCommandReturn.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatCommandReturn.java index b0ad2b75..8b30ec8f 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatCommandReturn.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatCommandReturn.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "stat-command-return", name = "Command Return", description = "Terminates a command and indicates whether it was successful (must be used in a 'Command' plugin component") public class StatCommandReturn extends StatementBlock { @@ -19,6 +22,11 @@ public void updateState() { checkForPluginComponent(CompCommand.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/command/CommandSender.html#sendMessage(java.lang.String)")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "if (true) return " + arg(0, buildInfo) + ";"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatComment.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatComment.java index d9dceec5..dc05b6aa 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatComment.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatComment.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.blocks.parameters.InputParameter; @@ -7,6 +8,7 @@ import javafx.scene.control.Label; import javafx.scene.layout.HBox; +import java.net.URI; import java.util.Collections; @BlockDefinition(id = "stat-comment", name = "Comment", description = "A comment with no effect") @@ -19,6 +21,11 @@ public StatComment() { parameters = Collections.singletonList(inputParameter); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/comments.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return ""; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatContinueLoop.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatContinueLoop.java index 9444f985..d574f8ab 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatContinueLoop.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatContinueLoop.java @@ -1,9 +1,12 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.project.BuildInfo; +import java.net.URI; + @BlockDefinition(id = "stat-continue-loop", name = "Continue Loop", description = "Advances a loop to the next iteration") public class StatContinueLoop extends StatementBlock { @@ -13,6 +16,11 @@ public void updateState() { checkForContainer(StatWhileLoop.class, StatListLoop.class, StatNumberLoop.class, StatAdvancedNumberLoop.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "if (true) continue;"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatElseIfStatement.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatElseIfStatement.java index 3e5f56c2..e79c56f9 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatElseIfStatement.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatElseIfStatement.java @@ -1,8 +1,11 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.project.BuildInfo; +import java.net.URI; + @BlockDefinition(id = "stat-else-if-statement", name = "Else If Statement", description = "Checks if a condition is true and the condition was false for the previous 'If Statement' or 'Else If Statement'") public class StatElseIfStatement extends StatIfStatement { @@ -12,6 +15,11 @@ public void updateState() { checkForPrevious(StatIfStatement.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "else " + super.generateJava(buildInfo); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatElseStatement.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatElseStatement.java index 77e6a02a..4dc863d7 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatElseStatement.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatElseStatement.java @@ -1,9 +1,12 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ContainerBlock; import com.gmail.visualbukkit.project.BuildInfo; +import java.net.URI; + @BlockDefinition(id = "stat-else-statement", name = "Else Statement", description = "Checks if the condition was false for the previous 'If Statement' or 'Else If Statement'") public class StatElseStatement extends ContainerBlock { @@ -13,6 +16,11 @@ public void updateState() { checkForPrevious(StatIfStatement.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "else {" + generateChildrenJava(buildInfo) + "}"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatExecuteProcedure.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatExecuteProcedure.java index f54a08fd..f3f50f28 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatExecuteProcedure.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatExecuteProcedure.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; @@ -7,6 +8,7 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.List; @BlockDefinition(id = "stat-execute-procedure", name = "Execute Procedure", description = "Executes the given procedure") @@ -17,6 +19,11 @@ public StatExecuteProcedure() { addParameter("Arguments", new ExpressionParameter(ClassInfo.of(List.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Supplier.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "PluginMain.procedure(" + arg(0, buildInfo) + "," + arg(1, buildInfo) + ");"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatFunctionReturn.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatFunctionReturn.java index 0e9ff27b..9aff9902 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatFunctionReturn.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatFunctionReturn.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "stat-function-return", name = "Function Return", description = "Returns a value (must be used in a 'Function' plugin component)") public class StatFunctionReturn extends StatementBlock { @@ -19,6 +22,11 @@ public void updateState() { checkForPluginComponent(CompFunction.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/function/Function.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "if (true) return " + arg(0, buildInfo) + ";"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatHandleException.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatHandleException.java index 9fc8bf6e..bba49c13 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatHandleException.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatHandleException.java @@ -1,9 +1,12 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ContainerBlock; import com.gmail.visualbukkit.project.BuildInfo; +import java.net.URI; + @BlockDefinition(id = "stat-handle-exception", name = "Handle Exception", description = "Checks if an exception occurred during the previous 'Attempt Execution'") public class StatHandleException extends ContainerBlock { @@ -13,6 +16,11 @@ public void updateState() { checkForPrevious(StatAttemptExecution.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "catch (Exception $executionException" + getNestedContainers(StatHandleException.class) + ") {" + generateChildrenJava(buildInfo) + "}"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatIfStatement.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatIfStatement.java index 994dc422..1308c3a3 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatIfStatement.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatIfStatement.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ContainerBlock; import com.gmail.visualbukkit.blocks.parameters.CheckBoxParameter; @@ -7,6 +8,8 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "stat-if-statement", name = "If Statement", description = "Checks if a condition is true") public class StatIfStatement extends ContainerBlock { @@ -17,6 +20,11 @@ public StatIfStatement() { addParameter("Condition", new ExpressionParameter(ClassInfo.of(boolean.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "if (" + (modeParameter.isSelected() ? "!" : "") + arg(1, buildInfo) + ") {" + getChildStatementHolder().generateJava(buildInfo) + "}"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatJavaCode.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatJavaCode.java index 923b9d0f..0561859d 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatJavaCode.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatJavaCode.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.blocks.parameters.MultilineInputParameter; import com.gmail.visualbukkit.project.BuildInfo; +import java.net.URI; + @BlockDefinition(id = "stat-java-code", name = "Java Code", description = "Arbitrary Java code") public class StatJavaCode extends StatementBlock { @@ -12,6 +15,11 @@ public StatJavaCode() { addParameter("Java", new MultilineInputParameter()); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return arg(0, buildInfo); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatListLoop.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatListLoop.java index a9663daa..38dee4b3 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatListLoop.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatListLoop.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ContainerBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "stat-list-loop", name = "List Loop", description = "Loops through each value in a list") public class StatListLoop extends ContainerBlock { @@ -13,6 +16,11 @@ public StatListLoop() { addParameter("List", new ExpressionParameter(ClassInfo.of(Iterable.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/8/docs/technotes/guides/language/foreach.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "for (Object $FINAL_loopValue" + getNestedContainers(StatListLoop.class) + " : " + arg(0, buildInfo) + ") {" + generateChildrenJava(buildInfo) + "}"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatMethod.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatMethod.java index c2726e6f..6d0a1f3c 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatMethod.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatMethod.java @@ -7,6 +7,7 @@ import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.blocks.parameters.MethodParameter; import com.gmail.visualbukkit.project.BuildInfo; +import com.gmail.visualbukkit.project.JavadocsManager; import com.gmail.visualbukkit.reflection.ClassInfo; import com.gmail.visualbukkit.reflection.MethodInfo; @@ -23,6 +24,11 @@ public StatMethod() { addParameter("Method", methodParameter = new MethodParameter(this, classParameter)); } + @Override + public void openJavadocs() { + JavadocsManager.getStatJavadocs(classParameter, methodParameter); + } + public StatMethod(ClassInfo clazz, MethodInfo method, ExpressionBlock... parameterExpressions) { this(); classParameter.setValue(clazz); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatNumberLoop.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatNumberLoop.java index d8476081..a57ce31d 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatNumberLoop.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatNumberLoop.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ContainerBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "stat-number-loop", name = "Number Loop", description = "Loops a certain number of times") public class StatNumberLoop extends ContainerBlock { @@ -13,6 +16,11 @@ public StatNumberLoop() { addParameter("Number", new ExpressionParameter(ClassInfo.of(int.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html")); + } + @Override public String generateJava(BuildInfo buildInfo) { String loopVar = "loopNumber" + getNestedContainers(StatNumberLoop.class, StatAdvancedNumberLoop.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatScheduleTask.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatScheduleTask.java index 163360fc..60dfcd54 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatScheduleTask.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatScheduleTask.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ContainerBlock; import com.gmail.visualbukkit.blocks.parameters.CheckBoxParameter; @@ -8,6 +9,7 @@ import com.gmail.visualbukkit.reflection.ClassInfo; import org.apache.commons.lang3.RandomStringUtils; +import java.net.URI; import java.util.HashSet; import java.util.Set; import java.util.regex.Matcher; @@ -24,6 +26,11 @@ public StatScheduleTask() { addParameter("Delay", new ExpressionParameter(ClassInfo.of(long.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/scheduler/BukkitScheduler.html#runTask(org.bukkit.plugin.java.JavaPlugin,java.lang.Runnable)")); + } + @Override public String generateJava(BuildInfo buildInfo) { String childrenJava = generateChildrenJava(buildInfo); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetGlobalVariable.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetGlobalVariable.java index 92f49d60..9d9dab27 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetGlobalVariable.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetGlobalVariable.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "stat-set-global-variable", name = "Set Global Variable", description = "Sets the value of a global variable") public class StatSetGlobalVariable extends StatementBlock { @@ -14,6 +17,11 @@ public StatSetGlobalVariable() { addParameter("Value", new ExpressionParameter(ClassInfo.of(Object.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://github.com/OfficialDonut/VisualBukkit/wiki/Variables")); + } + @Override public String generateJava(BuildInfo buildInfo) { ExprGlobalVariable.prepareClass(buildInfo.getMainClass()); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetLocalVariable.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetLocalVariable.java index 4e14fa98..189b99e8 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetLocalVariable.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetLocalVariable.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.blocks.StatementBlock; @@ -10,6 +11,8 @@ import com.gmail.visualbukkit.reflection.ClassInfo; import javafx.scene.layout.Region; +import java.net.URI; + @BlockDefinition(id = "stat-set-local-variable", name = "Set Local Variable", description = "Sets the value of a local variable") public class StatSetLocalVariable extends StatementBlock { @@ -21,6 +24,11 @@ public StatSetLocalVariable() { addParameter("Value", valueParameter); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://github.com/OfficialDonut/VisualBukkit/wiki/Variables")); + } + public StatSetLocalVariable(String var, ExpressionBlock value) { this(); varParameter.inputParameter.setText(var); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetPersistentVariable.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetPersistentVariable.java index 8d308b8e..0ce0700a 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetPersistentVariable.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetPersistentVariable.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "stat-set-persistent-variable", name = "Set Persistent Variable", description = "Sets the value of a persistent variable") public class StatSetPersistentVariable extends StatementBlock { @@ -14,6 +17,11 @@ public StatSetPersistentVariable() { addParameter("Value", new ExpressionParameter(ClassInfo.of(Object.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://github.com/OfficialDonut/VisualBukkit/wiki/Variables")); + } + @Override public String generateJava(BuildInfo buildInfo) { ExprPersistentVariable.prepareClass(buildInfo.getMainClass()); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetPlayerHeadSkin.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetPlayerHeadSkin.java index ea0541c7..dbb26833 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetPlayerHeadSkin.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetPlayerHeadSkin.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "stat-set-player-head-skin", name = "Set Player Head Skin", description = "Sets the skin of a player head") public class StatSetPlayerHeadSkin extends StatementBlock { @@ -14,6 +17,11 @@ public StatSetPlayerHeadSkin() { addParameter("URL", new ExpressionParameter(ClassInfo.of(String.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/inventory/meta/SkullMeta.html#setOwner(java.lang.String)")); + } + @Override public String generateJava(BuildInfo buildInfo) { if (buildInfo.getMetadata().putIfAbsent("setPlayerHeadSkin()", true) == null) { diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetPlayerSkin.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetPlayerSkin.java index 6b13d489..bdeb940b 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetPlayerSkin.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetPlayerSkin.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "stat-set-player-skin", name = "Set Player Skin", description = "Sets the skin of a player") public class StatSetPlayerSkin extends StatementBlock { @@ -15,6 +18,11 @@ public StatSetPlayerSkin() { addParameter("Skin Signature", new ExpressionParameter(ClassInfo.of(String.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://github.com/OfficialDonut/VisualBukkit/blob/master/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatSetPlayerSkin.java")); + } + @Override public String generateJava(BuildInfo buildInfo) { if (buildInfo.getMetadata().putIfAbsent("setPlayerSkin()", true) == null) { diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatTabCompleteReturn.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatTabCompleteReturn.java index e57ae818..1d6afbd1 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatTabCompleteReturn.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatTabCompleteReturn.java @@ -1,11 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; import java.util.List; @BlockDefinition(id = "stat-tab-complete-return", name = "Tab Complete Return", description = "Returns a list of completions for a command argument (must be used in a 'Tab Complete Handler' plugin component)") @@ -21,6 +23,11 @@ public void updateState() { checkForPluginComponent(CompTabCompleteHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/command/TabCompleter.html#onTabComplete(org.bukkit.command.CommandSender,org.bukkit.command.Command,java.lang.String,java.lang.String[])")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "if (true) return " + arg(0, buildInfo) + ";"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatWhileLoop.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatWhileLoop.java index c685223b..903f6402 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatWhileLoop.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/StatWhileLoop.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.core; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ContainerBlock; import com.gmail.visualbukkit.blocks.parameters.CheckBoxParameter; @@ -7,6 +8,8 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "stat-while-loop", name = "While Loop", description = "Loops while a condition is true") public class StatWhileLoop extends ContainerBlock { @@ -17,6 +20,11 @@ public StatWhileLoop() { addParameter("Condition", new ExpressionParameter(ClassInfo.of(boolean.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/entity/HumanEntity.html#openInventory(org.bukkit.inventory.Inventory)")); + } + @Override public String generateJava(BuildInfo buildInfo) { return (modeParameter.isSelected() ? "while (!" : "while (") + arg(1, buildInfo) + ") {" + generateChildrenJava(buildInfo) + "}"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickType.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickType.java index 262bfd80..157cbf97 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickType.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickType.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.gui; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-gui-click-type", name = "GUI Click Type", description = "Must be used in a 'GUI Click Handler' plugin component") public class ExprGUIClickType extends ExpressionBlock { @@ -14,6 +17,11 @@ public void updateState() { checkForPluginComponent(CompGUIClickHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/event/inventory/InventoryClickEvent.html#getAction()")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of("org.bukkit.event.inventory.ClickType"); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickedInventory.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickedInventory.java index 148fa07e..4002ee7e 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickedInventory.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickedInventory.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.gui; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-gui-clicked-inventory", name = "GUI Clicked Inventory", description = "Must be used in a 'GUI Click Handler' plugin component") public class ExprGUIClickedInventory extends ExpressionBlock { @@ -14,6 +17,11 @@ public void updateState() { checkForPluginComponent(CompGUIClickHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/event/inventory/InventoryClickEvent.html#getClickedInventory()")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of("org.bukkit.inventory.Inventory"); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickedItemStack.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickedItemStack.java index 75886032..fe345f0c 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickedItemStack.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickedItemStack.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.gui; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-gui-clicked-itemstack", name = "GUI Clicked ItemStack", description = "Must be used in a 'GUI Click Handler' plugin component") public class ExprGUIClickedItemStack extends ExpressionBlock { @@ -14,6 +17,11 @@ public void updateState() { checkForPluginComponent(CompGUIClickHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/event/inventory/InventoryClickEvent.html#getCurrentItem()")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of("org.bukkit.inventory.ItemStack"); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickedSlot.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickedSlot.java index 8c1d5cfc..0b950090 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickedSlot.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClickedSlot.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.gui; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-gui-clicked-slot", name = "GUI Clicked Slot", description = "Must be used in a 'GUI Click Handler' plugin component") public class ExprGUIClickedSlot extends ExpressionBlock { @@ -14,6 +17,11 @@ public void updateState() { checkForPluginComponent(CompGUIClickHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/event/inventory/InventoryClickEvent.html#getSlot()")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of(int.class); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClicker.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClicker.java index 726a1e2f..b4d08b4b 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClicker.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIClicker.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.gui; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-gui-clicker", name = "GUI Clicker", description = "Must be used in a 'GUI Click Handler' plugin component") public class ExprGUIClicker extends ExpressionBlock { @@ -14,6 +17,11 @@ public void updateState() { checkForPluginComponent(CompGUIClickHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/event/inventory/InventoryClickEvent.html#getWhoClicked()")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of("org.bukkit.entity.Player"); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIInventory.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIInventory.java index f6b550a4..fe87903d 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIInventory.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIInventory.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.gui; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-gui-inventory", name = "GUI Inventory", description = "Must be used in a 'GUI' plugin component") public class ExprGUIInventory extends ExpressionBlock { @@ -14,6 +17,11 @@ public void updateState() { checkForPluginComponent(CompGUI.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/event/inventory/InventoryClickEvent.html#getView()")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of("org.bukkit.inventory.Inventory"); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIInventoryClickEvent.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIInventoryClickEvent.java index 146ea37c..42e10156 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIInventoryClickEvent.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIInventoryClickEvent.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.gui; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-gui-inventory-click-event", name = "GUI Inventory Click Event", description = "Must be used in a 'GUI Click Handler' plugin component") public class ExprGUIInventoryClickEvent extends ExpressionBlock { @@ -14,6 +17,11 @@ public void updateState() { checkForPluginComponent(CompGUIClickHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/event/inventory/InventoryClickEvent.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of("org.bukkit.event.inventory.InventoryClickEvent"); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIPlayer.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIPlayer.java index d263713a..e175123f 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIPlayer.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/ExprGUIPlayer.java @@ -1,10 +1,13 @@ package com.gmail.visualbukkit.blocks.definitions.gui; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "expr-gui-player", name = "GUI Player", description = "Must be used in a 'GUI' plugin component") public class ExprGUIPlayer extends ExpressionBlock { @@ -14,6 +17,11 @@ public void updateState() { checkForPluginComponent(CompGUI.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/entity/Player.html")); + } + @Override public ClassInfo getReturnType() { return ClassInfo.of("org.bukkit.entity.Player"); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/StatOpenGUI.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/StatOpenGUI.java index 79f6810b..b3581c77 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/StatOpenGUI.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/StatOpenGUI.java @@ -1,5 +1,6 @@ package com.gmail.visualbukkit.blocks.definitions.gui; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; @@ -7,6 +8,8 @@ import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "stat-open-gui", name = "Open GUI", description = "Opens a GUI to a player") public class StatOpenGUI extends StatementBlock { @@ -15,6 +18,11 @@ public StatOpenGUI() { addParameter("Player", new ExpressionParameter(ClassInfo.of("org.bukkit.entity.Player"))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/entity/HumanEntity.html#openInventory(org.bukkit.inventory.Inventory)")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "GUIManager.getInstance().open(" + arg(0, buildInfo) + "," + arg(1, buildInfo) + ");"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/StatSetGUISlot.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/StatSetGUISlot.java index 22a25805..fc226638 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/StatSetGUISlot.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/StatSetGUISlot.java @@ -1,11 +1,14 @@ package com.gmail.visualbukkit.blocks.definitions.gui; +import com.gmail.visualbukkit.VisualBukkitApp; import com.gmail.visualbukkit.blocks.BlockDefinition; import com.gmail.visualbukkit.blocks.StatementBlock; import com.gmail.visualbukkit.blocks.parameters.ExpressionParameter; import com.gmail.visualbukkit.project.BuildInfo; import com.gmail.visualbukkit.reflection.ClassInfo; +import java.net.URI; + @BlockDefinition(id = "stat-set-gui-slot", name = "Set GUI Slot", description = "Must be used in a 'GUI' plugin component") public class StatSetGUISlot extends StatementBlock { @@ -20,6 +23,11 @@ public void updateState() { checkForPluginComponent(CompGUI.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(URI.create("https://jd.papermc.io/paper/1.21.4/org/bukkit/inventory/Inventory.html#setItem(int,org.bukkit.inventory.ItemStack)")); + } + @Override public String generateJava(BuildInfo buildInfo) { return "guiInventory.setItem(" + arg(0, buildInfo) + "," + arg(1, buildInfo) + ");"; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/project/JavadocsManager.java b/VB-Application/src/main/java/com/gmail/visualbukkit/project/JavadocsManager.java new file mode 100644 index 00000000..91805de8 --- /dev/null +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/project/JavadocsManager.java @@ -0,0 +1,97 @@ +package com.gmail.visualbukkit.project; + +import com.gmail.visualbukkit.VisualBukkitApp; +import com.gmail.visualbukkit.blocks.definitions.core.*; +import com.gmail.visualbukkit.blocks.parameters.ClassParameter; +import com.gmail.visualbukkit.blocks.parameters.FieldParameter; +import com.gmail.visualbukkit.blocks.parameters.MethodParameter; +import org.json.JSONObject; + +import java.net.URI; +import java.util.List; +import java.util.Map; + +public class JavadocsManager { + + public static void getStatJavadocs(ClassParameter classParameter, MethodParameter methodParameter) { + getJavadocs(classParameter.getValue().getName(), methodParameter.getValue().getSignature()); + } + + public static void getExprJavadocs(ClassParameter classParameter, MethodParameter methodParameter) { + getJavadocs(classParameter.getValue().getName(), methodParameter.getValue().getSignature()); + } + + public static void getExprJavadocs(ClassParameter classParameter, FieldParameter fieldParameter) { + getJavadocs(classParameter.getValue().getName(), fieldParameter.getValue().getName()); + } + + public static void getCompJavaDocs(PluginComponent pluginComponent) { + switch (pluginComponent.getBlockType().orElse("Unknown")) { + case "comp-command": + getJavadocs("org.bukkit.command.Command", ""); + break; + case "comp-event-listener": + CompEventListener compEventListener = (CompEventListener) pluginComponent.getBlock().orElseGet(CompEventListener::new); + getJavadocs((compEventListener.getEvent().getPackage() + "/" + compEventListener.getEvent().toString().split("\\(")[0]).strip(), ""); + break; + case "comp-plugin-enable": + getJavadocs("org.bukkit.plugin.java.JavaPlugin", "onEnable()"); + break; + case "comp-plugin-disable": + getJavadocs("org.bukkit.plugin.java.JavaPlugin", "onDisable()"); + break; + case "comp-tab-complete-handler": + getJavadocs("org.bukkit.command.TabCompleter", "onTabComplete()"); + break; + case "comp-gui": + getJavadocs("org.bukkit.inventory.Inventory", ""); + break; + case "comp-gui-click-handler": + getJavadocs("org.bukkit.event.inventory.InventoryClickEvent", ""); + break; + case "comp-function": + getJavadocs("java.util.function.Function", ""); + break; + case "comp-procedure": + getJavadocs("java.util.function.Supplier", ""); + break; + case "comp-consumer": + getJavadocs("java.util.function.Consumer", ""); + break; + + default: + VisualBukkitApp.getLogger().warning("No Javadocs available for this component: " + pluginComponent.getBlockType().orElse("Unknown")); + } + } + + private static void getJavadocs(String className, String methodName) { + JSONObject remapData = Project.getRemapData(); + if (remapData != null) { + String key = className + "#" + methodName; + if (remapData.has(key)) { + String remapped = remapData.getString(key); + String[] parts = remapped.split("#"); + if (parts.length == 2) { + className = parts[0]; + methodName = parts[1]; + } else { + methodName = remapped; + } + } + } + + for (Map.Entry> entry : Project.getJavadocsMap().entrySet()) { + String baseUrl = entry.getKey(); + List packages = entry.getValue(); + + for (String packageName : packages) { + if (className.startsWith(packageName)) { + String url = baseUrl + className.replaceAll("\\.", "/") + ".html#" + methodName; + VisualBukkitApp.openURI(URI.create(url)); + return; + } + } + } + } + +} diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/project/Project.java b/VB-Application/src/main/java/com/gmail/visualbukkit/project/Project.java index 5c89f3dd..1f59ef7e 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/project/Project.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/project/Project.java @@ -67,10 +67,12 @@ public class Project { private final Path directory; private final Path dataFile; + private final Path remapFile; private final Path pluginComponentDirectory; private final Path resourcesDirectory; private final Path buildDirectory; private JSONObject data = new JSONObject(); + private static JSONObject remapData = new JSONObject(); private boolean reloadRequired; private final BorderPane projectPane = new BorderPane(); @@ -80,7 +82,14 @@ public class Project { private final StatementSelector statementSelector = new StatementSelector(); private final PluginSettings pluginSettings = new PluginSettings(); private final ListView mavenListView = new ListView<>(); + private final ListView javadocsUrlListView; + private final ListView javadocsValuesListView; + + private final String DEFAULT_JAVADOCS_URL = "https://jd.papermc.io/paper/1.21.4/"; + private final List DEFAULT_JAVADOCS_PACKAGES = new ArrayList<>((List.of("org.bukkit", "org.spigotmc", "co.aikar", "com.destroystokyo.paper", "io.papermc"))); + private final String DEFAULT_JAVA_JAVADOCS_URL = "https://docs.oracle.com/en/java/javase/17/docs/api/java.base/"; private final ListSelectionView moduleSelector = new ListSelectionView<>(); + private static final HashMap> javadocsMap = new HashMap<>(); private final ObservableList pluginComponents = FXCollections.observableArrayList(); private final Map openPluginComponents = new HashMap<>(); private final TextField jarOutputField = new TextField(); @@ -90,6 +99,7 @@ public class Project { public Project(Path directory) { this.directory = directory; dataFile = directory.resolve("data.json"); + remapFile = directory.resolve("remap.json"); pluginComponentDirectory = directory.resolve("plugin_components"); resourcesDirectory = directory.resolve("resource_files"); buildDirectory = directory.resolve("build"); @@ -144,15 +154,218 @@ protected void updateItem(MavenModule item, boolean empty) { addMavenRepository(PAPER_REPOSITORY); addMavenDependency(PAPER_DEPENDENCY); + javadocsUrlListView = new ListView<>(); + javadocsMap.clear(); + javadocsUrlListView.getItems().clear(); + javadocsUrlListView.getItems().add(DEFAULT_JAVADOCS_URL); + javadocsUrlListView.getSelectionModel().select(DEFAULT_JAVADOCS_URL); + javadocsUrlListView.getItems().add(DEFAULT_JAVA_JAVADOCS_URL); + javadocsMap.put(DEFAULT_JAVADOCS_URL, new ArrayList<>(List.of("org.bukkit", "org.spigotmc", "co.aikar", "com.destroystokyo.paper", "io.papermc"))); + javadocsMap.put(DEFAULT_JAVA_JAVADOCS_URL, new ArrayList<>(List.of("java", "jdk"))); + for (Map.Entry> entry : javadocsMap.entrySet()) { + javadocsUrlListView.getItems().add(entry.getKey()); + } + + ActionButton addUrlButton = new ActionButton(VisualBukkitApp.localizedText("button.add_url"), e -> { + TextInputDialog dialog = new TextInputDialog(); + dialog.setTitle(VisualBukkitApp.localizedText("window.add_javadocs_url")); + dialog.setHeaderText(null); + dialog.setGraphic(null); + dialog.setContentText(VisualBukkitApp.localizedText("dialog.add_javadocs_url")); + dialog.showAndWait().ifPresent(url -> { + if (url.endsWith("/")) { + if (!javadocsMap.containsKey(url)) { + javadocsMap.put(url, new ArrayList<>()); + javadocsUrlListView.getItems().add(url); + } + } else { + VisualBukkitApp.displayError(VisualBukkitApp.localizedText("notification.invalid_javadocs_url")); + } + }); + }); + + ActionButton deleteUrlButton = new ActionButton(VisualBukkitApp.localizedText("button.delete_url"), e -> { + String selectedUrl = javadocsUrlListView.getSelectionModel().getSelectedItem(); + if (selectedUrl != null) { + if (selectedUrl.equals(DEFAULT_JAVADOCS_URL)) { + return; + } + javadocsMap.remove(selectedUrl); + javadocsUrlListView.getItems().remove(selectedUrl); + } + }); + + ActionButton editUrlButton = new ActionButton(VisualBukkitApp.localizedText("button.edit_url"), e -> { + String selectedUrl = javadocsUrlListView.getSelectionModel().getSelectedItem(); + if (selectedUrl != null) { + if (selectedUrl.equals(DEFAULT_JAVADOCS_URL) || selectedUrl.equals(DEFAULT_JAVA_JAVADOCS_URL)) { + return; + } + TextInputDialog dialog = new TextInputDialog(selectedUrl); + dialog.setTitle(VisualBukkitApp.localizedText("window.edit_javadocs_url")); + dialog.setHeaderText(null); + dialog.setGraphic(null); + dialog.setContentText(VisualBukkitApp.localizedText("dialog.edit_javadocs_url")); + dialog.showAndWait().ifPresent(url -> { + if (url.endsWith("/")) { + javadocsMap.put(url, javadocsMap.get(selectedUrl)); + javadocsMap.remove(selectedUrl); + javadocsUrlListView.getItems().set(javadocsUrlListView.getItems().indexOf(selectedUrl), url); + } else { + VisualBukkitApp.displayError(VisualBukkitApp.localizedText("notification.invalid_javadocs_url")); + } + }); + } + }); + + ButtonVBox javadocsButtons = new ButtonVBox(addUrlButton, deleteUrlButton, editUrlButton); + javadocsButtons.bindSizes(); + + disableDefaultButtons(deleteUrlButton, editUrlButton); + + javadocsValuesListView = new ListView<>(); + javadocsValuesListView.setPlaceholder(new Label(VisualBukkitApp.localizedText("label.no_values"))); + + ActionButton addValueButton = new ActionButton(VisualBukkitApp.localizedText("button.add_value"), e -> { + String key = javadocsUrlListView.getSelectionModel().getSelectedItem(); + if (key != null) { + TextInputDialog dialog = new TextInputDialog(); + dialog.setTitle(VisualBukkitApp.localizedText("window.add_value")); + dialog.setContentText(VisualBukkitApp.localizedText("dialog.add_value")); + dialog.setHeaderText(null); + dialog.setGraphic(null); + dialog.showAndWait().ifPresent(value -> { + if (value.isBlank() || javadocsValuesListView.getItems().contains(value)) { + return; + } + List list = javadocsMap.getOrDefault(key, new ArrayList<>()); + list.add(value); + javadocsMap.put(key, list); + javadocsValuesListView.getItems().setAll(list); + }); + } + }); + ActionButton deleteValueButton = new ActionButton(VisualBukkitApp.localizedText("button.delete_value"), e -> { + String key = javadocsUrlListView.getSelectionModel().getSelectedItem(); + String selectedValue = javadocsValuesListView.getSelectionModel().getSelectedItem(); + if (key != null && selectedValue != null) { + List list = javadocsMap.get(key); + if (list != null) { + list.remove(selectedValue); + javadocsValuesListView.getItems().setAll(list); + } + } + }); + ActionButton editValueButton = new ActionButton(VisualBukkitApp.localizedText("button.edit_value"), e -> { + String key = javadocsUrlListView.getSelectionModel().getSelectedItem(); + String selectedValue = javadocsValuesListView.getSelectionModel().getSelectedItem(); + if (key != null && selectedValue != null) { + TextInputDialog dialog = new TextInputDialog(selectedValue); + dialog.setTitle(VisualBukkitApp.localizedText("window.edit_value")); + dialog.setContentText(VisualBukkitApp.localizedText("dialog.edit_value")); + dialog.setHeaderText(null); + dialog.setGraphic(null); + dialog.showAndWait().ifPresent(newVal -> { + List list = javadocsMap.get(key); + if (list != null) { + int index = list.indexOf(selectedValue); + if (index != -1) { + list.set(index, newVal); + javadocsValuesListView.getItems().setAll(list); + } + } + }); + } + }); + + ButtonVBox javadocsValuesButtons = new ButtonVBox(addValueButton, deleteValueButton, editValueButton); + javadocsValuesButtons.bindSizes(); + disableDefaultButtons(addValueButton, deleteValueButton, editValueButton); + + javadocsUrlListView.getSelectionModel().selectedItemProperty().addListener((obs, oldVal, newVal) -> { + if (newVal != null && javadocsMap.containsKey(newVal)) { + javadocsValuesListView.getItems().setAll(javadocsMap.get(newVal)); + } else { + javadocsValuesListView.getItems().clear(); + } + }); + + HBox javadocsPane = new HBox(javadocsButtons, javadocsUrlListView, javadocsValuesListView, javadocsValuesButtons); + + javadocsUrlListView.setCellFactory(new Callback<>() { + @Override + public ListCell call(ListView param) { + return new ListCell<>() { + @Override + protected void updateItem(String item, boolean empty) { + super.updateItem(item, empty); + if (item != null && !empty) { + setText(item); + if (item.equals(DEFAULT_JAVADOCS_URL) || item.equals(DEFAULT_JAVA_JAVADOCS_URL)) { + setGraphic(new FontIcon(FontAwesomeSolid.LOCK)); + } else { + setGraphic(null); + } + } else { + setText(null); + setGraphic(null); + } + } + }; + } + }); + + javadocsPane.getStyleClass().add("javadocs-settings-pane"); + javadocsPane.setSpacing(10); + javadocsValuesListView.setPlaceholder(new Label(VisualBukkitApp.localizedText("label.no_javadocs"))); + javadocsValuesListView.setCellFactory(new Callback<>() { + @Override + public ListCell call(ListView param) { + return new ListCell<>() { + @Override + protected void updateItem(String item, boolean empty) { + super.updateItem(item, empty); + if (item != null && !empty) { + setText(item); + if (DEFAULT_JAVADOCS_PACKAGES.contains(item) || item.equals("java") || item.equals("jdk")) { + setGraphic(new FontIcon(FontAwesomeSolid.LOCK)); + } else { + setGraphic(null); + } + } else { + setText(null); + setGraphic(null); + } + } + }; + } + }); + Tab pluginYmlTab = new Tab(VisualBukkitApp.localizedText("label.plugin_attributes"), pluginSettings.getGrid()); Tab mavenTab = new Tab(VisualBukkitApp.localizedText("label.maven"), mavenPane); Tab modulesTab = new Tab(VisualBukkitApp.localizedText("label.modules"), moduleSelector); - TabPane settingsTabPane = new TabPane(pluginYmlTab, modulesTab, mavenTab, new Tab()); + Tab javadocsTab = new Tab(VisualBukkitApp.localizedText("label.javadocs"), javadocsPane); + TabPane settingsTabPane = new TabPane(pluginYmlTab, modulesTab, mavenTab, javadocsTab, new Tab()); settingsTabPane.getStyleClass().add("plugin-settings-tab-pane"); settingsTabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.UNAVAILABLE); PopupWindow pluginSettingsWindow = new PopupWindow(VisualBukkitApp.localizedText("window.plugin_settings"), settingsTabPane); pluginSettingsWindow.setOnShowing(e -> { + pluginSettingsWindow.setY(VisualBukkitApp.getPrimaryStage().getY() + VisualBukkitApp.getPrimaryStage().getHeight() / 2 - 300); + if (settingsTabPane.getSelectionModel().getSelectedItem() != javadocsTab) { + alignNormalTab(pluginSettingsWindow); + } + else { + alignJavadocsTab(pluginSettingsWindow, javadocsPane); + } + settingsTabPane.getSelectionModel().selectedItemProperty().addListener((obs, oldTab, newTab) -> { + if (newTab == javadocsTab) { + alignJavadocsTab(pluginSettingsWindow, javadocsPane); + } else { + alignNormalTab(pluginSettingsWindow); + } + }); + CheckBoxTreeItem rootItem = new CheckBoxTreeItem<>(VisualBukkitApp.localizedText("label.plugin_components")); rootItem.setSelected(true); rootItem.setExpanded(true); @@ -184,7 +397,7 @@ protected void updateItem(MavenModule item, boolean empty) { gridPane.addRow(3, new Label(VisualBukkitApp.localizedText("label.debug_mode")), new HBox(debugModeCheckBox, new IconButton(FontAwesomeRegular.QUESTION_CIRCLE, e2 -> VisualBukkitApp.openURI(URI.create("https://github.com/OfficialDonut/VisualBukkit/wiki/Development-Assistance-Plugin#debug-mode"))))); gridPane.addRow(4, label, treeView); gridPane.getStyleClass().add("build-settings-pane"); - settingsTabPane.getTabs().set(3, new Tab(VisualBukkitApp.localizedText("label.build"), gridPane)); + settingsTabPane.getTabs().set(4, new Tab(VisualBukkitApp.localizedText("label.build"), gridPane)); }); pluginSettingsWindow.setOnHidden(e -> { if (reloadRequired) { @@ -296,6 +509,27 @@ protected void updateItem(PluginComponent item, boolean empty) { }); } + private void alignNormalTab(PopupWindow pluginSettingsWindow) { + pluginSettingsWindow.setX(VisualBukkitApp.getPrimaryStage().getX() + VisualBukkitApp.getPrimaryStage().getWidth() / 2 - 400); + pluginSettingsWindow.setWidth(800); + } + + private void alignJavadocsTab(PopupWindow window, HBox box) { + window.setX(VisualBukkitApp.getPrimaryStage().getX() + VisualBukkitApp.getPrimaryStage().getWidth() / 2 - 700); + window.setWidth(1400); + box.setPrefSize(1400, 600); + } + + private void disableDefaultButtons(ActionButton ... buttons) { + for (ActionButton button : buttons) { + button.disableProperty().bind( + javadocsUrlListView.getSelectionModel().selectedItemProperty().isNull() + .or(javadocsUrlListView.getSelectionModel().selectedItemProperty().isEqualTo(DEFAULT_JAVADOCS_URL)) + .or(javadocsUrlListView.getSelectionModel().selectedItemProperty().isEqualTo(DEFAULT_JAVA_JAVADOCS_URL)) + ); + } + } + protected void open() throws IOException { if (Files.exists(dataFile)) { try { @@ -305,6 +539,8 @@ protected void open() throws IOException { } } + loadRemapData(); + for (VisualBukkitExtension extension : VisualBukkitApp.getExtensions()) { extension.open(this); } @@ -369,6 +605,30 @@ protected void open() throws IOException { } } + if (data.has("javadocs")) { + JSONObject javadocsJson = data.getJSONObject("javadocs"); + javadocsMap.clear(); + javadocsUrlListView.getItems().clear(); + for (String url : javadocsJson.keySet()) { + JSONArray arr = javadocsJson.getJSONArray(url); + List list = new ArrayList<>(); + for (int i = 0; i < arr.length(); i++) { + list.add(arr.getString(i)); + } + javadocsMap.put(url, list); + javadocsUrlListView.getItems().add(url); + } + } + + if (!javadocsMap.containsKey(DEFAULT_JAVADOCS_URL) || javadocsMap.get(DEFAULT_JAVADOCS_URL).isEmpty()) { + javadocsMap.put(DEFAULT_JAVADOCS_URL, DEFAULT_JAVADOCS_PACKAGES); + javadocsUrlListView.getItems().add(DEFAULT_JAVADOCS_URL); + javadocsValuesListView.getItems().setAll(DEFAULT_JAVADOCS_PACKAGES); + } + if (javadocsUrlListView.getSelectionModel().isEmpty()) { + javadocsUrlListView.getSelectionModel().select(DEFAULT_JAVADOCS_URL); + } + tabPane.getSelectionModel().select(data.optInt("selected-tab")); statementSelector.reloadStatements(); VisualBukkitApp.getRootPane().setCenter(projectPane); @@ -382,6 +642,7 @@ public void save() throws IOException { data.remove("enabled-modules"); data.remove("maven-repositories"); data.remove("maven-dependencies"); + data.remove("javadocs"); data.put("selected-tab", tabPane.getSelectionModel().getSelectedIndex()); data.put("plugin-settings", pluginSettings.serialize()); data.put("debug-mode", debugModeCheckBox.isSelected()); @@ -404,8 +665,47 @@ public void save() throws IOException { for (PluginComponent pluginComponent : pluginComponents) { pluginComponent.save(); } + JSONObject javadocsJson = new JSONObject(); + for (Map.Entry> entry : javadocsMap.entrySet()) { + javadocsJson.put(entry.getKey(), new JSONArray(entry.getValue())); + } + data.put("javadocs", javadocsJson); Files.createDirectories(directory); Files.writeString(dataFile, data.toString(2)); + loadRemapData(); + } + + private void loadRemapData() { + if (Files.exists(remapFile)) { + try { + remapData = new JSONObject(Files.readString(remapFile)); + for (String key : remapData.keySet()) { + String value = remapData.getString(key); + if (value.equals("null")) { + remapData.remove(key); + } else { + remapData.put(key, StringEscapeUtils.unescapeJson(value)); + } + } + } catch (IOException | JSONException e) { + VisualBukkitApp.getLogger().log(Level.SEVERE, "Failed to load remap file", e); + } + } + else { + try { + String INPUT = """ + { + "org.bukkit.entity.Player#sendMessage(java.lang.String)":"org.bukkit.command.CommandSender#sendMessage(java.lang.String)", + "org.bukkit.entity.Player#attack(org.bukkit.entity.Entity)":"org.bukkit.entity.LivingEntity#attack(org.bukkit.entity.Entity)", + } + """; + remapData = new JSONObject(INPUT); + Files.createFile(remapFile); + Files.writeString(remapFile, remapData.toString(2)); + } catch (IOException e) { + VisualBukkitApp.getLogger().log(Level.SEVERE, "Failed to create remap file", e); + } + } } public void openPluginComponent(PluginComponent pluginComponent, boolean selectTab) { @@ -819,6 +1119,10 @@ public PluginComponent getPluginComponent(PluginComponentBlock block) { return null; } + public static JSONObject getRemapData() { + return remapData; + } + public PluginComponent getPluginComponent(String name) { for (PluginComponent pluginComponent : pluginComponents) { if (pluginComponent.getName().equals(name)) { @@ -840,6 +1144,10 @@ public Path getDirectory() { return directory; } + public static HashMap> getJavadocsMap() { + return javadocsMap; + } + public Path getBuildDirectory() { return buildDirectory; } diff --git a/VB-Application/src/main/resources/css/default.css b/VB-Application/src/main/resources/css/default.css index 7d7c3749..98024acb 100644 --- a/VB-Application/src/main/resources/css/default.css +++ b/VB-Application/src/main/resources/css/default.css @@ -175,6 +175,15 @@ HBox { -fx-opacity: 0.5; } +.javadocs-settings-pane { + -fx-padding: 0.5em; + -fx-spacing: 0.5em; +} + +.javadocs-settings-pane > .list-view { + -fx-pref-width: 35em; +} + .list-selection-view { -fx-pref-height: 30em; -fx-pref-width: 40em; diff --git a/VB-Application/src/main/resources/lang/gui.properties b/VB-Application/src/main/resources/lang/gui.properties index 020f71e2..92c41dfe 100644 --- a/VB-Application/src/main/resources/lang/gui.properties +++ b/VB-Application/src/main/resources/lang/gui.properties @@ -2,9 +2,15 @@ button.add=Add button.add_component=Add Component button.add_dependency=Add Dependency button.add_repository=Add Repository +button.add_url=Add URL +button.add_value=Add Package button.build_plugin=Build Plugin button.delete=Delete +button.delete_url=Delete URL +button.delete_value=Delete Package button.edit=Edit +button.edit_url=Edit URL +button.edit_value=Edit Package button.export=Export button.ignore=Ignore button.import=Import @@ -23,6 +29,7 @@ context_menu.cut_stack=Cut Stack context_menu.delete=Delete context_menu.delete_stack=Delete Stack context_menu.expand_all=Expand All +context_menu.javadocs=See Javadocs context_menu.paste=Paste context_menu.paste_after=Paste After context_menu.paste_before=Paste Before @@ -31,6 +38,8 @@ context_menu.pin=Pin context_menu.unpin=Unpin dialog.add_component_name=Name: dialog.add_component_type=Type: +dialog.add_javadocs_url=URL: +dialog.add_value=Package: dialog.confirm_delete=Are you sure you want to delete '%s'?\n(warning: this cannot be undone) dialog.confirm_deploy_plugin=Received deploy request, do you want to send the plugin jar? dialog.confirm_import_inventory=Received exported inventory, do you want to copy to clipboard? @@ -39,6 +48,8 @@ dialog.confirm_import_location=Received exported location, do you want to copy t dialog.confirm_reload=Project reload is required, do you want to reload now? dialog.confirm_report_exception=Received error report, do you want to view the corresponding block? dialog.create_project=Name: +dialog.edit_javadocs_url=Javadocs URL: +dialog.edit_value=Package: dialog.import_plugin_component=Name: dialog.open_project=Project: dialog.rename_plugin_component=New name: @@ -51,10 +62,13 @@ label.disabled=Disabled label.enabled=Enabled label.included=Included: label.jar_output=Jar output: +label.javadocs=Javadocs label.maven=Maven label.modules=Modules +label.no_javadocs = No packages found label.no_maven_dependencies=No dependencies/repositories label.no_plugin_components=No plugin components +label.no_values=No packages found label.package=Package: label.plugin_attributes=Attributes label.plugin_components=Plugin Components @@ -97,12 +111,14 @@ menu.undo=Undo notification.added_plugin_component=Added plugin component notification.deleted_plugin_component=Deleted plugin component notification.error_title=Error +notification.unavailable_javadocs=Javadocs for this block is currently unavailable notification.exported_plugin_component=Exported plugin component notification.exported_project=Exported project notification.imported_item=Copied item to clipboard notification.imported_plugin_component=Imported plugin component notification.imported_project=Imported project notification.info_title=Info +notification.invalid_javadocs_url=Invalid Javadocs URL notification.invalid_maven_dependency=Invalid dependency notification.invalid_maven_repository=Invalid repository notification.no_plugin_jar=Failed to find a plugin jar to deploy @@ -121,9 +137,13 @@ notification.saved_project=Saved project notification.undo_failure=There are no actions to undo notification.unexpected_error=An unexpected error occurred window.add_component=Add Component +window.add_javadocs_url=Add Javadocs URL window.add_maven_dependency=Add Dependency window.add_maven_repository=Add Repository +window.add_value=Add Package window.create_project=Create Project +window.edit_javadocs_url=Edit Javadocs URL +window.edit_value=Edit Package window.import_plugin_component=Import Plugin Component window.import_project=Import Project window.log=Log diff --git a/VB-Application/src/main/resources/lang/gui_en_US.properties b/VB-Application/src/main/resources/lang/gui_en_US.properties index 020f71e2..48f4c9a4 100644 --- a/VB-Application/src/main/resources/lang/gui_en_US.properties +++ b/VB-Application/src/main/resources/lang/gui_en_US.properties @@ -29,6 +29,7 @@ context_menu.paste_before=Paste Before context_menu.paste_inside=Paste Inside context_menu.pin=Pin context_menu.unpin=Unpin +context_menu.javadocs = See Javadocs dialog.add_component_name=Name: dialog.add_component_type=Type: dialog.confirm_delete=Are you sure you want to delete '%s'?\n(warning: this cannot be undone)