private void wrapLines() { if (myCursorX >= myTerminalWidth) { myCursorX = 0; // clear the end of the line in the text buffer myTerminalTextBuffer.getLine(myCursorY - 1).deleteCharacters(myTerminalWidth); if (isAutoWrap()) { myTerminalTextBuffer.getLine(myCursorY - 1).setWrapped(true); myCursorY += 1; } } }
public void eraseInLine(int arg) { myTerminalTextBuffer.lock(); try { switch (arg) { case 0: if (myCursorX < myTerminalWidth) { myTerminalTextBuffer.eraseCharacters(myCursorX, myTerminalWidth, myCursorY - 1); } // delete to the end of line : line is no more wrapped myTerminalTextBuffer.getLine(myCursorY - 1).setWrapped(false); break; case 1: final int extent = Math.min(myCursorX + 1, myTerminalWidth); myTerminalTextBuffer.eraseCharacters(0, extent, myCursorY - 1); break; case 2: myTerminalTextBuffer.eraseCharacters(0, myTerminalWidth, myCursorY - 1); break; default: LOG.error("Unsupported erase in line mode:" + arg); break; } } finally { myTerminalTextBuffer.unlock(); } }
@Override public void horizontalTab() { if (myCursorX >= myTerminalWidth) { return; } int length = myTerminalTextBuffer.getLine(myCursorY - 1).getText().length(); int stop = myTabulator.nextTab(myCursorX); myCursorX = Math.max(myCursorX, length); if (myCursorX < stop) { char[] chars = new char[stop - myCursorX]; Arrays.fill(chars, CharUtils.EMPTY_CHAR); doWriteString(new String(chars)); } else { myCursorX = stop; } myDisplay.setCursor(myCursorX, myCursorY); }
private void clearBuffer() { if (!myTerminalTextBuffer.isUsingAlternateBuffer()) { myTerminalTextBuffer.clearHistory(); if (myCoordsAccessor != null && myCoordsAccessor.getY() > 0) { TerminalLine line = myTerminalTextBuffer.getLine(myCoordsAccessor.getY() - 1); myTerminalTextBuffer.clearAll(); myCoordsAccessor.setY(0); myCursor.setY(1); myTerminalTextBuffer.addLine(line); } updateScrolling(); myClientScrollOrigin = myBoundedRangeModel.getValue(); } }