From 08a9329864726c25444f3e3b67e39601f6f875a2 Mon Sep 17 00:00:00 2001 From: StevenLawson Date: Tue, 27 Aug 2013 13:49:45 -0400 Subject: [PATCH] Web help refinement. --- .../HTTPD/HTMLGenerationTools.java | 5 +++ .../TotalFreedomMod/HTTPD/Module_help.java | 35 ++++++++++++++--- .../HTTPD/TFM_HTTPD_Module.java | 7 +++- .../HTTPD/TFM_HTTPD_PageBuilder.java | 38 +++++++++++++------ 4 files changed, 67 insertions(+), 18 deletions(-) diff --git a/src/me/StevenLawson/TotalFreedomMod/HTTPD/HTMLGenerationTools.java b/src/me/StevenLawson/TotalFreedomMod/HTTPD/HTMLGenerationTools.java index f4e40979..d970b949 100644 --- a/src/me/StevenLawson/TotalFreedomMod/HTTPD/HTMLGenerationTools.java +++ b/src/me/StevenLawson/TotalFreedomMod/HTTPD/HTMLGenerationTools.java @@ -18,6 +18,11 @@ public class HTMLGenerationTools return "

" + escapeHtml4(data) + "

\r\n"; } + public static String heading(String data, int level) + { + return "" + escapeHtml4(data) + "\r\n"; + } + public static String list(Map map) { StringBuilder output = new StringBuilder(); diff --git a/src/me/StevenLawson/TotalFreedomMod/HTTPD/Module_help.java b/src/me/StevenLawson/TotalFreedomMod/HTTPD/Module_help.java index d5bbc94a..79e3fa30 100644 --- a/src/me/StevenLawson/TotalFreedomMod/HTTPD/Module_help.java +++ b/src/me/StevenLawson/TotalFreedomMod/HTTPD/Module_help.java @@ -13,6 +13,8 @@ import org.bukkit.command.CommandMap; import org.bukkit.command.PluginIdentifiableCommand; import static me.StevenLawson.TotalFreedomMod.HTTPD.HTMLGenerationTools.*; +import static org.apache.commons.lang3.StringEscapeUtils.*; +import org.apache.commons.lang3.StringUtils; public class Module_help extends TFM_HTTPD_Module { @@ -34,6 +36,8 @@ public class Module_help extends TFM_HTTPD_Module return paragraph("Error loading commands."); } + responseBody.append(heading("Command Help Index", 1)); + final Map> commandsByPlugin = new HashMap>(); final Iterator> itKnownCommands = knownCommands.entrySet().iterator(); @@ -74,15 +78,30 @@ public class Module_help extends TFM_HTTPD_Module } }); - List descriptions = new ArrayList(); + responseBody.append(heading(pluginName, 2)).append("
    \r\n"); + for (Command command : commands) { - descriptions.add(command.getName() + " (" + command.getUsage().replace("", command.getName()).trim() + "): " + command.getDescription()); + responseBody + .append("
  • ") + .append(escapeHtml4(command.getName())) + .append(" - Usage: ") + .append(escapeHtml4(command.getUsage().replace("", command.getName()).trim())) + .append(""); + + if (!command.getAliases().isEmpty()) + { + responseBody.append(" - Aliases: ") + .append(escapeHtml4(StringUtils.join(command.getAliases(), ", "))) + .append(""); + } + + responseBody.append("
    ") + .append(escapeHtml4(command.getDescription())) + .append("
  • \r\n"); } - responseBody - .append(paragraph(pluginName)) - .append(list(descriptions)); + responseBody.append("
\r\n"); } return responseBody.toString(); @@ -93,4 +112,10 @@ public class Module_help extends TFM_HTTPD_Module { return "TotalFreedomMod :: WebHelp"; } + + @Override + public String getStyle() + { + return ".commandName{font-weight:bold;}.commandDescription{padding-left:15px;}li{margin:.15em;padding:.15em;}"; + } } diff --git a/src/me/StevenLawson/TotalFreedomMod/HTTPD/TFM_HTTPD_Module.java b/src/me/StevenLawson/TotalFreedomMod/HTTPD/TFM_HTTPD_Module.java index d0b728e8..2c2caa3a 100644 --- a/src/me/StevenLawson/TotalFreedomMod/HTTPD/TFM_HTTPD_Module.java +++ b/src/me/StevenLawson/TotalFreedomMod/HTTPD/TFM_HTTPD_Module.java @@ -24,8 +24,13 @@ public abstract class TFM_HTTPD_Module public abstract String getTitle(); + public String getStyle() + { + return ""; + } + public final Response getResponse() { - return new TFM_HTTPD_PageBuilder(getBody(), getTitle()).getResponse(); + return new TFM_HTTPD_PageBuilder(getBody(), getTitle(), getStyle()).getResponse(); } } diff --git a/src/me/StevenLawson/TotalFreedomMod/HTTPD/TFM_HTTPD_PageBuilder.java b/src/me/StevenLawson/TotalFreedomMod/HTTPD/TFM_HTTPD_PageBuilder.java index ea34b0b5..99ff58fb 100644 --- a/src/me/StevenLawson/TotalFreedomMod/HTTPD/TFM_HTTPD_PageBuilder.java +++ b/src/me/StevenLawson/TotalFreedomMod/HTTPD/TFM_HTTPD_PageBuilder.java @@ -5,26 +5,29 @@ import me.StevenLawson.TotalFreedomMod.HTTPD.NanoHTTPD.Response; public class TFM_HTTPD_PageBuilder { private static final String TEMPLATE = - "\n" - + "\n" - + "\n" - + "{$TITLE}\n" - + "\n" - + "\n" - + "{$BODY}\n" - + "\n"; + "\r\n" + + "\r\n" + + "\r\n" + + "{$TITLE}\r\n" + + "\r\n" + + "\r\n" + + "\r\n" + + "{$BODY}\r\n" + + "\r\n"; // - private String body; - private String title; + private String body = ""; + private String title = ""; + private String style = ""; public TFM_HTTPD_PageBuilder() { } - public TFM_HTTPD_PageBuilder(String body, String title) + public TFM_HTTPD_PageBuilder(String body, String title, String style) { this.body = body; this.title = title; + this.style = style; } public void setBody(String body) @@ -37,8 +40,19 @@ public class TFM_HTTPD_PageBuilder this.title = title; } + public void setStyle(String style) + { + this.style = style; + } + public Response getResponse() { - return new Response(TEMPLATE.replace("{$TITLE}", title).replace("{$BODY}", body)); + return new Response(this.toString()); + } + + @Override + public String toString() + { + return TEMPLATE.replace("{$BODY}", body).replace("{$TITLE}", title).replace("{$STYLE}", style); } }