Test output for honu
Testing time: 0.0s
CHICKEN_INSTALL_PREFIX=/root/src/salmonella/salmonella-4.5.0/repo CHICKEN_INCLUDE_PATH=/root/src/salmonella/salmonella-4.5.0/repo/share/chicken CHICKEN_REPOSITORY=/root/src/salmonella/salmonella-4.5.0/repo/lib/chicken/5 /usr/local/chicken-4.5.0/bin/csi -script run.scm import java |.| applet |.| Applet ; import java |.| awt .* ; import java |.| io .* ; public class Toplevel extends Applet implements SchanReader (#%braces Terminal myterminal ; public void init (#%parens) (#%braces myterminal = new Terminal (#%parens) ; HalServer |.| registerReader (#%parens this) ; resize (#%parens 800 , 400) ; GridBagLayout gb = new GridBagLayout (#%parens) ; setLayout (#%parens gb) ; GridBagConstraints cn = new GridBagConstraints (#%parens) ; cn |.| weightx = 1 ; cn |.| weighty = 1 ; cn |.| fill = cn |.| BOTH ; gb |.| setConstraints (#%parens myterminal , cn) ; add (#%parens myterminal) ; validate (#%parens) ; show (#%parens) ; myterminal |.| init (#%parens) ; myterminal |.| write (#%parens "Hal Applet Compiled by MLj 0.2 " , 0) ;) public void handlechan (#%parens String thedata) (#%braces myterminal |.| write (#%parens thedata , 0) ;) public void stop (#%parens) (#%braces if (#%parens Terminal |.| computeThread != null && Terminal |.| computeThread |.| isAlive (#%parens)) (#%braces Terminal |.| computeThread |.| stop (#%parens) ; myterminal |.| write (#%parens "**background computation stopped** " , 0) ;) Terminal |.| computeThread = null ;) public void start (#%parens) (#%braces Terminal |.| computeThread = null ;)) class Terminal extends Canvas (#%braces public static Thread computeThread = null ; static final boolean DEBUG = false ; static final int OUTF_RAW = 1 << 0 ; static final int OUTF_PARTIAL = 1 << 1 ; static final int STYLE_PLAIN = 0 ; static final int STYLE_INVERSE = 1 << 0 ; static final int STYLE_BOLD = 1 << 1 ; static final int STYLE_ITALIC = 1 << 2 ; static final int STYLE_UNDERSCORE = 1 << 3 ; static final int INNER_SIZE = 4 ; static final int ACTIVE_SIZE = 2 ; static final int BORDER_WIDTH = (#%parens INNER_SIZE + ACTIVE_SIZE) ; static final int BORDER_HEIGHT = (#%parens INNER_SIZE + ACTIVE_SIZE) ; int fontsize = - 1 ; Color defBackground , defForeground ; Toolkit toolkit ; Font fontPlain , fontBold , fontItalic , fontBoldItalic ; int charWidth , charHeight ; int fontAscent , fontDescent ; int numRows , numCols ; int curRow , curCol ; int curStyle = STYLE_PLAIN ; int regionTop , regionBottom , regionLeft , regionRight ; int lastRow , lastCol ; int dirtyTop = - 1 , dirtyBottom = - 1 ; int scrollCount = 0 ; boolean overChar = false ; boolean cursorVisible = true ; char page (#%brackets) (#%brackets) ; int style (#%brackets) (#%brackets) ; public Terminal (#%parens) (#%braces fontsize = 12 ;) public void init (#%parens) (#%braces Graphics g = getGraphics (#%parens) ; Font f = g |.| getFont (#%parens) ; int size = f |.| getSize (#%parens) ; if (#%parens fontsize > 0) size = fontsize ; fontPlain = f ; try (#%braces fontPlain = new Font (#%parens "Courier" , Font |.| PLAIN , size) ;) finally (#%braces) if (#%parens fontPlain == null) fontPlain = f ; if (#%parens DEBUG) (#%braces System |.| out |.| println (#%parens "StdFont name=" + fontPlain |.| getName (#%parens) + " size=" + fontPlain |.| getSize (#%parens) + " style=" + fontPlain |.| getStyle (#%parens)) ;) fontBold = fontPlain ; try (#%braces fontBold = new Font (#%parens fontPlain |.| getName (#%parens) , Font |.| BOLD , fontPlain |.| getSize (#%parens)) ;) finally (#%braces) fontItalic = fontBoldItalic = fontBold ; try (#%braces fontItalic = new Font (#%parens fontPlain |.| getName (#%parens) , Font |.| ITALIC , fontPlain |.| getSize (#%parens)) ;) finally (#%braces) try (#%braces fontBoldItalic = new Font (#%parens fontPlain |.| getName (#%parens) , Font |.| BOLD + Font |.| ITALIC , fontPlain |.| getSize (#%parens)) ;) finally (#%braces) if (#%parens DEBUG) (#%braces System |.| out |.| println (#%parens "BldFont name=" + fontBold |.| getName (#%parens) + " size=" + fontBold |.| getSize (#%parens) + " style=" + fontBold |.| getStyle (#%parens)) ; System |.| out |.| println (#%parens "ItlFont name=" + fontItalic |.| getName (#%parens) + " size=" + fontItalic |.| getSize (#%parens) + " style=" + fontItalic |.| getStyle (#%parens)) ;) g |.| setFont (#%parens fontPlain) ; setFont (#%parens fontPlain) ; defBackground = getBackground (#%parens) ; defForeground = getForeground (#%parens) ; toolkit = getToolkit (#%parens) ; screenInit (#%parens) ; repaint (#%parens) ;) FontMetrics get_metrics (#%parens boolean install) (#%braces Graphics g ; FontMetrics m ; Dimension d ; g = getGraphics (#%parens) ; m = g |.| getFontMetrics (#%parens fontPlain) ; if (#%parens install) (#%braces charWidth = m |.| charWidth (#%parens #\W) ; charHeight = m |.| getHeight (#%parens) ; fontAscent = m |.| getAscent (#%parens) ; fontDescent = m |.| getDescent (#%parens) ;) return m ;) public Dimension minimumSize (#%parens) (#%braces return (#%parens new Dimension (#%parens 800 , 400)) ;) public Dimension preferredSize (#%parens) (#%braces return minimumSize (#%parens) ;) public void screenInit (#%parens) (#%braces Dimension d ; int rows , cols ; get_metrics (#%parens true) ; if (#%parens DEBUG) System |.| out |.| println (#%parens "Initializing screen...") ; d = size (#%parens) ; if (#%parens DEBUG) System |.| out |.| println (#%parens "size: " + d + " bh: " + BORDER_HEIGHT + "bw: " + BORDER_WIDTH + "cw:" + charWidth + " ch: " + charHeight) ; cols = (#%parens d |.| width - (#%parens BORDER_WIDTH * 2)) / charWidth ; rows = (#%parens d |.| height - (#%parens BORDER_HEIGHT * 2)) / charHeight ; if (#%parens cols < 4) cols = 4 ; if (#%parens rows < 2) rows = 2 ; if (#%parens numRows == rows && numCols == cols) return ; numRows = rows ; numCols = cols ; curCol = 0 ; curRow = 0 ; lastCol = 0 ; lastRow = 0 ; scrollCount = 0 ; setRegion (#%parens) ; if (#%parens DEBUG) System |.| out |.| println (#%parens "Width = " + d |.| width + ", Height = " + d |.| height) ; if (#%parens DEBUG) System |.| out |.| println (#%parens "Columns = " + numCols + ", Rows = " + numRows) ; page = new char (#%brackets numRows) (#%brackets numCols) ; style = new int (#%brackets numRows) (#%brackets numCols) ; for (#%parens int r = 0 ; r < numRows ; r ++) (#%braces for (#%parens int c = 0 ; c < numCols ; c ++) (#%braces page (#%brackets r) (#%brackets c) = #\space ; style (#%brackets r) (#%brackets c) = STYLE_PLAIN ;)) dirtyTop = 0 ; dirtyBottom = numRows - 1 ;) public int getCursorRow (#%parens) (#%braces return curRow ;) public int getCursorCol (#%parens) (#%braces return curCol ;) public int getNumRows (#%parens) (#%braces return numRows ;) public int getNumCols (#%parens) (#%braces return numCols ;) public void setCursorPos (#%parens int row , int col) (#%braces if (#%parens row < 0) row = 0 ; if (#%parens row >= numRows) row = numRows - 1 ; if (#%parens col < 0) col = 0 ; if (#%parens col >= numCols) col = numCols - 1 ; curRow = row ; curCol = col ;) public void setCursorVisible (#%parens boolean state) (#%braces cursorVisible = state ;) public boolean getCursorVisible (#%parens) (#%braces return cursorVisible ;) public void setRegion (#%parens) (#%braces regionTop = 0 ; regionBottom = numRows - 1 ; regionLeft = 0 ; regionRight = numCols - 1 ;) public void setRegion (#%parens int top , int bottom) (#%braces setRegion (#%parens top , bottom , 0 , numCols - 1) ;) public void setRegion (#%parens int top , int bottom , int left , int right) (#%braces if (#%parens top < 0) top = 0 ; if (#%parens top >= numRows) top = numRows - 1 ; if (#%parens bottom < 0) bottom = 0 ; if (#%parens bottom >= numRows) bottom = numRows - 1 ; if (#%parens top >= bottom - 2) (#%braces if (#%parens top > 2) top = 0 ; else bottom = numRows - 1 ;) if (#%parens left < 0) left = 0 ; if (#%parens left >= numCols) left = numCols - 1 ; if (#%parens right < 0) right = 0 ; if (#%parens right >= numCols) right = numCols - 1 ; if (#%parens left >= right - 2) (#%braces if (#%parens left > 2) left = 0 ; else right = numCols - 1 ;) regionTop = top ; regionBottom = bottom ; regionLeft = left ; regionRight = right ;) public int getRegionTop (#%parens) (#%braces return regionTop ;) public int getRegionBottom (#%parens) (#%braces return regionBottom ;) public int getRegionLeft (#%parens) (#%braces return regionLeft ;) public int getRegionRight (#%parens) (#%braces return regionRight ;) public void setStyle (#%parens int style) (#%braces curStyle = style ;) public int getStyle (#%parens) (#%braces return curStyle ;) public void setChar (#%parens char c) (#%braces page (#%brackets curRow) (#%brackets curCol) = c ; style (#%brackets curRow) (#%brackets curCol) = curStyle ;) public void setChar (#%parens char c , int row , int col) (#%braces page (#%brackets row) (#%brackets col) = c ; style (#%brackets row) (#%brackets col) = curStyle ;) public char getChar (#%parens) (#%braces return page (#%brackets curRow) (#%brackets curCol) ;) public char getChar (#%parens int row , int col) (#%braces return page (#%brackets row) (#%brackets col) ;) public int getCharStyle (#%parens) (#%braces return style (#%brackets curRow) (#%brackets curCol) ;) public int getCharStyle (#%parens int row , int col) (#%braces return style (#%brackets row) (#%brackets col) ;) Font get_style_font (#%parens int style) (#%braces switch (#%parens style & (#%parens STYLE_BOLD | STYLE_ITALIC)) (#%braces case STYLE_PLAIN : return fontPlain ; case STYLE_BOLD : return fontBold ; case STYLE_ITALIC : return fontItalic ; case STYLE_BOLD | STYLE_ITALIC : return fontBoldItalic ; default : return fontPlain ;)) void drawRowCol (#%parens Graphics g , int row , int col) (#%braces int x = (#%parens col * charWidth) + BORDER_WIDTH ; int y = (#%parens row * charHeight) + BORDER_HEIGHT ; g |.| setFont (#%parens get_style_font (#%parens style (#%brackets row) (#%brackets col))) ; if (#%parens (#%parens curRow != row |\|\|| curCol != col |\|\|| ! cursorVisible) ^ (#%parens (#%parens style (#%brackets row) (#%brackets col) & STYLE_INVERSE) == STYLE_INVERSE)) (#%braces g |.| clearRect (#%parens x , y , charWidth , charHeight) ; g |.| setColor (#%parens getForeground (#%parens)) ; g |.| drawChars (#%parens page (#%brackets row) , col , 1 , x , y + fontAscent) ;) else (#%braces g |.| setColor (#%parens getForeground (#%parens)) ; g |.| fillRect (#%parens x , y , charWidth , charHeight) ; g |.| setColor (#%parens getBackground (#%parens)) ; g |.| drawChars (#%parens page (#%brackets row) , col , 1 , x , y + fontAscent) ;) if (#%parens (#%parens style (#%brackets row) (#%brackets col) & STYLE_UNDERSCORE) != 0) (#%braces g |.| drawLine (#%parens x , y + fontAscent , x + charWidth - 1 , y + fontAscent) ;)) public void drawRow (#%parens Graphics g , int row) (#%braces int (#%brackets) rowStyles = style (#%brackets row) ; int col = 0 ; int y = BORDER_HEIGHT + (#%parens row * charHeight) ; if (#%parens rowStyles == null |\|\|| page (#%brackets row) == null) (#%braces System |.| out |.| println (#%parens "*** null entry at row " + row) ; return ;) while (#%parens col < numCols) (#%braces int first = col ; int cur_style = rowStyles (#%brackets col) ; while (#%parens col < numCols && cur_style == rowStyles (#%brackets col)) (#%braces col ++ ;) int x = BORDER_WIDTH + (#%parens first * charWidth) ; g |.| setFont (#%parens get_style_font (#%parens cur_style)) ; if (#%parens (#%parens cur_style & STYLE_INVERSE) == 0) (#%braces g |.| setColor (#%parens getBackground (#%parens)) ;) else (#%braces g |.| setColor (#%parens getForeground (#%parens)) ;) g |.| fillRect (#%parens x , y , (#%parens (#%parens col - first) * charWidth) , charHeight) ; if (#%parens (#%parens cur_style & STYLE_INVERSE) == 0) (#%braces g |.| setColor (#%parens getForeground (#%parens)) ;) else (#%braces g |.| setColor (#%parens getBackground (#%parens)) ;) g |.| drawChars (#%parens page (#%brackets row) , first , col - first , x , y + fontAscent) ; if (#%parens (#%parens cur_style & STYLE_UNDERSCORE) != 0) (#%braces g |.| drawLine (#%parens x , y + fontAscent , x + (#%parens (#%parens col - first) * charWidth) , y + fontAscent) ;)) if (#%parens cursorVisible && row == curRow) (#%braces if (#%parens DEBUG) System |.| out |.| println (#%parens "Drawing cursor: row=" + curRow + ", col=" + curCol) ; drawRowCol (#%parens g , curRow , curCol) ;)) public void screenRedraw (#%parens Graphics g , int top , int bot) (#%braces if (#%parens top < 0) top = 0 ; if (#%parens bot >= numRows) bot = numRows - 1 ; g |.| setFont (#%parens fontPlain) ; if (#%parens DEBUG) System |.| out |.| println (#%parens "Redrawing: " + top + " to " + bot) ; for (#%parens int i = top ; i <= bot ; i ++) (#%braces if (#%parens DEBUG) System |.| out |.| println (#%parens "Drawing: " + i + ", curRow: " + curRow) ; drawRow (#%parens g , i) ;) scrollCount = 0 ;) public void screenRedraw (#%parens Graphics g) (#%braces screenRedraw (#%parens g , 0 , numRows - 1) ;) public void screenClean (#%parens Graphics g) (#%braces if (#%parens DEBUG) System |.| out |.| println (#%parens "Cleaning screen: " + dirtyTop + " to " + dirtyBottom) ; if (#%parens dirtyTop >= 0 && dirtyBottom >= 0) (#%braces drawRowCol (#%parens g , lastRow , lastCol) ; screenRedraw (#%parens g , dirtyTop , dirtyBottom) ;) if (#%parens lastRow != curRow |\|\|| lastCol != curCol) (#%braces drawRowCol (#%parens g , lastRow , lastCol) ; drawRowCol (#%parens g , curRow , curCol) ;) dirtyTop = - 1 ; dirtyBottom = - 1 ; lastRow = curRow ; lastCol = curCol ; toolkit |.| sync (#%parens) ;) void screenDirty (#%parens int top , int bottom) (#%braces if (#%parens dirtyTop < 0 |\|\|| top < dirtyTop) dirtyTop = top ; if (#%parens bottom > dirtyBottom) dirtyBottom = bottom ;) public void screenScrollRegion (#%parens int top , int bottom , int amount) (#%braces if (#%parens top >= bottom) return ; if (#%parens amount < 0) (#%braces amount = - amount ; for (#%parens int i = top ; i < (#%parens bottom - amount + 1) ; i ++) (#%braces page (#%brackets i) = page (#%brackets i + amount) ; style (#%brackets i) = style (#%brackets i + amount) ;) for (#%parens int i = bottom - amount + 1 ; i < bottom + 1 ; i ++) (#%braces page (#%brackets i) = new char (#%brackets numCols) ; style (#%brackets i) = new int (#%brackets numCols) ; for (#%parens int j = 0 ; j < numCols ; j ++) (#%braces page (#%brackets i) (#%brackets j) = #\space ; style (#%brackets i) (#%brackets j) = STYLE_PLAIN ;)) screenDirty (#%parens top , bottom) ;) else if (#%parens amount > 0) (#%braces for (#%parens int i = bottom ; i >= top + amount ; i --) (#%braces page (#%brackets i) = page (#%brackets i - amount) ; style (#%brackets i) = style (#%brackets i - amount) ;) for (#%parens int i = top ; i < top + amount ; i ++) (#%braces page (#%brackets i) = new char (#%brackets numCols) ; style (#%brackets i) = new int (#%brackets numCols) ; for (#%parens int j = 0 ; j < numCols ; j ++) (#%braces page (#%brackets i) (#%brackets j) = #\space ; style (#%brackets i) (#%brackets j) = STYLE_PLAIN ;)) screenDirty (#%parens top , bottom) ;)) public void screenScroll (#%parens int amount) (#%braces screenScrollRegion (#%parens regionTop , regionBottom , amount) ;) public void screenClearEOL (#%parens) (#%braces for (#%parens int i = curCol ; i <= regionRight ; i ++) (#%braces page (#%brackets curRow) (#%brackets i) = #\space ; style (#%brackets curRow) (#%brackets i) = STYLE_PLAIN ;) screenDirty (#%parens curRow , curRow) ;) public void screenClearBOL (#%parens) (#%braces for (#%parens int i = regionLeft ; i <= curCol ; i ++) (#%braces page (#%brackets curRow) (#%brackets i) = #\space ; style (#%brackets curRow) (#%brackets i) = STYLE_PLAIN ;) screenDirty (#%parens curRow , curRow) ;) public void screenClearLine (#%parens) (#%braces for (#%parens int i = regionLeft ; i <= regionRight ; i ++) (#%braces page (#%brackets curRow) (#%brackets i) = #\space ; style (#%brackets curRow) (#%brackets i) = STYLE_PLAIN ;) screenDirty (#%parens curRow , curRow) ;) public void screenClearEOD (#%parens) (#%braces int left = curCol ; for (#%parens int j = curRow ; j <= regionBottom ; j ++) (#%braces for (#%parens int i = left ; i <= regionRight ; i ++) (#%braces page (#%brackets j) (#%brackets i) = #\space ; style (#%brackets j) (#%brackets i) = STYLE_PLAIN ;) left = regionLeft ;) screenDirty (#%parens curRow , regionBottom) ;) public void screenClearBOD (#%parens) (#%braces for (#%parens int j = regionTop ; j < curRow ; j ++) (#%braces for (#%parens int i = regionLeft ; i <= regionRight ; i ++) (#%braces page (#%brackets j) (#%brackets i) = #\space ; style (#%brackets j) (#%brackets i) = STYLE_PLAIN ;)) for (#%parens int i = regionLeft ; i < curCol ; i ++) (#%braces page (#%brackets curRow) (#%brackets i) = #\space ; style (#%brackets curRow) (#%brackets i) = STYLE_PLAIN ;) screenDirty (#%parens regionTop , curRow) ;) public void screenClear (#%parens) (#%braces for (#%parens int j = regionTop ; j <= regionBottom ; j ++) (#%braces for (#%parens int i = regionLeft ; i <= regionRight ; i ++) (#%braces page (#%brackets j) (#%brackets i) = #\space ; style (#%brackets j) (#%brackets i) = STYLE_PLAIN ;)) screenDirty (#%parens regionTop , regionBottom) ;) public synchronized void write (#%parens char (#%brackets) d , int off , int len , int flags) (#%braces if (#%parens DEBUG) (#%braces if (#%parens d == null) d = new char (#%brackets 0) ; System |.| out |.| println (#%parens "Write: " + new String (#%parens d , off , len)) ;) if (#%parens len == 1) (#%braces write (#%parens d (#%brackets off) , flags) ;) else if (#%parens len > 1) (#%braces while (#%parens len > 0) (#%braces int last_row = curRow ; boolean do_redraw ; if (#%parens (#%parens flags & OUTF_RAW) != 0) do_redraw = put_char (#%parens d (#%brackets off)) ; else do_redraw = put_std_char (#%parens d (#%brackets off)) ; if (#%parens do_redraw) (#%braces if (#%parens last_row < curRow) screenDirty (#%parens last_row , curRow) ; else screenDirty (#%parens curRow , last_row) ;) off ++ ; len -- ;) if (#%parens (#%parens flags & OUTF_PARTIAL) == 0) screenClean (#%parens getGraphics (#%parens)) ;) else if (#%parens (#%parens flags & OUTF_PARTIAL) == 0) screenClean (#%parens getGraphics (#%parens)) ;) public void write (#%parens String str , int flags) (#%braces write (#%parens str |.| toCharArray (#%parens) , 0 , str |.| length (#%parens) , flags) ;) public synchronized void write (#%parens char c , int flags) (#%braces int last_col = curCol , last_row = curRow ; boolean do_redraw ; if (#%parens (#%parens flags & OUTF_RAW) != 0) do_redraw = put_char (#%parens c) ; else do_redraw = put_std_char (#%parens c) ; if (#%parens do_redraw) (#%braces if (#%parens last_row < curRow) screenDirty (#%parens last_row , curRow) ; else screenDirty (#%parens curRow , last_row) ;) if (#%parens (#%parens flags & OUTF_PARTIAL) == 0) screenClean (#%parens getGraphics (#%parens)) ;) boolean put_char (#%parens char c) (#%braces if (#%parens curCol >= regionRight && ! overChar) (#%braces page (#%brackets curRow) (#%brackets curCol) = c ; style (#%brackets curRow) (#%brackets curCol) = curStyle ; curCol = regionRight ; overChar = true ;) else if (#%parens curCol >= regionRight && overChar) (#%braces overChar = false ; screenScroll (#%parens - 1) ; curRow = regionBottom ; curCol = 1 ; page (#%brackets curRow) (#%brackets 0) = c ; style (#%brackets curRow) (#%brackets 0) = curStyle ; screenDirty (#%parens regionBottom - 1 , regionBottom) ;) else (#%braces page (#%brackets curRow) (#%brackets curCol) = c ; style (#%brackets curRow) (#%brackets curCol) = curStyle ; curCol ++ ; overChar = false ;) return true ;) static final char CTRL_A = (#%parens char) 1 ; static final char CTRL_B = (#%parens char) 2 ; static final char CTRL_C = (#%parens char) 3 ; static final char CTRL_D = (#%parens char) 4 ; static final char CTRL_E = (#%parens char) 5 ; static final char CTRL_F = (#%parens char) 6 ; static final char CTRL_G = (#%parens char) 7 ; static final char CTRL_H = (#%parens char) 8 ; static final char CTRL_I = (#%parens char) 9 ; static final char CTRL_J = (#%parens char) 10 ; static final char CTRL_K = (#%parens char) 11 ; static final char CTRL_L = (#%parens char) 12 ; static final char CTRL_M = (#%parens char) 13 ; static final char CTRL_N = (#%parens char) 14 ; static final char CTRL_O = (#%parens char) 15 ; static final char CTRL_P = (#%parens char) 16 ; static final char CTRL_Q = (#%parens char) 17 ; static final char CTRL_R = (#%parens char) 18 ; static final char CTRL_S = (#%parens char) 19 ; static final char CTRL_T = (#%parens char) 20 ; static final char CTRL_U = (#%parens char) 21 ; static final char CTRL_V = (#%parens char) 22 ; static final char CTRL_W = (#%parens char) 23 ; static final char CTRL_X = (#%parens char) 24 ; static final char CTRL_Y = (#%parens char) 25 ; static final char CTRL_Z = (#%parens char) 26 ; boolean put_std_char (#%parens char c) (#%braces boolean do_redraw = false ; switch (#%parens c) (#%braces case 0 : break ; case CTRL_G : break ; case CTRL_I : break ; case #\newline : if (#%parens curRow >= regionBottom) (#%braces screenScroll (#%parens - 1) ; curRow = regionBottom ; screenDirty (#%parens regionBottom , regionBottom) ;) else (#%braces curRow ++ ;) overChar = false ; curCol = regionLeft ; break ; case #\return : break ; case #\page : screenInit (#%parens) ; break ; case CTRL_H : case 0 x7f : if (#%parens DEBUG) System |.| out |.| println (#%parens "Delete pressed:" + curCol + "," + regionRight) ; if (#%parens curCol > 0) (#%braces for (#%parens int i = curCol - 1 ; (#%parens i < regionRight) ; i ++) (#%braces page (#%brackets curRow) (#%brackets i) = page (#%brackets curRow) (#%brackets i + 1) ; style (#%brackets curRow) (#%brackets i) = style (#%brackets curRow) (#%brackets i + 1) ;) page (#%brackets curRow) (#%brackets regionRight) = #\space ; style (#%brackets curRow) (#%brackets regionRight) = STYLE_PLAIN ; screenDirty (#%parens curRow , curRow) ; curCol = curCol - 1 ; do_redraw = true ;) else (#%braces do_redraw = false ;) break ; default : do_redraw = put_char (#%parens c) ; break ;) return do_redraw ;) public synchronized boolean keyDown (#%parens Event e , int key) (#%braces if (#%parens DEBUG) System |.| out |.| println (#%parens "Key event: " + key) ; if (#%parens computeThread != null) (#%braces if (#%parens computeThread |.| isAlive (#%parens)) (#%braces computeThread |.| stop (#%parens) ; write (#%parens "**interrupted** " , 0) ; computeThread = null ; return true ;) computeThread = null ;) if (#%parens key == #\newline) (#%braces String s = new String (#%parens) ; for (#%parens int i = 0 ; i < curCol ; i ++) (#%braces s += page (#%brackets curRow) (#%brackets i) ;) write (#%parens (#%parens char) key , 0) ; computeThread = HalServer |.| processline (#%parens s) ;) else (#%braces write (#%parens (#%parens char) key , 0) ;) return true ;) public boolean mouseDown (#%parens Event evt , int x , int y) (#%braces requestFocus (#%parens) ; return true ;) boolean have_focus = false ; void draw_border (#%parens Graphics g) (#%braces Dimension d = size (#%parens) ; if (#%parens have_focus) (#%braces g |.| setColor (#%parens getForeground (#%parens)) ;) else (#%braces g |.| setColor (#%parens getBackground (#%parens)) ;) g |.| drawRect (#%parens 0 , 0 , d |.| width , d |.| height) ; g |.| drawRect (#%parens 1 , 1 , d |.| width - 2 , d |.| height - 2) ; g |.| setColor (#%parens Color |.| white) ; g |.| draw3DRect (#%parens 2 , 2 , d |.| width - 4 , d |.| height - 4 , true) ; g |.| draw3DRect (#%parens 3 , 3 , d |.| width - 6 , d |.| height - 6 , true) ;) public void paint (#%parens Graphics g) (#%braces draw_border (#%parens g) ; screenRedraw (#%parens g) ;) public boolean gotFocus (#%parens Event evt , Object what) (#%braces Graphics g = getGraphics (#%parens) ; have_focus = true ; if (#%parens g != null) draw_border (#%parens g) ; return true ;) public boolean lostFocus (#%parens Event evt , Object what) (#%braces Graphics g = getGraphics (#%parens) ; have_focus = false ; if (#%parens g != null) draw_border (#%parens g) ; return true ;) public final synchronized void update (#%parens Graphics g) (#%braces paint (#%parens g) ;)) #!eof