diff --git a/build.xml b/build.xml index a4a78f2b7..dc8529194 100644 --- a/build.xml +++ b/build.xml @@ -325,8 +325,10 @@ + @@ -342,7 +344,11 @@ - + + + + + diff --git a/history.txt b/history.txt index 98b76bdfa..892668197 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,8 @@ +2009-07-23 dr|z3d + * Include additional tile graphics and I2PSnark header logo in /console/images/ + * Tidy up some layout irks; add some last minute 0.7.6 pre-release sparkle! + * Ongoing overhaul of the I2PSnark UI. + 2009-07-23 sponge * Add bob.i2p and sponge.i2p keys to hosts.txt diff --git a/installer/resources/themes/console/dark/console.css b/installer/resources/themes/console/dark/console.css index a53722edf..6ce921bd4 100644 --- a/installer/resources/themes/console/dark/console.css +++ b/installer/resources/themes/console/dark/console.css @@ -222,7 +222,7 @@ table { } th { - padding: 8px; + padding: 6px 3px; color: #eef; text-align: center; font-size: 8pt; @@ -250,7 +250,7 @@ tr:last-child { } */ td { - padding: 5px 10px; + padding: 6px 3px 5px 3px; color: #eef; vertical-align: middle; } @@ -509,4 +509,38 @@ form {} -khtml-border-radius: 4px; border: 1px solid #001; display: none; -} \ No newline at end of file +} + +.statusnotes { + font-style: italic; + font-size: 8pt; + font-color: #700; + text-align: center; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border: 0 !important; +} + +.joblog { + margin: 25px 0 25px 0; + padding: 20px 40px 20px 40px !important; + border: 1px solid #eef; + background-color: #004; + background: url("images/lightbluetile.png"); + color: #dfd; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + text-align: justify; + -moz-box-shadow: inset 0px 0px 1px 0px #eef; + overflow-x: scroll; + } + + div.joblog:li { + word-wrap: break-word !important; +} + + .joblog:ul { + word-wrap: break-word !important; +} \ No newline at end of file diff --git a/installer/resources/themes/console/dark/images/darkbluetile.png b/installer/resources/themes/console/dark/images/darkbluetile.png index 89df70b96..5f7d1a01f 100644 Binary files a/installer/resources/themes/console/dark/images/darkbluetile.png and b/installer/resources/themes/console/dark/images/darkbluetile.png differ diff --git a/installer/resources/themes/console/images/olivegreentile.png b/installer/resources/themes/console/images/olivegreentile.png new file mode 100644 index 000000000..e63010c9d Binary files /dev/null and b/installer/resources/themes/console/images/olivegreentile.png differ diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index e0814b9ff..d876cc7b3 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -268,7 +268,7 @@ table { } th { - padding: 8px; + padding: 6px 2px; color: #000; background: #b4c8ff url('images/tabletitlelight.png') repeat-x; text-align: center; @@ -354,6 +354,12 @@ a:hover{ font-weight: bold; } +a:active{ + color: #f93; + text-decoration: underline; + font-weight: bold; +} + .links { list-style: url(images/link.png); margin: 10px 5px 0 0px; @@ -550,4 +556,38 @@ form {} -khtml-border-radius: 4px; border: 1px solid #001; display: none; -} \ No newline at end of file +} + +.statusnotes { + font-style: italic; + font-size: 8pt; + font-color: #700 !important; + text-align: center; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border: 0; +} + +.joblog { + margin: 25px 0 25px 0; + padding: 20px 40px 20px 40px !important; + border: 1px solid #003; + background-color: #004; + background: url("/themes/console/images/olivegreentile.png"); + color: #001; + border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + text-align: justify; + -moz-box-shadow: inset 0px 0px 1px 0px #eef; + overflow-x: scroll; + } + + div.joblog:li { + word-wrap: break-word !important; +} + + .joblog:ul { + word-wrap: break-word !important; +} \ No newline at end of file diff --git a/installer/resources/themes/console/light/default.css b/installer/resources/themes/console/light/default.css index 47589e3b1..57e5c2739 100644 --- a/installer/resources/themes/console/light/default.css +++ b/installer/resources/themes/console/light/default.css @@ -73,6 +73,7 @@ textarea, input, select, button, a { button { float: none; + text-decoration: none; } textarea { @@ -172,18 +173,21 @@ hr { border-radius: 4px; margin-top: 8px; background: url(images/tabletitlelight.png) 0 0 repeat: x !important; + text-decoration: none; } .control:active { border: 1px inset; background-color: #003; color: #ff6600; + text-decoration: none; } .control:hover { border: 1px solid #eeeeff; background-color: #f60; color: #fff !important; + text-decoration: none; } .panel { @@ -199,6 +203,7 @@ hr { border-radius: 4px; border: 1px solid #002; padding: 10px 20px; + -moz-box-shadow: inset 0px 0px 1px 0px #002; } .panel .footer { @@ -239,15 +244,75 @@ hr { #globalOperationsPanel { background-color: #ddddff; - border: 1px solid #f22; - -moz-box-shadow: inset 0px 0px 4px 0px #f00; + border: 1px solid #003; padding: 5px 20px 11px 10px; + background: url("/themes/console/images/yellowtile.png") !important; + -moz-box-shadow: inset 0px 0px 1px 0px #fff; } #globalOperationsPanel .control { min-width: 120px; } +#globalOperationsPanel .control:link { + min-width: 120px; +} + + +globalOperationsPanel .control:link { + min-width: 120px; + margin: 4px 0 0 4px !important; + padding: 2px; + overflow: hidden; + font-weight: bold; + background-color: #bbbbff; + color: black; + border: 1px outset #ddddc0; + text-align: center; + white-space: nowrap; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + margin-top: 8px; + background: url(images/tabletitlelight.png) 0 0 repeat: x !important; +} + + +globalOperationsPanel .control:visited { + min-width: 120px; + margin: 4px 0 0 4px !important; + padding: 2px; + overflow: hidden; + font-weight: bold; + background-color: #bbbbff; + color: black; + border: 1px outset #ddddc0; + text-align: center; + white-space: nowrap; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + margin-top: 8px; + background: url(images/tabletitlelight.png) 0 0 repeat: x !important; +} + +globalOperationsPanel .control:hover { + min-width: 120px; + margin: 4px 0 0 4px !important; + padding: 2px; + overflow: hidden; + font-weight: bold; + background-color: #003; + color: #f60; + border: 1px outset #fff; + text-align: center; + white-space: nowrap; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + margin-top: 8px; + background: url(images/tabletitlelight.png) 0 0 repeat: x !important; +} .header { -moz-border-radius: 4px; -khtml-border-radius: 4px; @@ -265,4 +330,29 @@ select { min-width: 270px; font-size: 8pt; max-height: 24px; +} + +a:link{ + color: #007; + text-decoration: none; + font-weight: bold; + word-wrap: break-word; +} + +a:visited{ + color: #606; + text-decoration: none; + font-weight: bold; +} + +a:hover{ + color: #f60; + text-decoration: underline; + font-weight: bold; +} + +a:active{ + color: #f93; + text-decoration: underline; + font-weight: bold; } \ No newline at end of file diff --git a/installer/resources/themes/console/snark.css b/installer/resources/themes/console/snark.css index b0f30c627..bbac3f940 100644 --- a/installer/resources/themes/console/snark.css +++ b/installer/resources/themes/console/snark.css @@ -117,6 +117,7 @@ table { padding: 0px; border-width: 0px; border-spacing: 0px; + background-color: #f9f; } th { diff --git a/router/java/src/net/i2p/router/JobQueue.java b/router/java/src/net/i2p/router/JobQueue.java index f14cb5146..43659a4d2 100644 --- a/router/java/src/net/i2p/router/JobQueue.java +++ b/router/java/src/net/i2p/router/JobQueue.java @@ -608,29 +608,29 @@ public class JobQueue { StringBuilder buf = new StringBuilder(32*1024); buf.append("

JobQueue

"); - buf.append("# runners: ").append(numRunners).append(" [states="); + buf.append("
# runners: ").append(numRunners).append(" [states="); if (states != null) for (int i = 0; i < states.length; i++) buf.append(states[i]).append(" "); - buf.append("]
\n"); + buf.append("]

