home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
European Smalltalk User Group 2004 September
/
esugcd.iso
/
Books-Tutorial-Lectures
/
Books
/
FreeBooks
/
GuzdialBookDrafts
/
clock-ui3.cs
< prev
next >
Wrap
Text File
|
2003-03-31
|
2KB
|
87 lines
'From Squeak 2.2 of Sept 23, 1998 on 2 November 1998 at 3:06:55 pm'!
Object subclass: #Clock
instanceVariableNames: 'time timer displayFormat '
classVariableNames: ''
poolDictionaries: ''
category: 'ClockWorks'!
Object subclass: #ClockText
instanceVariableNames: 'model position query '
classVariableNames: ''
poolDictionaries: ''
category: 'ClockWorks'!
Object subclass: #ClockWindow
instanceVariableNames: 'position buttons '
classVariableNames: ''
poolDictionaries: ''
category: 'ClockWorks'!
!Clock methodsFor: 'time management'!
nextSecond
time _ time addTime: (Time fromSeconds: 1).
self changed: #time.
! !
!ClockWindow methodsFor: 'window processing'!
openOn: aModel
| button |
position isNil ifTrue: [self error: 'Must set position first.'].
"Open the blank frame"
(Form extent: 200@200) fillWhite displayAt: position.
"Setup the textArea"
ClockText at: (position + (50@50)) on: aModel for: #display.
"Draw the Buttons"
button := ClockButton make: 'Hours +' at: ((position x) @ ((position y)+100) extent: 100@50) for: aModel triggering: #addHour.
self addButton: button.
button := ClockButton make: 'Hours -' at: (((position x)+100) @ ((position y)+100) extent: 100@50) for: aModel triggering: #subtractHour.
self addButton: button.
button := ClockButton make: 'Minutes +' at: ((position x) @ ((position y)+150) extent: 100@50) for: aModel triggering: #addMinute.
self addButton: button.
button := ClockButton make: 'Minutes -' at: (((position x)+100) @ ((position y)+150) extent: 100@50) for: aModel triggering: #subtractMinute.
self addButton: button.
! !
!ClockText methodsFor: 'changeProcessing'!
update: anEvent
anEvent = #time ifTrue: [
' ' displayAt: position . "Erase whatever time was there before"
(model perform: query) displayAt: position.]! !
!ClockText methodsFor: 'accessing'!
query: aMessage
query _ aMessage.!
position: aPoint
position _ aPoint.
!
position
^position
!
query
^query!
model: aModel
model := aModel.
aModel addDependent: self.
!
model
^model
! !
!ClockText class methodsFor: 'creation'!
at: aPosition on: aModel for: aQuery
| text |
text := self new.
text position: aPosition.
text model: aModel.
text query: aQuery.
^text
! !