private Ansi moveDownToSkipPrompt() { return ansi() .cursorDown(1) .cursorLeft(PROMPT.length()); }
private void updateAnsiProgress(String imageId, String status, String progressMessage) { Map<String,Integer> imgLineMap = imageLines.get(); Integer line = imgLineMap.get(imageId); int diff = 0; if (line == null) { line = imgLineMap.size(); imgLineMap.put(imageId, line); } else { diff = imgLineMap.size() - line; } if (diff > 0) { print(ansi().cursorUp(diff).eraseLine(Ansi.Erase.ALL).toString()); } // Status with progress bars: (max length = 11, hence pad to 11) // Extracting // Downloading String progress = progressMessage != null ? progressMessage : ""; String msg = ansi() .fg(COLOR_PROGRESS_ID).a(imageId).reset().a(": ") .fg(COLOR_PROGRESS_STATUS).a(StringUtils.rightPad(status,11) + " ") .fg(COLOR_PROGRESS_BAR).a(progress).toString(); println(msg); if (diff > 0) { // move cursor back down to bottom print(ansi().cursorDown(diff - 1).toString()); } }
private Ansi moveDownToSkipPrompt() { return ansi() .cursorDown(1) .cursorLeft(PROMPT.length()); }
private void positionCursorAt(Cursor position, Ansi ansi) { if (writeCursor.row == position.row) { if (writeCursor.col == position.col) { return; } if (writeCursor.col < position.col) { ansi.cursorRight(position.col - writeCursor.col); } else { ansi.cursorLeft(writeCursor.col - position.col); } } else { if (writeCursor.col > 0) { ansi.cursorLeft(writeCursor.col); } if (writeCursor.row < position.row) { ansi.cursorUp(position.row - writeCursor.row); } else { ansi.cursorDown(writeCursor.row - position.row); } if (position.col > 0) { ansi.cursorRight(position.col); } } writeCursor.copyFrom(position); }