PrintConverter.st
author claus
Sat, 06 May 1995 16:15:18 +0200
changeset 68 43b867285d01
parent 67 e48bf03eb059
child 69 225a9efd50f5
permissions -rw-r--r--
.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
67
e48bf03eb059 Initial revision
claus
parents:
diff changeset
     1
Object subclass:#PrintConverter 
e48bf03eb059 Initial revision
claus
parents:
diff changeset
     2
	 instanceVariableNames:'valueToStringBlock stringToValueBlock'
e48bf03eb059 Initial revision
claus
parents:
diff changeset
     3
	 classVariableNames:''
e48bf03eb059 Initial revision
claus
parents:
diff changeset
     4
	 poolDictionaries:''
e48bf03eb059 Initial revision
claus
parents:
diff changeset
     5
	 category:'Interface-Support'
e48bf03eb059 Initial revision
claus
parents:
diff changeset
     6
!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
     7
e48bf03eb059 Initial revision
claus
parents:
diff changeset
     8
!PrintConverter class methodsFor:'documentation'!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
     9
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    10
version 
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    11
"
68
claus
parents: 67
diff changeset
    12
$Header: /cvs/stx/stx/libview2/PrintConverter.st,v 1.2 1995-05-06 14:14:34 claus Exp $
67
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    13
"
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    14
!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    15
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    16
documentation
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    17
"
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    18
    printConverters are used with editFields to convert an object
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    19
    to/from some printed representation.
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    20
    Conversion is done via two blocks which can be set at instance
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    21
    creation time - either as custom blocks ot to one of the
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    22
    standard conversions.
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    23
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    24
    Notice: this class was implemented using protocol information
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    25
    from alpha testers - it may not be complete or compatible to
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    26
    the corresponding ST-80 class. If you encounter any incompatibilities,
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    27
    please forward a note to the ST/X team.
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    28
"
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    29
!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    30
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    31
examples 
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    32
"
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    33
    |conv|
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    34
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    35
    conv := (PrintConverter new)
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    36
		toPrint:[:date | date printString]
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    37
		toRead:[:string | Date readFromString:string].
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    38
    (conv printStringFor:(Date today)) inspect.
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    39
    (conv readValueFrom:(Date today printString)) inspect
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    40
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    41
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    42
    |conv|
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    43
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    44
    conv := (PrintConverter new) initForNumber.
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    45
    (conv printStringFor:12345) inspect.
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    46
    (conv readValueFrom:'12345') inspect
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    47
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    48
68
claus
parents: 67
diff changeset
    49
    |conv|
claus
parents: 67
diff changeset
    50
claus
parents: 67
diff changeset
    51
    conv := (PrintConverter new) initForYesNo.
claus
parents: 67
diff changeset
    52
    (conv printStringFor:true).  
claus
parents: 67
diff changeset
    53
    (conv printStringFor:false).    
claus
parents: 67
diff changeset
    54
    (conv readValueFrom:'yes').  
claus
parents: 67
diff changeset
    55
    (conv readValueFrom:'no').  
claus
parents: 67
diff changeset
    56
    'if language is german:'.
claus
parents: 67
diff changeset
    57
    (conv readValueFrom:'ja').    
claus
parents: 67
diff changeset
    58
    (conv readValueFrom:'nein')  
claus
parents: 67
diff changeset
    59
67
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    60
    see concrete uses in the EditField examples.
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    61
"
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    62
! !
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    63
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    64
!PrintConverter class methodsFor:'instance creation'!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    65
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    66
new
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    67
    ^ (super new) 
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    68
	toPrint:[:val | val]
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    69
	toRead:[:string | string]
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    70
! !
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    71
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    72
!PrintConverter methodsFor:'initialization'!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    73
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    74
toPrint:printBlock toRead:readBlock
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    75
    valueToStringBlock := printBlock.
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    76
    stringToValueBlock := readBlock.
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    77
!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    78
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    79
initForNumber
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    80
    valueToStringBlock := [:num | num printString].
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    81
    stringToValueBlock := [:string | Number readFromString:string onError:0]
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    82
!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    83
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    84
initForNumberOrNil
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    85
    valueToStringBlock := [:num | num isNil ifTrue:[''] ifFalse:[num printString]].
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    86
    stringToValueBlock := [:string | Number readFromString:string onError:nil]
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    87
!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    88
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    89
initForString
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    90
    valueToStringBlock := [:val | val isNil ifTrue:[''] ifFalse:[val]].
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    91
    stringToValueBlock := [:string | string]
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    92
!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    93
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    94
initForDate
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    95
    valueToStringBlock := [:date | date printString].
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    96
    stringToValueBlock := [:string | Date readFromString:string onError:[Date today]]
68
claus
parents: 67
diff changeset
    97
!
claus
parents: 67
diff changeset
    98
claus
parents: 67
diff changeset
    99
initForYesNo
claus
parents: 67
diff changeset
   100
    valueToStringBlock := [:bool | bool ifTrue:[ApplicationModel classResources string:'yes']
claus
parents: 67
diff changeset
   101
					ifFalse:[ApplicationModel classResources string:'no']].
claus
parents: 67
diff changeset
   102
    stringToValueBlock := [:string | string = (ApplicationModel classResources string:'yes')]
67
e48bf03eb059 Initial revision
claus
parents:
diff changeset
   103
! !
e48bf03eb059 Initial revision
claus
parents:
diff changeset
   104
e48bf03eb059 Initial revision
claus
parents:
diff changeset
   105
!PrintConverter methodsFor:'converting'!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
   106
e48bf03eb059 Initial revision
claus
parents:
diff changeset
   107
printStringFor:aValue
e48bf03eb059 Initial revision
claus
parents:
diff changeset
   108
    ^ valueToStringBlock value:aValue
e48bf03eb059 Initial revision
claus
parents:
diff changeset
   109
!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
   110
e48bf03eb059 Initial revision
claus
parents:
diff changeset
   111
readValueFrom:aString
e48bf03eb059 Initial revision
claus
parents:
diff changeset
   112
    ^ stringToValueBlock value:aString
e48bf03eb059 Initial revision
claus
parents:
diff changeset
   113
! !