Improvement: add a text ui who display info in a single line

This commit is contained in:
Laurent Clouet
2014-11-20 17:50:23 +00:00
parent 422a9e74c8
commit c593b23bf8
3 changed files with 75 additions and 2 deletions

View File

@@ -525,7 +525,7 @@ public class Server extends Thread implements HostnameVerifier, X509TrustManager
fos.close(); fos.close();
inStrm.close(); inStrm.close();
long end = new Date().getTime(); long end = new Date().getTime();
System.out.println(String.format("File downloaded at %.1f kB/s", ((float) (size / 1000)) / ((float) (end - start) / 1000))); this.log.debug(String.format("File downloaded at %.1f kB/s", ((float) (size / 1000)) / ((float) (end - start) / 1000)));
this.lastRequestTime = new Date().getTime(); this.lastRequestTime = new Date().getTime();
return 0; return 0;
} }

View File

@@ -0,0 +1,60 @@
package com.sheepit.client.standalone;
import com.sheepit.client.Gui;
public class GuiTextOneLine implements Gui {
private int rendered;
private int remaining;
private String status;
private String line;
public GuiTextOneLine() {
rendered = 0;
remaining = 0;
status = "";
line = "";
}
@Override
public void start() {
}
@Override
public void stop() {
}
@Override
public void status(String msg_) {
status = msg_;
updateLine();
}
@Override
public void error(String msg_) {
status = "Error " + msg_;
updateLine();
}
@Override
public void AddFrameRendered() {
rendered += 1;
updateLine();
}
@Override
public void framesRemaining(int n_) {
remaining = n_;
updateLine();
}
private void updateLine() {
int charToRemove = line.length();
System.out.print("\r");
line = String.format("%s | Frame rendered: %d remaining: %d", status, rendered, remaining);
System.out.print(line);
for (int i = line.length(); i <= charToRemove; i++) {
System.out.print(" ");
}
}
}

View File

@@ -80,6 +80,9 @@ public class Worker {
@Option(name = "-extras", usage = "Extras data push on the authentication request", required = false) @Option(name = "-extras", usage = "Extras data push on the authentication request", required = false)
private String extras = null; private String extras = null;
@Option(name = "-ui", usage = "Specify the user interface to you use, default 'text', available 'oneline', 'text'", required = false)
private String ui_type = "text";
@Option(name = "--version", usage = "Display application version", required = false) @Option(name = "--version", usage = "Display application version", required = false)
private boolean display_version = false; private boolean display_version = false;
@@ -248,7 +251,17 @@ public class Worker {
Log.getInstance(config).debug("client version " + config.getJarVersion()); Log.getInstance(config).debug("client version " + config.getJarVersion());
Gui gui = new GuiText(); Gui gui;
if (ui_type.equals("oneline")) {
if (config.getPrintLog()) {
System.out.println("OneLine ui can not be used if the verbose mode is enable");
System.exit(2);
}
gui = new GuiTextOneLine();
}
else {
gui = new GuiText();
}
Client cli = new Client(gui, config, server); Client cli = new Client(gui, config, server);
ShutdownHook hook = new ShutdownHook(cli); ShutdownHook hook = new ShutdownHook(cli);