PrintConverter.st
author claus
Wed, 03 May 1995 20:15:57 +0200
changeset 67 e48bf03eb059
child 68 43b867285d01
permissions -rw-r--r--
Initial revision
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
"
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    12
$Header: /cvs/stx/stx/libview2/PrintConverter.st,v 1.1 1995-05-03 18:15:57 claus Exp $
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
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    49
    see concrete uses in the EditField examples.
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    50
"
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    51
! !
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    52
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    53
!PrintConverter class methodsFor:'instance creation'!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    54
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    55
new
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    56
    ^ (super new) 
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    57
	toPrint:[:val | val]
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    58
	toRead:[:string | string]
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    59
! !
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    60
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    61
!PrintConverter methodsFor:'initialization'!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    62
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    63
toPrint:printBlock toRead:readBlock
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    64
    valueToStringBlock := printBlock.
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    65
    stringToValueBlock := readBlock.
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    66
!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    67
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    68
initForNumber
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    69
    valueToStringBlock := [:num | num printString].
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    70
    stringToValueBlock := [:string | Number readFromString:string onError:0]
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    71
!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    72
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    73
initForNumberOrNil
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    74
    valueToStringBlock := [:num | num isNil ifTrue:[''] ifFalse:[num printString]].
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    75
    stringToValueBlock := [:string | Number readFromString:string onError:nil]
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    76
!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    77
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    78
initForString
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    79
    valueToStringBlock := [:val | val isNil ifTrue:[''] ifFalse:[val]].
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    80
    stringToValueBlock := [:string | string]
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    81
!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    82
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    83
initForDate
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    84
    valueToStringBlock := [:date | date printString].
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    85
    stringToValueBlock := [:string | Date readFromString:string onError:[Date today]]
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    86
! !
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    87
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    88
!PrintConverter methodsFor:'converting'!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    89
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    90
printStringFor:aValue
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    91
    ^ valueToStringBlock value:aValue
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    92
!
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    93
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    94
readValueFrom:aString
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    95
    ^ stringToValueBlock value:aString
e48bf03eb059 Initial revision
claus
parents:
diff changeset
    96
! !