\n"); long now = _context.clock().now(); - buf.append("# active jobs: ").append(activeJobs.size()).append("
    \n"); + buf.append("
    # active jobs: ").append(activeJobs.size()).append("
      \n"); for (int i = 0; i < activeJobs.size(); i++) { Job j = (Job)activeJobs.get(i); buf.append("
    1. [started ").append(now-j.getTiming().getStartAfter()).append("ms ago]: "); buf.append(j.toString()).append("
    2. \n"); } buf.append("
    \n"); - buf.append("# just finished jobs: ").append(justFinishedJobs.size()).append("
      \n"); + buf.append("
      # just finished jobs: ").append(justFinishedJobs.size()).append("
        \n"); for (int i = 0; i < justFinishedJobs.size(); i++) { Job j = (Job)justFinishedJobs.get(i); buf.append("
      1. [finished ").append(now-j.getTiming().getActualEnd()).append("ms ago]: "); buf.append(j.toString()).append("
      2. \n"); } buf.append("
      \n"); - buf.append("# ready/waiting jobs: ").append(readyJobs.size()).append(" (lots of these mean there's likely a big problem)
        \n"); + buf.append("
        # ready/waiting jobs: ").append(readyJobs.size()).append(" (lots of these mean there's likely a big problem)
          \n"); for (int i = 0; i < readyJobs.size(); i++) { Job j = (Job)readyJobs.get(i); buf.append("
        1. [waiting "); @@ -641,7 +641,7 @@ public class JobQueue { buf.append("
        \n"); out.flush(); - buf.append("# timed jobs: ").append(timedJobs.size()).append("
          \n"); + buf.append("
          # timed jobs: ").append(timedJobs.size()).append("
            \n"); TreeMap ordered = new TreeMap(); for (int i = 0; i < timedJobs.size(); i++) { Job j = (Job)timedJobs.get(i); @@ -653,7 +653,7 @@ public class JobQueue { buf.append("
          1. ").append(j.getName()).append(" in "); buf.append(DataHelper.formatDuration(time)).append("
          2. \n"); } - buf.append("
          \n"); + buf.append("
\n"); out.write("\n"); out.flush(); diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 40028c0e0..67b9de3fe 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 19; + public final static long BUILD = 20; /** for example "-test" */ public final static String EXTRA = ""; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java index 1c164188f..dad07d282 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java @@ -494,8 +494,8 @@ public class TunnelPoolManager implements TunnelManagerFacade { processed += cfg.getProcessedMessagesCount(); } out.write("\n"); - out.write("
Inactive participating tunnels: " + inactive + "
\n"); - out.write("Lifetime bandwidth usage: " + DataHelper.formatSize(processed*1024) + "B

\n"); + out.write("
Inactive participating tunnels: " + inactive + "
\n"); + out.write("
Lifetime bandwidth usage: " + DataHelper.formatSize(processed*1024) + "B
\n"); renderPeers(out); } @@ -524,7 +524,7 @@ public class TunnelPoolManager implements TunnelManagerFacade { if (info.getLength() > maxLength) maxLength = info.getLength(); } - out.write(""); + out.write("
DirectionExpirationUsageGateway
"); if (maxLength > 3) { out.write(""); @@ -573,19 +573,19 @@ public class TunnelPoolManager implements TunnelManagerFacade { if (in != null) { List pending = in.listPending(); if (pending.size() > 0) - out.write("
Build in progress: " + pending.size() + " inbound

\n"); + out.write("
Build in progress: " + pending.size() + " inbound
\n"); live += pending.size(); } if (outPool != null) { List pending = outPool.listPending(); if (pending.size() > 0) - out.write("
Build in progress: " + pending.size() + " outbound

\n"); + out.write("
Build in progress: " + pending.size() + " outbound
\n"); live += pending.size(); } if (live <= 0) - out.write("
No tunnels, waiting for the grace period to end.

\n"); - out.write("
Lifetime bandwidth usage: " + DataHelper.formatSize(processedIn*1024) + "B in, " + - DataHelper.formatSize(processedOut*1024) + "B out

"); + out.write("
NNo tunnels; waiting for the grace period to end.
\n"); + out.write("
Lifetime bandwidth usage: " + DataHelper.formatSize(processedIn*1024) + "
"); } private void renderPeers(Writer out) throws IOException {
In/OutExpiryUsageGatewayParticipants