Skip to content
Snippets Groups Projects
Commit 70060a9e authored by Ludovic Apvrille's avatar Ludovic Apvrille
Browse files

Update on interact

parent edb7c6e6
No related branches found
No related tags found
No related merge requests found
...@@ -64,6 +64,7 @@ public class Terminal { ...@@ -64,6 +64,7 @@ public class Terminal {
private Vector<String> buffer; private Vector<String> buffer;
private int bufferPointer ; private int bufferPointer ;
private int cursorPosition;
private int promptLength = 0; private int promptLength = 0;
private int maxbufferSize = MAX_BUFFER_SIZE; private int maxbufferSize = MAX_BUFFER_SIZE;
private TerminalProviderInterface terminalProvider; private TerminalProviderInterface terminalProvider;
...@@ -89,12 +90,16 @@ public class Terminal { ...@@ -89,12 +90,16 @@ public class Terminal {
char x; char x;
int val = 0; int val = 0;
cursorPosition = 0;
printPrompt(cpt); printPrompt(cpt);
String currentBuf = ""; String currentBuf = "";
sequence = null; sequence = null;
long timeSeq = 0; long timeSeq = 0;
try { try {
while(val != 3) { while(val != 3) {
val = (RawConsoleInput.read(true)); val = (RawConsoleInput.read(true));
...@@ -147,9 +152,26 @@ public class Terminal { ...@@ -147,9 +152,26 @@ public class Terminal {
myPrint(currentBuf); myPrint(currentBuf);
sequence = null; sequence = null;
val = -1; val = -1;
// DEL
//TraceManager.addDev("DEL");
} // BACKWARD
} else if ((sequence.charAt(0) == 91) && (sequence.charAt(1) == 68)) {
//System.out.println("DOWN");
backward();
sequence = null;
val = -1;
// FORWARD
} else if ((sequence.charAt(0) == 91) && (sequence.charAt(1) == 67)) {
//System.out.println("DOWN");
forward(currentBuf);
sequence = null;
val = -1;
// DEL
//TraceManager.addDev("DEL");
}
} }
if ((sequence != null) && (sequence.length() == 3)) { if ((sequence != null) && (sequence.length() == 3)) {
...@@ -163,19 +185,20 @@ public class Terminal { ...@@ -163,19 +185,20 @@ public class Terminal {
//TraceManager.addDev("DEL"); //TraceManager.addDev("DEL");
} }
} else if ((sequence != null) && (sequence.length() > 4)) {
} }
// Usual CHAR // Usual CHAR
if ((sequence == null) && (val != -1)) { if ((sequence == null) && (val != -1)) {
if (val == CR) { if (val == CR) {
cursorPosition = 0;
if (currentBuf.length() == 0) { if (currentBuf.length() == 0) {
myPrint("\n"); myPrint("\n");
printPrompt(cpt); printPrompt(cpt);
} else { } else {
cpt++; cpt++;
//myPrint("\n"); if (!(os.startsWith("mac"))) {
myPrint("\n");
}
addToBuffer(currentBuf); addToBuffer(currentBuf);
return currentBuf; return currentBuf;
} }
...@@ -185,7 +208,7 @@ public class Terminal { ...@@ -185,7 +208,7 @@ public class Terminal {
if ((val == BACKSPACE) || (val == DEL)) { if ((val == BACKSPACE) || (val == DEL)) {
currentBuf = del(currentBuf); currentBuf = del(currentBuf);
//TAB //TAB
} else if (val == TAB) { } else if (val == TAB) {
System.out.println("TAB"); System.out.println("TAB");
if (terminalProvider != null) { if (terminalProvider != null) {
...@@ -194,10 +217,18 @@ public class Terminal { ...@@ -194,10 +217,18 @@ public class Terminal {
printPrompt(cpt); printPrompt(cpt);
} }
} }
// Regular character
} else if (val >= 32) { } else if (val >= 32) {
//System.out.print("" + x + "(val=" + val + ");"); //System.out.print("" + x + "(val=" + val + ");");
myPrint("" + x); if (cursorPosition == currentBuf.length()) {
currentBuf += x; myPrint("" + x);
currentBuf += x;
} else {
currentBuf = currentBuf.substring(0,cursorPosition) + x + currentBuf.substring(cursorPosition, currentBuf.length());
myPrint("" + x + currentBuf.substring(cursorPosition, currentBuf.length()));
}
cursorPosition ++;
} }
} }
...@@ -275,7 +306,23 @@ public class Terminal { ...@@ -275,7 +306,23 @@ public class Terminal {
public void printPrompt(int cpt) { public void printPrompt(int cpt) {
String p = "" + cpt + "> "; String p = "" + cpt + "> ";
promptLength = p.length(); promptLength = p.length();
System.out.print(p); System.out.print(p);
}
private void backward() {
if (cursorPosition == 0) {
return;
}
System.out.print("\033[1D");
cursorPosition --;
}
private void forward(String currentBuf) {
if (cursorPosition == currentBuf.length()) {
return ;
}
System.out.print("\033[1C");
cursorPosition ++;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment