'From Pharo0.1 of 16 May 2008 [Latest update: #10289] on 23 April 2009 at 12:59:45 pm'! Object subclass: #InputEventHandler instanceVariableNames: 'eventFetcher ' classVariableNames: '' poolDictionaries: 'EventSensorConstants' category: 'Kernel-Processes'! InputEventHandler subclass: #UserInterruptHandler instanceVariableNames: 'interruptKey ' classVariableNames: 'Default ' poolDictionaries: 'EventSensorConstants' category: 'Kernel-Processes'! !InputEventHandler methodsFor: 'initialize-release' stamp: 'sig 4/23/2009 12:31'! register InputEventFetcher default registerHandler: self ! ! !InputEventHandler methodsFor: 'initialize-release' stamp: 'sig 4/23/2009 12:32'! unregister InputEventFetcher default unregisterHandler: self ! ! !InputEventSensor methodsFor: 'initialize-release' stamp: 'sig 4/23/2009 12:46'! shutDown self unregister! ! !InputEventSensor methodsFor: 'initialize-release' stamp: 'sig 4/23/2009 12:53'! startUp self register! ! !InputEventSensor class methodsFor: 'class initialization' stamp: 'sig 4/23/2009 12:53'! installEventSensorFramework: fetcherClass "Installs the new sensor framework." "InputEventSensor installEventSensorFramework: InputEventPollingFetcher" | newSensor | "Do some extra cleanup" {InputEventFetcher. InputEventPollingFetcher. InputSensor. } do: [:oldSensorClass | Smalltalk removeFromShutDownList: oldSensorClass. Smalltalk removeFromStartUpList: oldSensorClass]. fetcherClass install. "Shut down old sensor" Sensor shutDown. Smalltalk removeFromShutDownList: Sensor class. Smalltalk removeFromStartUpList: Sensor class. "Note: We must use #become: here to replace all references to the old sensor with the new one, since Sensor is referenced from all the existing controllers." newSensor := self new. Sensor becomeForward: newSensor. "done" newSensor register. "Register the interrupt handler" UserInterruptHandler default register. Smalltalk addToStartUpList: Sensor class after: InputEventFetcher. Smalltalk addToShutDownList: Sensor class after: Form. "Project spawnNewProcessAndTerminateOld: true"! ! !UserInterruptHandler class methodsFor: 'instance creation' stamp: 'sig 4/23/2009 12:50'! default ^ Default ifNil: [Default := self new]! ! InputEventHandler subclass: #UserInterruptHandler instanceVariableNames: 'interruptKey' classVariableNames: 'Default' poolDictionaries: 'EventSensorConstants' category: 'Kernel-Processes'! InputEventHandler removeSelector: #registerIn:! Object subclass: #InputEventHandler instanceVariableNames: '' classVariableNames: '' poolDictionaries: 'EventSensorConstants' category: 'Kernel-Processes'!