diff --git a/.gitignore b/.gitignore index a599420a..a9292c30 100644 --- a/.gitignore +++ b/.gitignore @@ -206,4 +206,5 @@ buildNumber.properties # https://github.com/takari/maven-wrapper#usage-without-binary-jar .mvn/wrapper/maven-wrapper.jar -# End of https://www.toptal.com/developers/gitignore/api/java,eclipse,intellij,maven \ No newline at end of file +# End of https://www.toptal.com/developers/gitignore/api/java,eclipse,intellij,maven +/.idea diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/VisualBukkitApp.java b/VB-Application/src/main/java/com/gmail/visualbukkit/VisualBukkitApp.java index 307dbab4..668a6e5d 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/VisualBukkitApp.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/VisualBukkitApp.java @@ -370,6 +370,17 @@ public static void openURI(URI uri) { } } + public static URI javadocsURI(String relativePath) { + if (relativePath.startsWith("https://")) { + return URI.create(relativePath); + } + String baseUrl = ProjectManager.current().getDEFAULT_JAVADOCS_URL(); + if (relativePath.startsWith("java/") || relativePath.startsWith("jdk/")) { + baseUrl = ProjectManager.current().getDEFAULT_JAVA_JAVADOCS_URL(); + } + return URI.create(baseUrl).resolve(relativePath); + } + private static boolean openURI(URI uri, String command) { try { return Runtime.getRuntime().exec(command + " " + uri).waitFor() == 0; 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..04e17073 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,6 +1,8 @@ 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; @@ -34,7 +36,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 +122,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..a230b13e 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()); @@ -96,5 +97,8 @@ public JSONObject serialize() { public void deserialize(JSONObject json) { this.json = json; } + + @Override + public void openJavadocs() {} } } 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..64481c11 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) { @@ -136,5 +136,8 @@ public JSONObject serialize() { public void deserialize(JSONObject json) { this.json = json; } + + @Override + public void openJavadocs() {} } } 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..685acf3d 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,11 +1,14 @@ 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 { @@ -14,6 +17,11 @@ public StatBungeeCordConnect() { 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/CompCommand.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompCommand.java index acc22ca5..105009bf 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompCommand.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompCommand.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.PluginComponentBlock; import com.gmail.visualbukkit.blocks.parameters.InputParameter; @@ -36,6 +37,11 @@ public CompCommand() { addParameter("Usage", usage); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("org/bukkit/command/Command.html")); + } + @Override public void prepareBuild(BuildInfo buildInfo) { MethodSource commandMethod = buildInfo.getMainClass().getMethod("onCommand", "CommandSender", "Command", "String", "String[]"); diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompConsumer.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompConsumer.java index 03603ba9..647a2d46 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompConsumer.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompConsumer.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.PluginComponentBlock; import com.gmail.visualbukkit.project.BuildInfo; @@ -16,4 +17,9 @@ public void prepareBuild(BuildInfo buildInfo) { protected static String getConsumerField(String str) { return "$CONSUMER_" + str; } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("java/util/function/Consumer")); + } } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompEventListener.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompEventListener.java index a07df014..ccedff6e 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompEventListener.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompEventListener.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.PluginComponentBlock; import com.gmail.visualbukkit.blocks.parameters.ChoiceParameter; @@ -30,4 +31,10 @@ public void prepareBuild(BuildInfo buildInfo) { public ClassInfo getEvent() { return eventParameter.getValue() != null ? eventParameter.getValue() : ClassInfo.of("org.bukkit.event.Event"); } + + @Override + public void openJavadocs() { + String eventPath = (getEvent().getPackage().replace('.', '/') + "/" + getEvent().toString().split("\\(")[0]).strip(); + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI(eventPath + ".html")); + } } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompFunction.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompFunction.java index 2a213b47..54ed4fc2 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompFunction.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompFunction.java @@ -21,4 +21,7 @@ public void prepareBuild(BuildInfo buildInfo) { "}" + functionMethod.getBody()); } + + @Override + public void openJavadocs() {} } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompPluginDisable.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompPluginDisable.java index 0710459a..5b608826 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompPluginDisable.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompPluginDisable.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.PluginComponentBlock; import com.gmail.visualbukkit.project.BuildInfo; @@ -17,4 +18,9 @@ public void prepareBuild(BuildInfo buildInfo) { generateChildrenJava(buildInfo) + "} catch (Exception e) { e.printStackTrace(); }"); } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("org/bukkit/plugin/java/JavaPlugin.html#onDisable()")); + } } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompPluginEnable.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompPluginEnable.java index 9bc339c3..845e1db7 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompPluginEnable.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompPluginEnable.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.PluginComponentBlock; import com.gmail.visualbukkit.project.BuildInfo; @@ -17,4 +18,9 @@ public void prepareBuild(BuildInfo buildInfo) { generateChildrenJava(buildInfo) + "} catch (Exception e) { e.printStackTrace(); }"); } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("org/bukkit/plugin/java/JavaPlugin.html#onEnable()")); + } } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompProcedure.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompProcedure.java index 7403b326..14fedbdb 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompProcedure.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompProcedure.java @@ -21,4 +21,7 @@ public void prepareBuild(BuildInfo buildInfo) { "}" + procedureMethod.getBody()); } + + @Override + public void openJavadocs() {} } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompTabCompleteHandler.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompTabCompleteHandler.java index 133808d7..3e4723b7 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompTabCompleteHandler.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompTabCompleteHandler.java @@ -43,4 +43,9 @@ public void prepareBuild(BuildInfo buildInfo) { "}" + tabCompleteMethod.getBody()); } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("org/bukkit/command/TabCompleter.html#onTabComplete()")); + } } diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompWorkspace.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompWorkspace.java index eb5e3b81..7e827090 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompWorkspace.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/core/CompWorkspace.java @@ -9,4 +9,7 @@ public class CompWorkspace extends PluginComponentBlock { @Override public void prepareBuild(BuildInfo buildInfo) {} + + @Override + public void openJavadocs() {} } 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..30926dd4 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,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; @@ -13,6 +14,11 @@ public ExprColoredString() { addParameter("String", new ExpressionParameter(ClassInfo.of(String.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..e90d88d7 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,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; @@ -24,6 +25,11 @@ public void updateState() { checkForPluginComponent(CompCommand.class, CompTabCompleteHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..e5fafce2 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,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.project.BuildInfo; @@ -21,6 +22,11 @@ public void updateState() { checkForPluginComponent(CompCommand.class, CompTabCompleteHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..72b3ce01 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,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.project.BuildInfo; @@ -19,6 +20,11 @@ public void updateState() { checkForPluginComponent(CompCommand.class, CompTabCompleteHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..4df1bd01 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,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.PluginComponentParameter; @@ -17,6 +18,11 @@ public ExprConsumer() { addParameter("Consumer", parameter); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..75cb4520 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,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.project.BuildInfo; @@ -14,6 +15,11 @@ public void updateState() { checkForPluginComponent(CompConsumer.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..5f1a60ea 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,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.project.BuildInfo; @@ -17,4 +18,9 @@ public ClassInfo getReturnType() { public String generateJava(BuildInfo buildInfo) { return "$executionException" + getNestedContainers(StatHandleException.class); } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..3d621dc2 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 @@ -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.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 +21,16 @@ public ExprField() { addParameter("Field", fieldParameter = new FieldParameter(this, classParameter)); } + @Override + public void openJavadocs() { + try { + JavadocsManager.getExprJavadocs(classParameter, fieldParameter); + } catch (NullPointerException e) { + VisualBukkitApp.displayError("Cannot open javadocs for field as\n no class and/or field is selected"); + VisualBukkitApp.getLogger().warning("Cannot open javadocs for field because no class and/or field is selected"); + } + } + @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..37bbb378 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,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; @@ -19,6 +20,11 @@ public void updateState() { checkForPluginComponent(CompFunction.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..d5adbf61 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,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.project.BuildInfo; @@ -16,6 +17,11 @@ public void updateState() { checkForPluginComponent(CompFunction.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..ef3c7a44 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; @@ -17,6 +18,11 @@ public ExprFunctionValue() { addParameter("Arguments", new ExpressionParameter(ClassInfo.of(List.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..f03be359 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; @@ -52,4 +53,9 @@ public static HashMap newHashMap(Object... objects) { } return "PluginMain.newHashMap(" + joiner + ")"; } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..49baa557 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; @@ -39,4 +40,9 @@ public String generateJava(BuildInfo buildInfo) { } return "new HashSet(Arrays.asList(" + joiner + "))"; } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..baac5d01 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,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; @@ -13,6 +14,11 @@ public ExprHexColoredString() { addParameter("String", new ExpressionParameter(ClassInfo.of(String.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..e0da6659 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; @@ -39,4 +40,9 @@ public String generateJava(BuildInfo buildInfo) { } return "List.of(" + joiner + ")"; } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..48ca90b7 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; @@ -17,6 +18,11 @@ public ExprIsClass() { addParameter("Object", new ExpressionParameter(ClassInfo.of(Object.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..65c5213a 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,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; @@ -13,6 +14,11 @@ public ExprIsNull() { addParameter("Object", new ExpressionParameter(ClassInfo.of(Object.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..7f426f16 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,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; @@ -17,6 +18,11 @@ public ExprItemStack() { addParameter("Lore", new ExpressionParameter(ClassInfo.of(List.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..eb9c5f22 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; @@ -39,4 +40,9 @@ public String generateJava(BuildInfo buildInfo) { } return "new ArrayList(Arrays.asList(" + joiner + "))"; } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..dee81e36 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 @@ -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.ClassParameter; 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 +24,16 @@ public ExprMethod() { addParameter("Method", methodParameter = new MethodParameter(this, classParameter, m -> m.getReturnType() != null)); } + @Override + public void openJavadocs() { + try { + JavadocsManager.getExprJavadocs(classParameter, methodParameter); + } catch (NullPointerException e) { + VisualBukkitApp.displayError("Cannot open javadocs for method as\n no class and/or method is selected"); + VisualBukkitApp.getLogger().warning("Cannot open javadocs for method because no class and/or method is selected"); + } + } + 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..9825e7ed 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,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; @@ -19,6 +20,11 @@ public void updateState() { checkForPluginComponent(CompProcedure.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..ee98efdc 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,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.project.BuildInfo; @@ -16,6 +17,11 @@ public void updateState() { checkForPluginComponent(CompProcedure.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..5446b35a 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,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.MultilineStringParameter; @@ -15,6 +16,11 @@ public ExprSerializedItemStack() { addParameter("Yaml", parameter); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..91cdb8df 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,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.StringParameter; @@ -19,6 +20,11 @@ public ExprString() { parameters = Collections.singletonList(parameter); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..d2058dd4 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; @@ -17,6 +18,11 @@ public ExprStringConcatenation() { addParameter("String", new ExpressionParameter(ClassInfo.of(String.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..11938914 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,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.project.BuildInfo; @@ -17,4 +18,9 @@ public ClassInfo getReturnType() { public String generateJava(BuildInfo buildInfo) { return "PluginMain.getInstance()"; } + + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..43160b10 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,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.project.BuildInfo; @@ -13,6 +14,11 @@ public void updateState() { checkForContainer(StatScheduleTask.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..f6c12d0a 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,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; @@ -19,6 +20,11 @@ public void updateState() { checkForPluginComponent(CompCommand.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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/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..79e55823 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; @@ -17,6 +18,11 @@ public StatExecuteProcedure() { addParameter("Arguments", new ExpressionParameter(ClassInfo.of(List.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..b6a84a02 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,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; @@ -19,6 +20,11 @@ public void updateState() { checkForPluginComponent(CompFunction.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..d3029d1c 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 @@ -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; @@ -7,6 +8,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 +25,16 @@ public StatMethod() { addParameter("Method", methodParameter = new MethodParameter(this, classParameter)); } + @Override + public void openJavadocs() { + try { + JavadocsManager.getStatJavadocs(classParameter, methodParameter); + } catch (NullPointerException e) { + VisualBukkitApp.displayError("Cannot open javadocs for method as\n no class and/or method is selected"); + VisualBukkitApp.getLogger().warning("Cannot open javadocs for method because no class and/or method is selected"); + } + } + 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..b0c44160 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; @@ -24,6 +25,11 @@ public StatScheduleTask() { addParameter("Delay", new ExpressionParameter(ClassInfo.of(long.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..2c822cc1 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,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; @@ -14,6 +15,11 @@ public StatSetPlayerHeadSkin() { addParameter("URL", new ExpressionParameter(ClassInfo.of(String.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..2e4a5be7 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,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; @@ -21,6 +22,11 @@ public void updateState() { checkForPluginComponent(CompTabCompleteHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..d5b549a7 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; @@ -17,6 +18,11 @@ public StatWhileLoop() { addParameter("Condition", new ExpressionParameter(ClassInfo.of(boolean.class))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("https://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html")); + } + @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/CompGUI.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/CompGUI.java index 88a3b9e0..c20b0aae 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/CompGUI.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/CompGUI.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.PluginComponentBlock; import com.gmail.visualbukkit.blocks.parameters.CheckBoxParameter; @@ -20,6 +21,11 @@ public CompGUI() { addParameter("Mode", modeParameter); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("org/bukkit/inventory/Inventory")); + } + @Override public void prepareBuild(BuildInfo buildInfo) { String id = "\"" + getPluginComponent().getName() + "\""; diff --git a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/CompGUIClickHandler.java b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/CompGUIClickHandler.java index 57a0c4d1..502dce9f 100644 --- a/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/CompGUIClickHandler.java +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/blocks/definitions/gui/CompGUIClickHandler.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.PluginComponentBlock; import com.gmail.visualbukkit.blocks.parameters.PluginComponentParameter; @@ -13,6 +14,11 @@ public CompGUIClickHandler() { addParameter("GUI", new PluginComponentParameter(CompGUI.class)); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("org/bukkit/event/inventory/InventoryClickEvent.html")); + } + @Override public void prepareBuild(BuildInfo buildInfo) { buildInfo.getMainClass().addMethod( 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..6e6c22a7 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,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.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; @@ -14,6 +15,11 @@ public void updateState() { checkForPluginComponent(CompGUIClickHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..65024501 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,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.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; @@ -14,6 +15,11 @@ public void updateState() { checkForPluginComponent(CompGUIClickHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..1c4888ad 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,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.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; @@ -14,6 +15,11 @@ public void updateState() { checkForPluginComponent(CompGUIClickHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..d3c2bdc4 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,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.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; @@ -14,6 +15,11 @@ public void updateState() { checkForPluginComponent(CompGUIClickHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..e60c192a 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,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.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; @@ -14,6 +15,11 @@ public void updateState() { checkForPluginComponent(CompGUIClickHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..e81e2adc 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,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.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; @@ -14,6 +15,11 @@ public void updateState() { checkForPluginComponent(CompGUI.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..e2f5acf7 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,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.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; @@ -14,6 +15,11 @@ public void updateState() { checkForPluginComponent(CompGUIClickHandler.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..fe653772 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,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.ExpressionBlock; import com.gmail.visualbukkit.project.BuildInfo; @@ -14,6 +15,11 @@ public void updateState() { checkForPluginComponent(CompGUI.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..e05ae480 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; @@ -15,6 +16,11 @@ public StatOpenGUI() { addParameter("Player", new ExpressionParameter(ClassInfo.of("org.bukkit.entity.Player"))); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..5bccb378 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,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; @@ -20,6 +21,11 @@ public void updateState() { checkForPluginComponent(CompGUI.class); } + @Override + public void openJavadocs() { + VisualBukkitApp.openURI(VisualBukkitApp.javadocsURI("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..6b5fd718 --- /dev/null +++ b/VB-Application/src/main/java/com/gmail/visualbukkit/project/JavadocsManager.java @@ -0,0 +1,94 @@ +package com.gmail.visualbukkit.project; + +import com.gmail.visualbukkit.VisualBukkitApp; +import com.gmail.visualbukkit.blocks.Block; +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) { + pluginComponent.getBlock().ifPresentOrElse( + Block::openJavadocs, + () -> 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[] segments = className.split("\\."); + StringBuilder packagePathBuilder = new StringBuilder(); + StringBuilder classPartBuilder = new StringBuilder(); + boolean inClass = false; + for (String segment : segments) { + if (!inClass && !segment.isEmpty() && Character.isUpperCase(segment.charAt(0))) { + inClass = true; + } + if (inClass) { + if (!classPartBuilder.isEmpty()) { + classPartBuilder.append('.'); + } + classPartBuilder.append(segment); + } else { + if (!packagePathBuilder.isEmpty()) { + packagePathBuilder.append('/'); + } + packagePathBuilder.append(segment); + } + } + if (classPartBuilder.isEmpty() && segments.length > 0) { + classPartBuilder.append(segments[segments.length - 1]); + } + String url = baseUrl + packagePathBuilder + "/" + classPartBuilder + ".html"; + if (!methodName.isBlank()) { + url += "#" + methodName; + } + VisualBukkitApp.openURI(URI.create(url)); + VisualBukkitApp.getLogger().info("Opening Javadocs: " + 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..ef302721 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)) { @@ -836,10 +1140,22 @@ public String getName() { return directory.getFileName().toString(); } + public String getDEFAULT_JAVADOCS_URL() { + return DEFAULT_JAVADOCS_URL; + } + + public String getDEFAULT_JAVA_JAVADOCS_URL() { + return DEFAULT_JAVA_JAVADOCS_URL; + } + 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..857ff176 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..454c895a 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)