From 93b37de367b368cd417ad85ba3a6be34daa27ad0 Mon Sep 17 00:00:00 2001 From: Koen Aers Date: Mon, 6 Oct 2014 18:47:06 +0200 Subject: [PATCH] JBIDE-18179: Implement CursorDown --- .../aesh/core/internal/ansi/CursorDown.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/plugins/org.jboss.tools.aesh.core/src/org/jboss/tools/aesh/core/internal/ansi/CursorDown.java b/plugins/org.jboss.tools.aesh.core/src/org/jboss/tools/aesh/core/internal/ansi/CursorDown.java index 6d5734d39..248819f20 100644 --- a/plugins/org.jboss.tools.aesh.core/src/org/jboss/tools/aesh/core/internal/ansi/CursorDown.java +++ b/plugins/org.jboss.tools.aesh.core/src/org/jboss/tools/aesh/core/internal/ansi/CursorDown.java @@ -6,15 +6,34 @@ */ package org.jboss.tools.aesh.core.internal.ansi; - +import org.jboss.tools.aesh.core.document.Document; public class CursorDown extends AbstractCommand { - public CursorDown(String arguments) {} + private int amount = 1; + + public CursorDown(String arguments) { + if (!"".equals(arguments)) { + amount = Integer.valueOf(arguments); + } + } @Override public CommandType getType() { return CommandType.CURSOR_DOWN; } + public void handle(Document document) { + int currentOffset = document.getCursorOffset(); + int currentLine = document.getLineOfOffset(currentOffset); + int newLine = currentLine + amount; + int lastLine = document.getLineOfOffset(document.getLength()); + if (newLine <= lastLine) { + int currentColumn = Math.min( + currentOffset - document.getLineOffset(currentLine), + document.getLineLength(newLine)); + int newOffset = document.getLineOffset(newLine) + currentColumn; + document.moveCursorTo(newOffset); + } + } }