home *** CD-ROM | disk | FTP | other *** search
-
- 'From Squeak 2.2 of Sept 23, 1998 on 9 October 1998 at 2:53:44 pm'!
- Object subclass: #Clock
- instanceVariableNames: 'time timer displayFormat position '
- classVariableNames: ''
- poolDictionaries: ''
- category: 'ClockWorks'!
-
-
- !Clock methodsFor: 'time management'!
- addMinute
- time _ time addTime: (Time fromSeconds: 60)
- !
- subtractHour
- time _ time subtractTime: (Time fromSeconds: 60*60)
- !
- nextSecond
- time _ time addTime: (Time fromSeconds: 1).
- self timeDisplay.
-
- !
- addHour
- time _ time addTime: (Time fromSeconds: 60*60)
- !
- subtractMinute
- time _ time subtractTime: (Time fromSeconds: 60)
- ! !
-
- !Clock methodsFor: 'interface-accessing'!
- position: aPoint
- position := aPoint.
- !
- position
- ^ position! !
-
- !Clock methodsFor: 'window'!
- catchEvents
- | hourPlus hourMinus minutePlus minuteMinus click |
- "Define the regions where we care about mouse clicks"
- hourPlus _ (position x) @ ((position y)+100) extent: 100@50.
- hourMinus _ ((position x)+100) @ ((position y)+100) extent: 100@50.
- minutePlus _ (position x) @ ((position y)+150) extent: 100@50.
- minuteMinus _ ((position x)+100) @ ((position y)+150) extent: 100@50.
-
- "Enter into an event loop"
- [Sensor yellowButtonPressed] whileFalse: "Yellow button press ends the clock"
- ["Give other processes a chance, and give user a chance to pick up."
- (Delay forMilliseconds: 500) wait.
- "self timeDisplay."
- (Sensor redButtonPressed) ifTrue: "Red button press could go to a button"
- [click _ Sensor mousePoint.
- (hourPlus containsPoint: click) ifTrue: [self addHour].
- (hourMinus containsPoint: click) ifTrue: [self subtractHour].
- (minutePlus containsPoint: click) ifTrue: [self addMinute].
- (minuteMinus containsPoint: click) ifTrue: [self subtractMinute].]].
- !
- openWindow
- | pen |
- "Open the blank frame"
- (Form extent: 200@200) fillWhite displayAt: position.
-
- "Draw the Buttons"
- pen := Pen new.
- pen up. pen goto: (position x) @ ((position y)+100). pen down.
- pen north. pen turn: 90.
- pen go: 200.
- pen up. pen goto: (position x) @ ((position y)+150). pen down.
- pen go: 200.
- pen up. pen goto: ((position x)+100) @ ((position y)+100). pen down.
- pen turn: 90.
- pen go: 100.
- 'Hours +' displayAt: ((position x)+25) @ ((position y)+125).
- 'Hours -' displayAt: ((position x)+125) @ ((position y)+125).
- 'Minutes +' displayAt: ((position x)+25) @ ((position y)+175).
- 'Minutes -' displayAt: ((position x)+125) @ ((position y)+175).! !
-
- !Clock methodsFor: 'timedisplay'!
- timeDisplay
- ' ' displayAt: position + (50@50). "Erase whatever time was there before"
- self display displayAt: position + (50 @ 50).! !
-
-
-
-