source: project/release/4/honu/trunk/tests/expected @ 22280

Last change on this file since 22280 was 22280, checked in by felix winkelmann, 10 years ago

honu 1.6: fixed testcase and escaped semicolon

File size: 41.2 KB
Line 
1(import
2  java
3  |.|
4  applet
5  |.|
6  Applet
7  |;|
8  import
9  java
10  |.|
11  awt
12  .*
13  |;|
14  import
15  java
16  |.|
17  io
18  .*
19  |;|
20  public
21  class
22  Toplevel
23  extends
24  Applet
25  implements
26  SchanReader
27  (#%braces
28    Terminal
29    myterminal
30    |;|
31    public
32    void
33    init
34    (#%parens)
35    (#%braces
36      myterminal
37      =
38      new
39      Terminal
40      (#%parens)
41      |;|
42      HalServer
43      |.|
44      registerReader
45      (#%parens this)
46      |;|
47      resize
48      (#%parens 800 |,| 400)
49      |;|
50      GridBagLayout
51      gb
52      =
53      new
54      GridBagLayout
55      (#%parens)
56      |;|
57      setLayout
58      (#%parens gb)
59      |;|
60      GridBagConstraints
61      cn
62      =
63      new
64      GridBagConstraints
65      (#%parens)
66      |;|
67      cn
68      |.|
69      weightx
70      =
71      1
72      |;|
73      cn
74      |.|
75      weighty
76      =
77      1
78      |;|
79      cn
80      |.|
81      fill
82      =
83      cn
84      |.|
85      BOTH
86      |;|
87      gb
88      |.|
89      setConstraints
90      (#%parens myterminal |,| cn)
91      |;|
92      add
93      (#%parens myterminal)
94      |;|
95      validate
96      (#%parens)
97      |;|
98      show
99      (#%parens)
100      |;|
101      myterminal
102      |.|
103      init
104      (#%parens)
105      |;|
106      myterminal
107      |.|
108      write
109      (#%parens "Hal Applet Compiled by MLj 0.2
110" |,| 0)
111      |;|)
112    public
113    void
114    handlechan
115    (#%parens String thedata)
116    (#%braces myterminal |.| write (#%parens thedata |,| 0) |;|)
117    public
118    void
119    stop
120    (#%parens)
121    (#%braces
122      if
123      (#%parens
124        Terminal
125        |.|
126        computeThread
127        !=
128        null
129        &&
130        Terminal
131        |.|
132        computeThread
133        |.|
134        isAlive
135        (#%parens))
136      (#%braces
137        Terminal
138        |.|
139        computeThread
140        |.|
141        stop
142        (#%parens)
143        |;|
144        myterminal
145        |.|
146        write
147        (#%parens "**background computation stopped**
148" |,| 0)
149        |;|)
150      Terminal
151      |.|
152      computeThread
153      =
154      null
155      |;|)
156    public
157    void
158    start
159    (#%parens)
160    (#%braces Terminal |.| computeThread = null |;|))
161  class
162  Terminal
163  extends
164  Canvas
165  (#%braces
166    public
167    static
168    Thread
169    computeThread
170    =
171    null
172    |;|
173    static
174    final
175    boolean
176    DEBUG
177    =
178    false
179    |;|
180    static
181    final
182    int
183    OUTF_RAW
184    =
185    1
186    <<
187    0
188    |;|
189    static
190    final
191    int
192    OUTF_PARTIAL
193    =
194    1
195    <<
196    1
197    |;|
198    static
199    final
200    int
201    STYLE_PLAIN
202    =
203    0
204    |;|
205    static
206    final
207    int
208    STYLE_INVERSE
209    =
210    1
211    <<
212    0
213    |;|
214    static
215    final
216    int
217    STYLE_BOLD
218    =
219    1
220    <<
221    1
222    |;|
223    static
224    final
225    int
226    STYLE_ITALIC
227    =
228    1
229    <<
230    2
231    |;|
232    static
233    final
234    int
235    STYLE_UNDERSCORE
236    =
237    1
238    <<
239    3
240    |;|
241    static
242    final
243    int
244    INNER_SIZE
245    =
246    4
247    |;|
248    static
249    final
250    int
251    ACTIVE_SIZE
252    =
253    2
254    |;|
255    static
256    final
257    int
258    BORDER_WIDTH
259    =
260    (#%parens INNER_SIZE + ACTIVE_SIZE)
261    |;|
262    static
263    final
264    int
265    BORDER_HEIGHT
266    =
267    (#%parens INNER_SIZE + ACTIVE_SIZE)
268    |;|
269    int
270    fontsize
271    =
272    -
273    1
274    |;|
275    Color
276    defBackground
277    |,|
278    defForeground
279    |;|
280    Toolkit
281    toolkit
282    |;|
283    Font
284    fontPlain
285    |,|
286    fontBold
287    |,|
288    fontItalic
289    |,|
290    fontBoldItalic
291    |;|
292    int
293    charWidth
294    |,|
295    charHeight
296    |;|
297    int
298    fontAscent
299    |,|
300    fontDescent
301    |;|
302    int
303    numRows
304    |,|
305    numCols
306    |;|
307    int
308    curRow
309    |,|
310    curCol
311    |;|
312    int
313    curStyle
314    =
315    STYLE_PLAIN
316    |;|
317    int
318    regionTop
319    |,|
320    regionBottom
321    |,|
322    regionLeft
323    |,|
324    regionRight
325    |;|
326    int
327    lastRow
328    |,|
329    lastCol
330    |;|
331    int
332    dirtyTop
333    =
334    -
335    1
336    |,|
337    dirtyBottom
338    =
339    -
340    1
341    |;|
342    int
343    scrollCount
344    =
345    0
346    |;|
347    boolean
348    overChar
349    =
350    false
351    |;|
352    boolean
353    cursorVisible
354    =
355    true
356    |;|
357    char
358    page
359    (#%brackets)
360    (#%brackets)
361    |;|
362    int
363    style
364    (#%brackets)
365    (#%brackets)
366    |;|
367    public
368    Terminal
369    (#%parens)
370    (#%braces fontsize = 12 |;|)
371    public
372    void
373    init
374    (#%parens)
375    (#%braces
376      Graphics
377      g
378      =
379      getGraphics
380      (#%parens)
381      |;|
382      Font
383      f
384      =
385      g
386      |.|
387      getFont
388      (#%parens)
389      |;|
390      int
391      size
392      =
393      f
394      |.|
395      getSize
396      (#%parens)
397      |;|
398      if
399      (#%parens fontsize > 0)
400      size
401      =
402      fontsize
403      |;|
404      fontPlain
405      =
406      f
407      |;|
408      try
409      (#%braces
410        fontPlain
411        =
412        new
413        Font
414        (#%parens "Courier" |,| Font |.| PLAIN |,| size)
415        |;|)
416      finally
417      (#%braces)
418      if
419      (#%parens fontPlain == null)
420      fontPlain
421      =
422      f
423      |;|
424      if
425      (#%parens DEBUG)
426      (#%braces
427        System
428        |.|
429        out
430        |.|
431        println
432        (#%parens
433          "StdFont name="
434          +
435          fontPlain
436          |.|
437          getName
438          (#%parens)
439          +
440          " size="
441          +
442          fontPlain
443          |.|
444          getSize
445          (#%parens)
446          +
447          " style="
448          +
449          fontPlain
450          |.|
451          getStyle
452          (#%parens))
453        |;|)
454      fontBold
455      =
456      fontPlain
457      |;|
458      try
459      (#%braces
460        fontBold
461        =
462        new
463        Font
464        (#%parens
465          fontPlain
466          |.|
467          getName
468          (#%parens)
469          |,|
470          Font
471          |.|
472          BOLD
473          |,|
474          fontPlain
475          |.|
476          getSize
477          (#%parens))
478        |;|)
479      finally
480      (#%braces)
481      fontItalic
482      =
483      fontBoldItalic
484      =
485      fontBold
486      |;|
487      try
488      (#%braces
489        fontItalic
490        =
491        new
492        Font
493        (#%parens
494          fontPlain
495          |.|
496          getName
497          (#%parens)
498          |,|
499          Font
500          |.|
501          ITALIC
502          |,|
503          fontPlain
504          |.|
505          getSize
506          (#%parens))
507        |;|)
508      finally
509      (#%braces)
510      try
511      (#%braces
512        fontBoldItalic
513        =
514        new
515        Font
516        (#%parens
517          fontPlain
518          |.|
519          getName
520          (#%parens)
521          |,|
522          Font
523          |.|
524          BOLD
525          +
526          Font
527          |.|
528          ITALIC
529          |,|
530          fontPlain
531          |.|
532          getSize
533          (#%parens))
534        |;|)
535      finally
536      (#%braces)
537      if
538      (#%parens DEBUG)
539      (#%braces
540        System
541        |.|
542        out
543        |.|
544        println
545        (#%parens
546          "BldFont name="
547          +
548          fontBold
549          |.|
550          getName
551          (#%parens)
552          +
553          " size="
554          +
555          fontBold
556          |.|
557          getSize
558          (#%parens)
559          +
560          " style="
561          +
562          fontBold
563          |.|
564          getStyle
565          (#%parens))
566        |;|
567        System
568        |.|
569        out
570        |.|
571        println
572        (#%parens
573          "ItlFont name="
574          +
575          fontItalic
576          |.|
577          getName
578          (#%parens)
579          +
580          " size="
581          +
582          fontItalic
583          |.|
584          getSize
585          (#%parens)
586          +
587          " style="
588          +
589          fontItalic
590          |.|
591          getStyle
592          (#%parens))
593        |;|)
594      g
595      |.|
596      setFont
597      (#%parens fontPlain)
598      |;|
599      setFont
600      (#%parens fontPlain)
601      |;|
602      defBackground
603      =
604      getBackground
605      (#%parens)
606      |;|
607      defForeground
608      =
609      getForeground
610      (#%parens)
611      |;|
612      toolkit
613      =
614      getToolkit
615      (#%parens)
616      |;|
617      screenInit
618      (#%parens)
619      |;|
620      repaint
621      (#%parens)
622      |;|)
623    FontMetrics
624    get_metrics
625    (#%parens boolean install)
626    (#%braces
627      Graphics
628      g
629      |;|
630      FontMetrics
631      m
632      |;|
633      Dimension
634      d
635      |;|
636      g
637      =
638      getGraphics
639      (#%parens)
640      |;|
641      m
642      =
643      g
644      |.|
645      getFontMetrics
646      (#%parens fontPlain)
647      |;|
648      if
649      (#%parens install)
650      (#%braces
651        charWidth
652        =
653        m
654        |.|
655        charWidth
656        (#%parens #\W)
657        |;|
658        charHeight
659        =
660        m
661        |.|
662        getHeight
663        (#%parens)
664        |;|
665        fontAscent
666        =
667        m
668        |.|
669        getAscent
670        (#%parens)
671        |;|
672        fontDescent
673        =
674        m
675        |.|
676        getDescent
677        (#%parens)
678        |;|)
679      return
680      m
681      |;|)
682    public
683    Dimension
684    minimumSize
685    (#%parens)
686    (#%braces return (#%parens new Dimension (#%parens 800 |,| 400)) |;|)
687    public
688    Dimension
689    preferredSize
690    (#%parens)
691    (#%braces return minimumSize (#%parens) |;|)
692    public
693    void
694    screenInit
695    (#%parens)
696    (#%braces
697      Dimension
698      d
699      |;|
700      int
701      rows
702      |,|
703      cols
704      |;|
705      get_metrics
706      (#%parens true)
707      |;|
708      if
709      (#%parens DEBUG)
710      System
711      |.|
712      out
713      |.|
714      println
715      (#%parens "Initializing screen...")
716      |;|
717      d
718      =
719      size
720      (#%parens)
721      |;|
722      if
723      (#%parens DEBUG)
724      System
725      |.|
726      out
727      |.|
728      println
729      (#%parens
730        "size: "
731        +
732        d
733        +
734        " bh: "
735        +
736        BORDER_HEIGHT
737        +
738        "bw: "
739        +
740        BORDER_WIDTH
741        +
742        "cw:"
743        +
744        charWidth
745        +
746        " ch: "
747        +
748        charHeight)
749      |;|
750      cols
751      =
752      (#%parens d |.| width - (#%parens BORDER_WIDTH * 2))
753      /
754      charWidth
755      |;|
756      rows
757      =
758      (#%parens d |.| height - (#%parens BORDER_HEIGHT * 2))
759      /
760      charHeight
761      |;|
762      if
763      (#%parens cols < 4)
764      cols
765      =
766      4
767      |;|
768      if
769      (#%parens rows < 2)
770      rows
771      =
772      2
773      |;|
774      if
775      (#%parens numRows == rows && numCols == cols)
776      return
777      |;|
778      numRows
779      =
780      rows
781      |;|
782      numCols
783      =
784      cols
785      |;|
786      curCol
787      =
788      0
789      |;|
790      curRow
791      =
792      0
793      |;|
794      lastCol
795      =
796      0
797      |;|
798      lastRow
799      =
800      0
801      |;|
802      scrollCount
803      =
804      0
805      |;|
806      setRegion
807      (#%parens)
808      |;|
809      if
810      (#%parens DEBUG)
811      System
812      |.|
813      out
814      |.|
815      println
816      (#%parens "Width = " + d |.| width + ", Height = " + d |.| height)
817      |;|
818      if
819      (#%parens DEBUG)
820      System
821      |.|
822      out
823      |.|
824      println
825      (#%parens "Columns = " + numCols + ", Rows = " + numRows)
826      |;|
827      page
828      =
829      new
830      char
831      (#%brackets numRows)
832      (#%brackets numCols)
833      |;|
834      style
835      =
836      new
837      int
838      (#%brackets numRows)
839      (#%brackets numCols)
840      |;|
841      for
842      (#%parens int r = 0 |;| r < numRows |;| r ++)
843      (#%braces
844        for
845        (#%parens int c = 0 |;| c < numCols |;| c ++)
846        (#%braces
847          page
848          (#%brackets r)
849          (#%brackets c)
850          =
851          #\space
852          |;|
853          style
854          (#%brackets r)
855          (#%brackets c)
856          =
857          STYLE_PLAIN
858          |;|))
859      dirtyTop
860      =
861      0
862      |;|
863      dirtyBottom
864      =
865      numRows
866      -
867      1
868      |;|)
869    public
870    int
871    getCursorRow
872    (#%parens)
873    (#%braces return curRow |;|)
874    public
875    int
876    getCursorCol
877    (#%parens)
878    (#%braces return curCol |;|)
879    public
880    int
881    getNumRows
882    (#%parens)
883    (#%braces return numRows |;|)
884    public
885    int
886    getNumCols
887    (#%parens)
888    (#%braces return numCols |;|)
889    public
890    void
891    setCursorPos
892    (#%parens int row |,| int col)
893    (#%braces
894      if
895      (#%parens row < 0)
896      row
897      =
898      0
899      |;|
900      if
901      (#%parens row >= numRows)
902      row
903      =
904      numRows
905      -
906      1
907      |;|
908      if
909      (#%parens col < 0)
910      col
911      =
912      0
913      |;|
914      if
915      (#%parens col >= numCols)
916      col
917      =
918      numCols
919      -
920      1
921      |;|
922      curRow
923      =
924      row
925      |;|
926      curCol
927      =
928      col
929      |;|)
930    public
931    void
932    setCursorVisible
933    (#%parens boolean state)
934    (#%braces cursorVisible = state |;|)
935    public
936    boolean
937    getCursorVisible
938    (#%parens)
939    (#%braces return cursorVisible |;|)
940    public
941    void
942    setRegion
943    (#%parens)
944    (#%braces
945      regionTop
946      =
947      0
948      |;|
949      regionBottom
950      =
951      numRows
952      -
953      1
954      |;|
955      regionLeft
956      =
957      0
958      |;|
959      regionRight
960      =
961      numCols
962      -
963      1
964      |;|)
965    public
966    void
967    setRegion
968    (#%parens int top |,| int bottom)
969    (#%braces setRegion (#%parens top |,| bottom |,| 0 |,| numCols - 1) |;|)
970    public
971    void
972    setRegion
973    (#%parens int top |,| int bottom |,| int left |,| int right)
974    (#%braces
975      if
976      (#%parens top < 0)
977      top
978      =
979      0
980      |;|
981      if
982      (#%parens top >= numRows)
983      top
984      =
985      numRows
986      -
987      1
988      |;|
989      if
990      (#%parens bottom < 0)
991      bottom
992      =
993      0
994      |;|
995      if
996      (#%parens bottom >= numRows)
997      bottom
998      =
999      numRows
1000      -
1001      1
1002      |;|
1003      if
1004      (#%parens top >= bottom - 2)
1005      (#%braces
1006        if
1007        (#%parens top > 2)
1008        top
1009        =
1010        0
1011        |;|
1012        else
1013        bottom
1014        =
1015        numRows
1016        -
1017        1
1018        |;|)
1019      if
1020      (#%parens left < 0)
1021      left
1022      =
1023      0
1024      |;|
1025      if
1026      (#%parens left >= numCols)
1027      left
1028      =
1029      numCols
1030      -
1031      1
1032      |;|
1033      if
1034      (#%parens right < 0)
1035      right
1036      =
1037      0
1038      |;|
1039      if
1040      (#%parens right >= numCols)
1041      right
1042      =
1043      numCols
1044      -
1045      1
1046      |;|
1047      if
1048      (#%parens left >= right - 2)
1049      (#%braces
1050        if
1051        (#%parens left > 2)
1052        left
1053        =
1054        0
1055        |;|
1056        else
1057        right
1058        =
1059        numCols
1060        -
1061        1
1062        |;|)
1063      regionTop
1064      =
1065      top
1066      |;|
1067      regionBottom
1068      =
1069      bottom
1070      |;|
1071      regionLeft
1072      =
1073      left
1074      |;|
1075      regionRight
1076      =
1077      right
1078      |;|)
1079    public
1080    int
1081    getRegionTop
1082    (#%parens)
1083    (#%braces return regionTop |;|)
1084    public
1085    int
1086    getRegionBottom
1087    (#%parens)
1088    (#%braces return regionBottom |;|)
1089    public
1090    int
1091    getRegionLeft
1092    (#%parens)
1093    (#%braces return regionLeft |;|)
1094    public
1095    int
1096    getRegionRight
1097    (#%parens)
1098    (#%braces return regionRight |;|)
1099    public
1100    void
1101    setStyle
1102    (#%parens int style)
1103    (#%braces curStyle = style |;|)
1104    public
1105    int
1106    getStyle
1107    (#%parens)
1108    (#%braces return curStyle |;|)
1109    public
1110    void
1111    setChar
1112    (#%parens char c)
1113    (#%braces
1114      page
1115      (#%brackets curRow)
1116      (#%brackets curCol)
1117      =
1118      c
1119      |;|
1120      style
1121      (#%brackets curRow)
1122      (#%brackets curCol)
1123      =
1124      curStyle
1125      |;|)
1126    public
1127    void
1128    setChar
1129    (#%parens char c |,| int row |,| int col)
1130    (#%braces
1131      page
1132      (#%brackets row)
1133      (#%brackets col)
1134      =
1135      c
1136      |;|
1137      style
1138      (#%brackets row)
1139      (#%brackets col)
1140      =
1141      curStyle
1142      |;|)
1143    public
1144    char
1145    getChar
1146    (#%parens)
1147    (#%braces return page (#%brackets curRow) (#%brackets curCol) |;|)
1148    public
1149    char
1150    getChar
1151    (#%parens int row |,| int col)
1152    (#%braces return page (#%brackets row) (#%brackets col) |;|)
1153    public
1154    int
1155    getCharStyle
1156    (#%parens)
1157    (#%braces return style (#%brackets curRow) (#%brackets curCol) |;|)
1158    public
1159    int
1160    getCharStyle
1161    (#%parens int row |,| int col)
1162    (#%braces return style (#%brackets row) (#%brackets col) |;|)
1163    Font
1164    get_style_font
1165    (#%parens int style)
1166    (#%braces
1167      switch
1168      (#%parens style & (#%parens STYLE_BOLD |\|| STYLE_ITALIC))
1169      (#%braces
1170        case
1171        STYLE_PLAIN
1172        :
1173        return
1174        fontPlain
1175        |;|
1176        case
1177        STYLE_BOLD
1178        :
1179        return
1180        fontBold
1181        |;|
1182        case
1183        STYLE_ITALIC
1184        :
1185        return
1186        fontItalic
1187        |;|
1188        case
1189        STYLE_BOLD
1190        |\||
1191        STYLE_ITALIC
1192        :
1193        return
1194        fontBoldItalic
1195        |;|
1196        default
1197        :
1198        return
1199        fontPlain
1200        |;|))
1201    void
1202    drawRowCol
1203    (#%parens Graphics g |,| int row |,| int col)
1204    (#%braces
1205      int
1206      x
1207      =
1208      (#%parens col * charWidth)
1209      +
1210      BORDER_WIDTH
1211      |;|
1212      int
1213      y
1214      =
1215      (#%parens row * charHeight)
1216      +
1217      BORDER_HEIGHT
1218      |;|
1219      g
1220      |.|
1221      setFont
1222      (#%parens
1223        get_style_font
1224        (#%parens style (#%brackets row) (#%brackets col)))
1225      |;|
1226      if
1227      (#%parens
1228        (#%parens curRow != row |\|\|| curCol != col |\|\|| ! cursorVisible)
1229        ^
1230        (#%parens
1231          (#%parens style (#%brackets row) (#%brackets col) & STYLE_INVERSE)
1232          ==
1233          STYLE_INVERSE))
1234      (#%braces
1235        g
1236        |.|
1237        clearRect
1238        (#%parens x |,| y |,| charWidth |,| charHeight)
1239        |;|
1240        g
1241        |.|
1242        setColor
1243        (#%parens getForeground (#%parens))
1244        |;|
1245        g
1246        |.|
1247        drawChars
1248        (#%parens page (#%brackets row) |,| col |,| 1 |,| x |,| y + fontAscent)
1249        |;|)
1250      else
1251      (#%braces
1252        g
1253        |.|
1254        setColor
1255        (#%parens getForeground (#%parens))
1256        |;|
1257        g
1258        |.|
1259        fillRect
1260        (#%parens x |,| y |,| charWidth |,| charHeight)
1261        |;|
1262        g
1263        |.|
1264        setColor
1265        (#%parens getBackground (#%parens))
1266        |;|
1267        g
1268        |.|
1269        drawChars
1270        (#%parens page (#%brackets row) |,| col |,| 1 |,| x |,| y + fontAscent)
1271        |;|)
1272      if
1273      (#%parens
1274        (#%parens style (#%brackets row) (#%brackets col) & STYLE_UNDERSCORE)
1275        !=
1276        0)
1277      (#%braces
1278        g
1279        |.|
1280        drawLine
1281        (#%parens
1282          x
1283          |,|
1284          y
1285          +
1286          fontAscent
1287          |,|
1288          x
1289          +
1290          charWidth
1291          -
1292          1
1293          |,|
1294          y
1295          +
1296          fontAscent)
1297        |;|))
1298    public
1299    void
1300    drawRow
1301    (#%parens Graphics g |,| int row)
1302    (#%braces
1303      int
1304      (#%brackets)
1305      rowStyles
1306      =
1307      style
1308      (#%brackets row)
1309      |;|
1310      int
1311      col
1312      =
1313      0
1314      |;|
1315      int
1316      y
1317      =
1318      BORDER_HEIGHT
1319      +
1320      (#%parens row * charHeight)
1321      |;|
1322      if
1323      (#%parens rowStyles == null |\|\|| page (#%brackets row) == null)
1324      (#%braces
1325        System
1326        |.|
1327        out
1328        |.|
1329        println
1330        (#%parens "*** null entry at row " + row)
1331        |;|
1332        return
1333        |;|)
1334      while
1335      (#%parens col < numCols)
1336      (#%braces
1337        int
1338        first
1339        =
1340        col
1341        |;|
1342        int
1343        cur_style
1344        =
1345        rowStyles
1346        (#%brackets col)
1347        |;|
1348        while
1349        (#%parens col < numCols && cur_style == rowStyles (#%brackets col))
1350        (#%braces col ++ |;|)
1351        int
1352        x
1353        =
1354        BORDER_WIDTH
1355        +
1356        (#%parens first * charWidth)
1357        |;|
1358        g
1359        |.|
1360        setFont
1361        (#%parens get_style_font (#%parens cur_style))
1362        |;|
1363        if
1364        (#%parens (#%parens cur_style & STYLE_INVERSE) == 0)
1365        (#%braces g |.| setColor (#%parens getBackground (#%parens)) |;|)
1366        else
1367        (#%braces g |.| setColor (#%parens getForeground (#%parens)) |;|)
1368        g
1369        |.|
1370        fillRect
1371        (#%parens
1372          x
1373          |,|
1374          y
1375          |,|
1376          (#%parens (#%parens col - first) * charWidth)
1377          |,|
1378          charHeight)
1379        |;|
1380        if
1381        (#%parens (#%parens cur_style & STYLE_INVERSE) == 0)
1382        (#%braces g |.| setColor (#%parens getForeground (#%parens)) |;|)
1383        else
1384        (#%braces g |.| setColor (#%parens getBackground (#%parens)) |;|)
1385        g
1386        |.|
1387        drawChars
1388        (#%parens
1389          page
1390          (#%brackets row)
1391          |,|
1392          first
1393          |,|
1394          col
1395          -
1396          first
1397          |,|
1398          x
1399          |,|
1400          y
1401          +
1402          fontAscent)
1403        |;|
1404        if
1405        (#%parens (#%parens cur_style & STYLE_UNDERSCORE) != 0)
1406        (#%braces
1407          g
1408          |.|
1409          drawLine
1410          (#%parens
1411            x
1412            |,|
1413            y
1414            +
1415            fontAscent
1416            |,|
1417            x
1418            +
1419            (#%parens (#%parens col - first) * charWidth)
1420            |,|
1421            y
1422            +
1423            fontAscent)
1424          |;|))
1425      if
1426      (#%parens cursorVisible && row == curRow)
1427      (#%braces
1428        if
1429        (#%parens DEBUG)
1430        System
1431        |.|
1432        out
1433        |.|
1434        println
1435        (#%parens "Drawing cursor: row=" + curRow + ", col=" + curCol)
1436        |;|
1437        drawRowCol
1438        (#%parens g |,| curRow |,| curCol)
1439        |;|))
1440    public
1441    void
1442    screenRedraw
1443    (#%parens Graphics g |,| int top |,| int bot)
1444    (#%braces
1445      if
1446      (#%parens top < 0)
1447      top
1448      =
1449      0
1450      |;|
1451      if
1452      (#%parens bot >= numRows)
1453      bot
1454      =
1455      numRows
1456      -
1457      1
1458      |;|
1459      g
1460      |.|
1461      setFont
1462      (#%parens fontPlain)
1463      |;|
1464      if
1465      (#%parens DEBUG)
1466      System
1467      |.|
1468      out
1469      |.|
1470      println
1471      (#%parens "Redrawing: " + top + " to " + bot)
1472      |;|
1473      for
1474      (#%parens int i = top |;| i <= bot |;| i ++)
1475      (#%braces
1476        if
1477        (#%parens DEBUG)
1478        System
1479        |.|
1480        out
1481        |.|
1482        println
1483        (#%parens "Drawing: " + i + ", curRow: " + curRow)
1484        |;|
1485        drawRow
1486        (#%parens g |,| i)
1487        |;|)
1488      scrollCount
1489      =
1490      0
1491      |;|)
1492    public
1493    void
1494    screenRedraw
1495    (#%parens Graphics g)
1496    (#%braces screenRedraw (#%parens g |,| 0 |,| numRows - 1) |;|)
1497    public
1498    void
1499    screenClean
1500    (#%parens Graphics g)
1501    (#%braces
1502      if
1503      (#%parens DEBUG)
1504      System
1505      |.|
1506      out
1507      |.|
1508      println
1509      (#%parens "Cleaning screen: " + dirtyTop + " to " + dirtyBottom)
1510      |;|
1511      if
1512      (#%parens dirtyTop >= 0 && dirtyBottom >= 0)
1513      (#%braces
1514        drawRowCol
1515        (#%parens g |,| lastRow |,| lastCol)
1516        |;|
1517        screenRedraw
1518        (#%parens g |,| dirtyTop |,| dirtyBottom)
1519        |;|)
1520      if
1521      (#%parens lastRow != curRow |\|\|| lastCol != curCol)
1522      (#%braces
1523        drawRowCol
1524        (#%parens g |,| lastRow |,| lastCol)
1525        |;|
1526        drawRowCol
1527        (#%parens g |,| curRow |,| curCol)
1528        |;|)
1529      dirtyTop
1530      =
1531      -
1532      1
1533      |;|
1534      dirtyBottom
1535      =
1536      -
1537      1
1538      |;|
1539      lastRow
1540      =
1541      curRow
1542      |;|
1543      lastCol
1544      =
1545      curCol
1546      |;|
1547      toolkit
1548      |.|
1549      sync
1550      (#%parens)
1551      |;|)
1552    void
1553    screenDirty
1554    (#%parens int top |,| int bottom)
1555    (#%braces
1556      if
1557      (#%parens dirtyTop < 0 |\|\|| top < dirtyTop)
1558      dirtyTop
1559      =
1560      top
1561      |;|
1562      if
1563      (#%parens bottom > dirtyBottom)
1564      dirtyBottom
1565      =
1566      bottom
1567      |;|)
1568    public
1569    void
1570    screenScrollRegion
1571    (#%parens int top |,| int bottom |,| int amount)
1572    (#%braces
1573      if
1574      (#%parens top >= bottom)
1575      return
1576      |;|
1577      if
1578      (#%parens amount < 0)
1579      (#%braces
1580        amount
1581        =
1582        -
1583        amount
1584        |;|
1585        for
1586        (#%parens int i = top |;| i < (#%parens bottom - amount + 1) |;| i ++)
1587        (#%braces
1588          page
1589          (#%brackets i)
1590          =
1591          page
1592          (#%brackets i + amount)
1593          |;|
1594          style
1595          (#%brackets i)
1596          =
1597          style
1598          (#%brackets i + amount)
1599          |;|)
1600        for
1601        (#%parens int i = bottom - amount + 1 |;| i < bottom + 1 |;| i ++)
1602        (#%braces
1603          page
1604          (#%brackets i)
1605          =
1606          new
1607          char
1608          (#%brackets numCols)
1609          |;|
1610          style
1611          (#%brackets i)
1612          =
1613          new
1614          int
1615          (#%brackets numCols)
1616          |;|
1617          for
1618          (#%parens int j = 0 |;| j < numCols |;| j ++)
1619          (#%braces
1620            page
1621            (#%brackets i)
1622            (#%brackets j)
1623            =
1624            #\space
1625            |;|
1626            style
1627            (#%brackets i)
1628            (#%brackets j)
1629            =
1630            STYLE_PLAIN
1631            |;|))
1632        screenDirty
1633        (#%parens top |,| bottom)
1634        |;|)
1635      else
1636      if
1637      (#%parens amount > 0)
1638      (#%braces
1639        for
1640        (#%parens int i = bottom |;| i >= top + amount |;| i --)
1641        (#%braces
1642          page
1643          (#%brackets i)
1644          =
1645          page
1646          (#%brackets i - amount)
1647          |;|
1648          style
1649          (#%brackets i)
1650          =
1651          style
1652          (#%brackets i - amount)
1653          |;|)
1654        for
1655        (#%parens int i = top |;| i < top + amount |;| i ++)
1656        (#%braces
1657          page
1658          (#%brackets i)
1659          =
1660          new
1661          char
1662          (#%brackets numCols)
1663          |;|
1664          style
1665          (#%brackets i)
1666          =
1667          new
1668          int
1669          (#%brackets numCols)
1670          |;|
1671          for
1672          (#%parens int j = 0 |;| j < numCols |;| j ++)
1673          (#%braces
1674            page
1675            (#%brackets i)
1676            (#%brackets j)
1677            =
1678            #\space
1679            |;|
1680            style
1681            (#%brackets i)
1682            (#%brackets j)
1683            =
1684            STYLE_PLAIN
1685            |;|))
1686        screenDirty
1687        (#%parens top |,| bottom)
1688        |;|))
1689    public
1690    void
1691    screenScroll
1692    (#%parens int amount)
1693    (#%braces
1694      screenScrollRegion
1695      (#%parens regionTop |,| regionBottom |,| amount)
1696      |;|)
1697    public
1698    void
1699    screenClearEOL
1700    (#%parens)
1701    (#%braces
1702      for
1703      (#%parens int i = curCol |;| i <= regionRight |;| i ++)
1704      (#%braces
1705        page
1706        (#%brackets curRow)
1707        (#%brackets i)
1708        =
1709        #\space
1710        |;|
1711        style
1712        (#%brackets curRow)
1713        (#%brackets i)
1714        =
1715        STYLE_PLAIN
1716        |;|)
1717      screenDirty
1718      (#%parens curRow |,| curRow)
1719      |;|)
1720    public
1721    void
1722    screenClearBOL
1723    (#%parens)
1724    (#%braces
1725      for
1726      (#%parens int i = regionLeft |;| i <= curCol |;| i ++)
1727      (#%braces
1728        page
1729        (#%brackets curRow)
1730        (#%brackets i)
1731        =
1732        #\space
1733        |;|
1734        style
1735        (#%brackets curRow)
1736        (#%brackets i)
1737        =
1738        STYLE_PLAIN
1739        |;|)
1740      screenDirty
1741      (#%parens curRow |,| curRow)
1742      |;|)
1743    public
1744    void
1745    screenClearLine
1746    (#%parens)
1747    (#%braces
1748      for
1749      (#%parens int i = regionLeft |;| i <= regionRight |;| i ++)
1750      (#%braces
1751        page
1752        (#%brackets curRow)
1753        (#%brackets i)
1754        =
1755        #\space
1756        |;|
1757        style
1758        (#%brackets curRow)
1759        (#%brackets i)
1760        =
1761        STYLE_PLAIN
1762        |;|)
1763      screenDirty
1764      (#%parens curRow |,| curRow)
1765      |;|)
1766    public
1767    void
1768    screenClearEOD
1769    (#%parens)
1770    (#%braces
1771      int
1772      left
1773      =
1774      curCol
1775      |;|
1776      for
1777      (#%parens int j = curRow |;| j <= regionBottom |;| j ++)
1778      (#%braces
1779        for
1780        (#%parens int i = left |;| i <= regionRight |;| i ++)
1781        (#%braces
1782          page
1783          (#%brackets j)
1784          (#%brackets i)
1785          =
1786          #\space
1787          |;|
1788          style
1789          (#%brackets j)
1790          (#%brackets i)
1791          =
1792          STYLE_PLAIN
1793          |;|)
1794        left
1795        =
1796        regionLeft
1797        |;|)
1798      screenDirty
1799      (#%parens curRow |,| regionBottom)
1800      |;|)
1801    public
1802    void
1803    screenClearBOD
1804    (#%parens)
1805    (#%braces
1806      for
1807      (#%parens int j = regionTop |;| j < curRow |;| j ++)
1808      (#%braces
1809        for
1810        (#%parens int i = regionLeft |;| i <= regionRight |;| i ++)
1811        (#%braces
1812          page
1813          (#%brackets j)
1814          (#%brackets i)
1815          =
1816          #\space
1817          |;|
1818          style
1819          (#%brackets j)
1820          (#%brackets i)
1821          =
1822          STYLE_PLAIN
1823          |;|))
1824      for
1825      (#%parens int i = regionLeft |;| i < curCol |;| i ++)
1826      (#%braces
1827        page
1828        (#%brackets curRow)
1829        (#%brackets i)
1830        =
1831        #\space
1832        |;|
1833        style
1834        (#%brackets curRow)
1835        (#%brackets i)
1836        =
1837        STYLE_PLAIN
1838        |;|)
1839      screenDirty
1840      (#%parens regionTop |,| curRow)
1841      |;|)
1842    public
1843    void
1844    screenClear
1845    (#%parens)
1846    (#%braces
1847      for
1848      (#%parens int j = regionTop |;| j <= regionBottom |;| j ++)
1849      (#%braces
1850        for
1851        (#%parens int i = regionLeft |;| i <= regionRight |;| i ++)
1852        (#%braces
1853          page
1854          (#%brackets j)
1855          (#%brackets i)
1856          =
1857          #\space
1858          |;|
1859          style
1860          (#%brackets j)
1861          (#%brackets i)
1862          =
1863          STYLE_PLAIN
1864          |;|))
1865      screenDirty
1866      (#%parens regionTop |,| regionBottom)
1867      |;|)
1868    public
1869    synchronized
1870    void
1871    write
1872    (#%parens char (#%brackets) d |,| int off |,| int len |,| int flags)
1873    (#%braces
1874      if
1875      (#%parens DEBUG)
1876      (#%braces
1877        if
1878        (#%parens d == null)
1879        d
1880        =
1881        new
1882        char
1883        (#%brackets 0)
1884        |;|
1885        System
1886        |.|
1887        out
1888        |.|
1889        println
1890        (#%parens "Write: " + new String (#%parens d |,| off |,| len))
1891        |;|)
1892      if
1893      (#%parens len == 1)
1894      (#%braces write (#%parens d (#%brackets off) |,| flags) |;|)
1895      else
1896      if
1897      (#%parens len > 1)
1898      (#%braces
1899        while
1900        (#%parens len > 0)
1901        (#%braces
1902          int
1903          last_row
1904          =
1905          curRow
1906          |;|
1907          boolean
1908          do_redraw
1909          |;|
1910          if
1911          (#%parens (#%parens flags & OUTF_RAW) != 0)
1912          do_redraw
1913          =
1914          put_char
1915          (#%parens d (#%brackets off))
1916          |;|
1917          else
1918          do_redraw
1919          =
1920          put_std_char
1921          (#%parens d (#%brackets off))
1922          |;|
1923          if
1924          (#%parens do_redraw)
1925          (#%braces
1926            if
1927            (#%parens last_row < curRow)
1928            screenDirty
1929            (#%parens last_row |,| curRow)
1930            |;|
1931            else
1932            screenDirty
1933            (#%parens curRow |,| last_row)
1934            |;|)
1935          off
1936          ++
1937          |;|
1938          len
1939          --
1940          |;|)
1941        if
1942        (#%parens (#%parens flags & OUTF_PARTIAL) == 0)
1943        screenClean
1944        (#%parens getGraphics (#%parens))
1945        |;|)
1946      else
1947      if
1948      (#%parens (#%parens flags & OUTF_PARTIAL) == 0)
1949      screenClean
1950      (#%parens getGraphics (#%parens))
1951      |;|)
1952    public
1953    void
1954    write
1955    (#%parens String str |,| int flags)
1956    (#%braces
1957      write
1958      (#%parens
1959        str
1960        |.|
1961        toCharArray
1962        (#%parens)
1963        |,|
1964        0
1965        |,|
1966        str
1967        |.|
1968        length
1969        (#%parens)
1970        |,|
1971        flags)
1972      |;|)
1973    public
1974    synchronized
1975    void
1976    write
1977    (#%parens char c |,| int flags)
1978    (#%braces
1979      int
1980      last_col
1981      =
1982      curCol
1983      |,|
1984      last_row
1985      =
1986      curRow
1987      |;|
1988      boolean
1989      do_redraw
1990      |;|
1991      if
1992      (#%parens (#%parens flags & OUTF_RAW) != 0)
1993      do_redraw
1994      =
1995      put_char
1996      (#%parens c)
1997      |;|
1998      else
1999      do_redraw
2000      =
2001      put_std_char
2002      (#%parens c)
2003      |;|
2004      if
2005      (#%parens do_redraw)
2006      (#%braces
2007        if
2008        (#%parens last_row < curRow)
2009        screenDirty
2010        (#%parens last_row |,| curRow)
2011        |;|
2012        else
2013        screenDirty
2014        (#%parens curRow |,| last_row)
2015        |;|)
2016      if
2017      (#%parens (#%parens flags & OUTF_PARTIAL) == 0)
2018      screenClean
2019      (#%parens getGraphics (#%parens))
2020      |;|)
2021    boolean
2022    put_char
2023    (#%parens char c)
2024    (#%braces
2025      if
2026      (#%parens curCol >= regionRight && ! overChar)
2027      (#%braces
2028        page
2029        (#%brackets curRow)
2030        (#%brackets curCol)
2031        =
2032        c
2033        |;|
2034        style
2035        (#%brackets curRow)
2036        (#%brackets curCol)
2037        =
2038        curStyle
2039        |;|
2040        curCol
2041        =
2042        regionRight
2043        |;|
2044        overChar
2045        =
2046        true
2047        |;|)
2048      else
2049      if
2050      (#%parens curCol >= regionRight && overChar)
2051      (#%braces
2052        overChar
2053        =
2054        false
2055        |;|
2056        screenScroll
2057        (#%parens - 1)
2058        |;|
2059        curRow
2060        =
2061        regionBottom
2062        |;|
2063        curCol
2064        =
2065        1
2066        |;|
2067        page
2068        (#%brackets curRow)
2069        (#%brackets 0)
2070        =
2071        c
2072        |;|
2073        style
2074        (#%brackets curRow)
2075        (#%brackets 0)
2076        =
2077        curStyle
2078        |;|
2079        screenDirty
2080        (#%parens regionBottom - 1 |,| regionBottom)
2081        |;|)
2082      else
2083      (#%braces
2084        page
2085        (#%brackets curRow)
2086        (#%brackets curCol)
2087        =
2088        c
2089        |;|
2090        style
2091        (#%brackets curRow)
2092        (#%brackets curCol)
2093        =
2094        curStyle
2095        |;|
2096        curCol
2097        ++
2098        |;|
2099        overChar
2100        =
2101        false
2102        |;|)
2103      return
2104      true
2105      |;|)
2106    static
2107    final
2108    char
2109    CTRL_A
2110    =
2111    (#%parens char)
2112    1
2113    |;|
2114    static
2115    final
2116    char
2117    CTRL_B
2118    =
2119    (#%parens char)
2120    2
2121    |;|
2122    static
2123    final
2124    char
2125    CTRL_C
2126    =
2127    (#%parens char)
2128    3
2129    |;|
2130    static
2131    final
2132    char
2133    CTRL_D
2134    =
2135    (#%parens char)
2136    4
2137    |;|
2138    static
2139    final
2140    char
2141    CTRL_E
2142    =
2143    (#%parens char)
2144    5
2145    |;|
2146    static
2147    final
2148    char
2149    CTRL_F
2150    =
2151    (#%parens char)
2152    6
2153    |;|
2154    static
2155    final
2156    char
2157    CTRL_G
2158    =
2159    (#%parens char)
2160    7
2161    |;|
2162    static
2163    final
2164    char
2165    CTRL_H
2166    =
2167    (#%parens char)
2168    8
2169    |;|
2170    static
2171    final
2172    char
2173    CTRL_I
2174    =
2175    (#%parens char)
2176    9
2177    |;|
2178    static
2179    final
2180    char
2181    CTRL_J
2182    =
2183    (#%parens char)
2184    10
2185    |;|
2186    static
2187    final
2188    char
2189    CTRL_K
2190    =
2191    (#%parens char)
2192    11
2193    |;|
2194    static
2195    final
2196    char
2197    CTRL_L
2198    =
2199    (#%parens char)
2200    12
2201    |;|
2202    static
2203    final
2204    char
2205    CTRL_M
2206    =
2207    (#%parens char)
2208    13
2209    |;|
2210    static
2211    final
2212    char
2213    CTRL_N
2214    =
2215    (#%parens char)
2216    14
2217    |;|
2218    static
2219    final
2220    char
2221    CTRL_O
2222    =
2223    (#%parens char)
2224    15
2225    |;|
2226    static
2227    final
2228    char
2229    CTRL_P
2230    =
2231    (#%parens char)
2232    16
2233    |;|
2234    static
2235    final
2236    char
2237    CTRL_Q
2238    =
2239    (#%parens char)
2240    17
2241    |;|
2242    static
2243    final
2244    char
2245    CTRL_R
2246    =
2247    (#%parens char)
2248    18
2249    |;|
2250    static
2251    final
2252    char
2253    CTRL_S
2254    =
2255    (#%parens char)
2256    19
2257    |;|
2258    static
2259    final
2260    char
2261    CTRL_T
2262    =
2263    (#%parens char)
2264    20
2265    |;|
2266    static
2267    final
2268    char
2269    CTRL_U
2270    =
2271    (#%parens char)
2272    21
2273    |;|
2274    static
2275    final
2276    char
2277    CTRL_V
2278    =
2279    (#%parens char)
2280    22
2281    |;|
2282    static
2283    final
2284    char
2285    CTRL_W
2286    =
2287    (#%parens char)
2288    23
2289    |;|
2290    static
2291    final
2292    char
2293    CTRL_X
2294    =
2295    (#%parens char)
2296    24
2297    |;|
2298    static
2299    final
2300    char
2301    CTRL_Y
2302    =
2303    (#%parens char)
2304    25
2305    |;|
2306    static
2307    final
2308    char
2309    CTRL_Z
2310    =
2311    (#%parens char)
2312    26
2313    |;|
2314    boolean
2315    put_std_char
2316    (#%parens char c)
2317    (#%braces
2318      boolean
2319      do_redraw
2320      =
2321      false
2322      |;|
2323      switch
2324      (#%parens c)
2325      (#%braces
2326        case
2327        0
2328        :
2329        break
2330        |;|
2331        case
2332        CTRL_G
2333        :
2334        break
2335        |;|
2336        case
2337        CTRL_I
2338        :
2339        break
2340        |;|
2341        case
2342        #\newline
2343        :
2344        if
2345        (#%parens curRow >= regionBottom)
2346        (#%braces
2347          screenScroll
2348          (#%parens - 1)
2349          |;|
2350          curRow
2351          =
2352          regionBottom
2353          |;|
2354          screenDirty
2355          (#%parens regionBottom |,| regionBottom)
2356          |;|)
2357        else
2358        (#%braces curRow ++ |;|)
2359        overChar
2360        =
2361        false
2362        |;|
2363        curCol
2364        =
2365        regionLeft
2366        |;|
2367        break
2368        |;|
2369        case
2370        #\return
2371        :
2372        break
2373        |;|
2374        case
2375        #\page
2376        :
2377        screenInit
2378        (#%parens)
2379        |;|
2380        break
2381        |;|
2382        case
2383        CTRL_H
2384        :
2385        case
2386        0
2387        x7f
2388        :
2389        if
2390        (#%parens DEBUG)
2391        System
2392        |.|
2393        out
2394        |.|
2395        println
2396        (#%parens "Delete pressed:" + curCol + "," + regionRight)
2397        |;|
2398        if
2399        (#%parens curCol > 0)
2400        (#%braces
2401          for
2402          (#%parens int i = curCol - 1 |;| (#%parens i < regionRight) |;| i ++)
2403          (#%braces
2404            page
2405            (#%brackets curRow)
2406            (#%brackets i)
2407            =
2408            page
2409            (#%brackets curRow)
2410            (#%brackets i + 1)
2411            |;|
2412            style
2413            (#%brackets curRow)
2414            (#%brackets i)
2415            =
2416            style
2417            (#%brackets curRow)
2418            (#%brackets i + 1)
2419            |;|)
2420          page
2421          (#%brackets curRow)
2422          (#%brackets regionRight)
2423          =
2424          #\space
2425          |;|
2426          style
2427          (#%brackets curRow)
2428          (#%brackets regionRight)
2429          =
2430          STYLE_PLAIN
2431          |;|
2432          screenDirty
2433          (#%parens curRow |,| curRow)
2434          |;|
2435          curCol
2436          =
2437          curCol
2438          -
2439          1
2440          |;|
2441          do_redraw
2442          =
2443          true
2444          |;|)
2445        else
2446        (#%braces do_redraw = false |;|)
2447        break
2448        |;|
2449        default
2450        :
2451        do_redraw
2452        =
2453        put_char
2454        (#%parens c)
2455        |;|
2456        break
2457        |;|)
2458      return
2459      do_redraw
2460      |;|)
2461    public
2462    synchronized
2463    boolean
2464    keyDown
2465    (#%parens Event e |,| int key)
2466    (#%braces
2467      if
2468      (#%parens DEBUG)
2469      System
2470      |.|
2471      out
2472      |.|
2473      println
2474      (#%parens "Key event: " + key)
2475      |;|
2476      if
2477      (#%parens computeThread != null)
2478      (#%braces
2479        if
2480        (#%parens computeThread |.| isAlive (#%parens))
2481        (#%braces
2482          computeThread
2483          |.|
2484          stop
2485          (#%parens)
2486          |;|
2487          write
2488          (#%parens "**interrupted**
2489" |,| 0)
2490          |;|
2491          computeThread
2492          =
2493          null
2494          |;|
2495          return
2496          true
2497          |;|)
2498        computeThread
2499        =
2500        null
2501        |;|)
2502      if
2503      (#%parens key == #\newline)
2504      (#%braces
2505        String
2506        s
2507        =
2508        new
2509        String
2510        (#%parens)
2511        |;|
2512        for
2513        (#%parens int i = 0 |;| i < curCol |;| i ++)
2514        (#%braces s += page (#%brackets curRow) (#%brackets i) |;|)
2515        write
2516        (#%parens (#%parens char) key |,| 0)
2517        |;|
2518        computeThread
2519        =
2520        HalServer
2521        |.|
2522        processline
2523        (#%parens s)
2524        |;|)
2525      else
2526      (#%braces write (#%parens (#%parens char) key |,| 0) |;|)
2527      return
2528      true
2529      |;|)
2530    public
2531    boolean
2532    mouseDown
2533    (#%parens Event evt |,| int x |,| int y)
2534    (#%braces requestFocus (#%parens) |;| return true |;|)
2535    boolean
2536    have_focus
2537    =
2538    false
2539    |;|
2540    void
2541    draw_border
2542    (#%parens Graphics g)
2543    (#%braces
2544      Dimension
2545      d
2546      =
2547      size
2548      (#%parens)
2549      |;|
2550      if
2551      (#%parens have_focus)
2552      (#%braces g |.| setColor (#%parens getForeground (#%parens)) |;|)
2553      else
2554      (#%braces g |.| setColor (#%parens getBackground (#%parens)) |;|)
2555      g
2556      |.|
2557      drawRect
2558      (#%parens 0 |,| 0 |,| d |.| width |,| d |.| height)
2559      |;|
2560      g
2561      |.|
2562      drawRect
2563      (#%parens 1 |,| 1 |,| d |.| width - 2 |,| d |.| height - 2)
2564      |;|
2565      g
2566      |.|
2567      setColor
2568      (#%parens Color |.| white)
2569      |;|
2570      g
2571      |.|
2572      draw3DRect
2573      (#%parens 2 |,| 2 |,| d |.| width - 4 |,| d |.| height - 4 |,| true)
2574      |;|
2575      g
2576      |.|
2577      draw3DRect
2578      (#%parens 3 |,| 3 |,| d |.| width - 6 |,| d |.| height - 6 |,| true)
2579      |;|)
2580    public
2581    void
2582    paint
2583    (#%parens Graphics g)
2584    (#%braces draw_border (#%parens g) |;| screenRedraw (#%parens g) |;|)
2585    public
2586    boolean
2587    gotFocus
2588    (#%parens Event evt |,| Object what)
2589    (#%braces
2590      Graphics
2591      g
2592      =
2593      getGraphics
2594      (#%parens)
2595      |;|
2596      have_focus
2597      =
2598      true
2599      |;|
2600      if
2601      (#%parens g != null)
2602      draw_border
2603      (#%parens g)
2604      |;|
2605      return
2606      true
2607      |;|)
2608    public
2609    boolean
2610    lostFocus
2611    (#%parens Event evt |,| Object what)
2612    (#%braces
2613      Graphics
2614      g
2615      =
2616      getGraphics
2617      (#%parens)
2618      |;|
2619      have_focus
2620      =
2621      false
2622      |;|
2623      if
2624      (#%parens g != null)
2625      draw_border
2626      (#%parens g)
2627      |;|
2628      return
2629      true
2630      |;|)
2631    public
2632    final
2633    synchronized
2634    void
2635    update
2636    (#%parens Graphics g)
2637    (#%braces paint (#%parens g) |;|)))
Note: See TracBrowser for help on using the repository browser.