package org.rhq.enterprise.client.utility;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import jline.Completor;
import jline.ConsoleReader;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.rhq.scripting.CodeCompletion;
public class CodeCompletionCompletorWrapper implements Completor {
private static final Log LOG = LogFactory.getLog(CodeCompletionCompletorWrapper.class);
private CodeCompletion completion;
private ChangeRegisteringPrintWriter output;
private ConsoleReader consoleReader;
public CodeCompletionCompletorWrapper(CodeCompletion completion, PrintWriter output, ConsoleReader consoleReader) {
this.completion = completion;
this.output = new ChangeRegisteringPrintWriter(output);
this.consoleReader = consoleReader;
}
@Override
public int complete(String buffer, int cursor, List candidates) {
String start = this.consoleReader.getCursorBuffer().getBuffer().toString();
output.setChanged(false);
int ret = completion.complete(output, buffer, cursor, candidates);
if (output.isChanged()) {
try {
output.flush();
consoleReader.printNewline();
consoleReader.drawLine();
} catch (IOException e) {
LOG.debug("Failed to draw a console reader line.", e);
}
}
return ret;
}
}