package net.i2p.router.web; import java.util.Iterator; import java.util.List; import java.util.Properties; import java.util.Set; import java.util.TreeSet; import net.i2p.router.startup.ClientAppConfig; public class ConfigClientsHelper extends HelperBase { private String _edit; public ConfigClientsHelper() {} public void setEdit(String edit) { if (edit == null) return; String xStart = _("Edit"); if (edit.startsWith(xStart + " ") && edit.endsWith("")) { // IE sucks _edit = edit.substring(xStart.length() + 18, edit.length() - 7); } else if (edit.startsWith("Edit ")) { _edit = edit.substring(5); } else if (edit.startsWith(xStart + ' ')) { _edit = edit.substring(xStart.length() + 1); } else if ((_("Add Client")).equals(edit)) { _edit = "new"; } } public String getForm1() { StringBuilder buf = new StringBuilder(1024); buf.append("\n"); buf.append("\n"); List clients = ClientAppConfig.getClientApps(_context); for (int cur = 0; cur < clients.size(); cur++) { ClientAppConfig ca = clients.get(cur); renderForm(buf, ""+cur, ca.clientName, false, !ca.disabled, "webConsole".equals(ca.clientName) || "Web console".equals(ca.clientName), ca.className + ((ca.args != null) ? " " + ca.args : ""), (""+cur).equals(_edit), true); } if ("new".equals(_edit)) renderForm(buf, "" + clients.size(), "", false, false, false, "", true, false); buf.append("
" + _("Client") + "" + _("Run at Startup?") + "" + _("Start Now") + "" + _("Class and arguments") + "
\n"); return buf.toString(); } public String getForm2() { StringBuilder buf = new StringBuilder(1024); buf.append("\n"); buf.append("\n"); Properties props = RouterConsoleRunner.webAppProperties(); Set keys = new TreeSet(props.keySet()); for (Iterator iter = keys.iterator(); iter.hasNext(); ) { String name = iter.next(); if (name.startsWith(RouterConsoleRunner.PREFIX) && name.endsWith(RouterConsoleRunner.ENABLED)) { String app = name.substring(RouterConsoleRunner.PREFIX.length(), name.lastIndexOf(RouterConsoleRunner.ENABLED)); String val = props.getProperty(name); renderForm(buf, app, app, !"addressbook".equals(app), "true".equals(val), RouterConsoleRunner.ROUTERCONSOLE.equals(app), app + ".war", false, false); } } buf.append("
" + _("WebApp") + "" + _("Run at Startup?") + "" + _("Start Now") + "" + _("Description") + "
\n"); return buf.toString(); } public String getForm3() { StringBuilder buf = new StringBuilder(1024); buf.append("\n"); buf.append("\n"); Properties props = PluginStarter.pluginProperties(); Set keys = new TreeSet(props.keySet()); for (Iterator iter = keys.iterator(); iter.hasNext(); ) { String name = iter.next(); if (name.startsWith(PluginStarter.PREFIX) && name.endsWith(PluginStarter.ENABLED)) { String app = name.substring(PluginStarter.PREFIX.length(), name.lastIndexOf(PluginStarter.ENABLED)); String val = props.getProperty(name); renderForm(buf, app, app, !"addressbook".equals(app), "true".equals(val), false, app, false, false); } } buf.append("
" + _("Plugin") + "" + _("Run at Startup?") + "" + _("Start Now") + "" + _("Description") + "
\n"); return buf.toString(); } /** ro trumps edit and showEditButton */ private void renderForm(StringBuilder buf, String index, String name, boolean urlify, boolean enabled, boolean ro, String desc, boolean edit, boolean showEditButton) { buf.append(""); if (urlify && enabled) { String link = "/"; if (! RouterConsoleRunner.ROUTERCONSOLE.equals(name)) link += name + "/"; buf.append("").append(_(name)).append(""); } else if (edit && !ro) { buf.append(" 0) buf.append(_(name)); buf.append("\" >"); } else { if (name.length() > 0) buf.append(_(name)); } buf.append(""); if ((!enabled) && !edit) { buf.append(""); } if (showEditButton && (!edit) && !ro) { buf.append(""); buf.append(""); } buf.append(""); if (edit && !ro) { buf.append(""); } else { buf.append(desc); } buf.append("\n"); } }