}
});
final Console exampleConsole = new Console(builder.create());
final ConsoleCommand test = new ConsoleCommand(exampleConsole) {
@Override
protected void afterAttach() throws IOException {
if(!hasRedirectOut()) {
console.pushToStdOut(ANSI.getAlternateBufferScreen());
}
readFromFile();
//detach after init if hasRedirectOut()
if(hasRedirectOut()) {
detach();
}
}
@Override
protected void afterDetach() throws IOException {
if(!hasRedirectOut())
console.pushToStdOut(ANSI.getMainBufferScreen());
}
private void readFromFile() throws IOException {
if(getConsoleOutput().getStdOut() != null &&
getConsoleOutput().getStdOut().length() > 0) {
console.pushToStdOut("FROM STDOUT: "+getConsoleOutput().getStdOut());
}
else
console.pushToStdOut("here should we present some text... press 'q' to quit");
}
@Override
public void processOperation(Operation operation) throws IOException {
if(operation.getInput()[0] == 'q') {
detach();
}
else if(operation.getInput()[0] == 'a') {
readFromFile();
}
else {
}
}
};
Completion completer = new Completion() {
@Override
public void complete(CompleteOperation co) {
// very simple completor
List<String> commands = new ArrayList<String>();
if(co.getBuffer().equals("fo") || co.getBuffer().equals("foo")) {
commands.add("foo");
commands.add("foobaa");
commands.add("foobar");
commands.add("foobaxxxxxx");
commands.add("foobbx");
commands.add("foobcx");
commands.add("foobdx");
}
if(co.getBuffer().equals("p")) {
commands.add("profile=foo");
co.setOffset(0);
}
/*
if(co.getBuffer().equals("p")) {
commands.add("profile=bar");
co.setOffset(0);
}
*/
if(co.getBuffer().equals("profile="))
commands.add("profile=foo");
if(co.getBuffer().equals("profile="))
commands.add("profile=bar");
if(co.getBuffer().equals("--")) {
commands.add("--help-");
}
if("--help-me".startsWith(co.getBuffer())) {
commands.add("--help-me");
}
if(co.getBuffer().equals("fooba")) {
commands.add("foobaa");
commands.add("foobar");
commands.add("foobaxxxxxx");
}
if(co.getBuffer().equals("foobar")) {
commands.add("foobar");
}
if(co.getBuffer().equals("bar")) {
commands.add("bar/");
}
if(co.getBuffer().equals("h")) {
commands.add("help.history");
commands.add("help");
co.setOffset(0);
}
if(co.getBuffer().equals("help")) {
commands.add("help.history");
commands.add("help");
}
if(co.getBuffer().equals("help.")) {
commands.add("help.history");
}
if(co.getBuffer().equals("deploy")) {
commands.add("deploy /home/blabla/foo/bar/alkdfe/en/to/tre");
}
if(co.getBuffer().equals("testing")) {
commands.add("testing YAY");
}
co.setCompletionCandidates(commands);
}
};
exampleConsole.addCompletion(completer);
final ConsoleOutput line;
final ConsoleCallback consoleCallback = new ConsoleCallback() {
@Override
public int readConsoleOutput(ConsoleOutput output) throws IOException{
//To change body of implemented methods use File | Settings | File Templates.
exampleConsole.pushToStdOut("======>\"" + output.getBuffer() + "\"\n");
if(masking) {
exampleConsole.pushToStdOut("got password: "+output.getBuffer()+", stopping masking");
masking = false;
exampleConsole.setPrompt(prompt);
}
else if (output.getBuffer().equalsIgnoreCase("quit") || output.getBuffer().equalsIgnoreCase("exit") ||
output.getBuffer().equalsIgnoreCase("reset")) {
exampleConsole.stop();
}
else if(output.getBuffer().equalsIgnoreCase("password")) {
masking = true;
exampleConsole.setPrompt(new Prompt("password: ", (char) 0));
}
else if(output.getBuffer().startsWith("blah")) {
exampleConsole.pushToStdErr("blah. command not found.\n");
exampleConsole.pushToStdOut("BAH"+ Config.getLineSeparator());
}
else if(output.getBuffer().equals("clear"))
exampleConsole.clear();
else if(output.getBuffer().startsWith("man")) {
//exampleConsole.attachProcess(test);
test.attach(output);
}
else if(output.getBuffer().startsWith("login")) {
exampleConsole.setConsoleCallback(passwordCallback);
exampleConsole.setPrompt(new Prompt("Username: "));
}