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

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

honu 2.0: handle oct/hex number constants

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