Fixes and enhancements.

- Added ability to change inner border width of console window.
- Fixed a nasty bug that prevented key press handling.
- Reset now clears the accumulator and index registers.
This commit is contained in:
Seth Morabito committed 2012-10-14 00:25:03 -07:00
1 parent e012d97bb3
commit c214cc9b43
10 files changed
+2682 -2504

No files matched your search

+52 -15
View File
@@ -6,6 +6,7 @@ import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import com.grahamedgecombe.jterminal.JTerminal;
import com.grahamedgecombe.jterminal.vt100.Vt100TerminalModel;
import javax.swing.*;
import javax.swing.border.BevelBorder;
@@ -18,11 +19,20 @@ import javax.swing.border.Border;
public class Console extends JTerminal implements KeyListener, MouseListener {
private static final int DEFAULT_COLUMNS = 80;
private static final int DEFAULT_ROWS = 24;
private static final int DEFAULT_BORDER_WIDTH = 10;
private boolean hasInput = false;
private char keyBuffer;
public Console() {
super();
public Console() {
this(DEFAULT_COLUMNS, DEFAULT_ROWS);
}
public Console(int columns, int rows) {
super(new Vt100TerminalModel(columns, rows));
setBorderWidth(DEFAULT_BORDER_WIDTH);
addKeyListener(this);
addMouseListener(this);
Border emptyBorder = BorderFactory.createEmptyBorder(5, 5, 5, 0);
@@ -31,6 +41,11 @@ public class Console extends JTerminal implements KeyListener, MouseListener {
this.setBorder(compoundBorder);
}
/**
* Reset the console. This will cause the console to be cleared and the cursor returned to the
* home position.
*
*/
public void reset() {
getModel().clear();
getModel().setCursorColumn(0);
@@ -39,28 +54,50 @@ public class Console extends JTerminal implements KeyListener, MouseListener {
this.hasInput = false;
}
public void keyTyped(KeyEvent keyEvent) {
keyEvent.consume();
}
public void keyPressed(KeyEvent keyEvent) {
keyBuffer = keyEvent.getKeyChar();
hasInput = true;
System.out.println("Key Pressed (0x" + Integer.toString((int)keyBuffer, 16) + ") : " + keyBuffer);
keyEvent.consume();
}
/**
* Returns true if a key has been pressed since the last time input was read.
*
* @return
*/
public boolean hasInput() {
return hasInput;
}
/**
* Handle a Key Typed event.
*
* @param keyEvent The key event.
*/
public void keyTyped(KeyEvent keyEvent) {
keyEvent.consume();
}
/**
* Handle a Key Press event.
*
* @param keyEvent The key event.
*/
public void keyPressed(KeyEvent keyEvent) {
keyBuffer = keyEvent.getKeyChar();
hasInput = true;
keyEvent.consume();
}
/**
* Read the most recently typed key from the single-char input buffer.
*
* @return The character typed.
*/
public char readInputChar() {
hasInput = false;
return this.keyBuffer;
}
/**
* Handle a key release event.
*
* @param keyEvent The key event.
*/
public void keyReleased(KeyEvent keyEvent) {
keyEvent.consume();
}