* i2psnark: Message area tweaks and clear link

This commit is contained in:
zzz
2012-03-20 14:09:17 +00:00
parent 4ffbfce51e
commit 444ba47463
5 changed files with 58 additions and 15 deletions

View File

@ -1029,6 +1029,8 @@ public class Snark
//if (debug >= INFO && t != null)
// t.printStackTrace();
stopTorrent();
if (t != null)
s += ": " + t;
throw new RuntimeException(s, t);
}

View File

@ -51,7 +51,7 @@ public class SnarkManager implements Snark.CompleteListener {
private Properties _config;
private final I2PAppContext _context;
private final Log _log;
private final List _messages;
private final List<String> _messages;
private final I2PSnarkUtil _util;
private PeerCoordinatorSet _peerCoordinatorSet;
private ConnectionAcceptor _connectionAcceptor;
@ -156,6 +156,7 @@ public class SnarkManager implements Snark.CompleteListener {
public I2PSnarkUtil util() { return _util; }
private static final int MAX_MESSAGES = 5;
public void addMessage(String message) {
synchronized (_messages) {
_messages.add(message);
@ -167,12 +168,19 @@ public class SnarkManager implements Snark.CompleteListener {
}
/** newest last */
public List getMessages() {
public List<String> getMessages() {
synchronized (_messages) {
return new ArrayList(_messages);
}
}
/** @since 0.9 */
public void clearMessages() {
synchronized (_messages) {
_messages.clear();
}
}
/**
* @return default false
* @since 0.8.9

View File

@ -160,7 +160,7 @@ public class I2PSnarkServlet extends DefaultServlet {
PrintWriter out = resp.getWriter();
//if (_log.shouldLog(Log.DEBUG))
// _manager.addMessage((_context.clock().now() / 1000) + " xhr1 p=" + req.getParameter("p"));
writeMessages(out);
writeMessages(out, false);
writeTorrents(out, req);
return;
}
@ -277,7 +277,7 @@ public class I2PSnarkServlet extends DefaultServlet {
_manager.addMessage(_("Click \"Add torrent\" button to fetch torrent"));
out.write("<div class=\"page\"><div id=\"mainsection\" class=\"mainsection\">");
writeMessages(out);
writeMessages(out, isConfigure);
if (isConfigure) {
// end of mainsection div
@ -297,14 +297,20 @@ public class I2PSnarkServlet extends DefaultServlet {
out.write(FOOTER);
}
private void writeMessages(PrintWriter out) throws IOException {
out.write("<div class=\"snarkMessages\"><table><tr><td align=\"left\"><pre>");
List msgs = _manager.getMessages();
for (int i = msgs.size()-1; i >= 0; i--) {
String msg = (String)msgs.get(i);
out.write(msg + "\n");
private void writeMessages(PrintWriter out, boolean isConfigure) throws IOException {
List<String> msgs = _manager.getMessages();
if (!msgs.isEmpty()) {
out.write("<div class=\"snarkMessages\"><ul>");
for (int i = msgs.size()-1; i >= 0; i--) {
String msg = (String)msgs.get(i);
out.write("<li>" + msg + "</li>\n");
}
// lazy GET, lose p parameter
out.write("</ul><p><a href=\"/i2psnark/");
if (isConfigure)
out.write("configure");
out.write("?action=Clear&amp;nonce=" + _nonce + "\">" + _("clear messages") + "</a></p></div>");
}
out.write("</pre></td></tr></table></div>");
}
private void writeTorrents(PrintWriter out, HttpServletRequest req) throws IOException {
@ -751,6 +757,8 @@ public class I2PSnarkServlet extends DefaultServlet {
if (snark.isStopped())
snark.startTorrent();
}
} else if ("Clear".equals(action)) {
_manager.clearMessages();
} else {
_manager.addMessage("Unknown POST action: \"" + action + '\"');
}