@@ -6,10 +6,45 @@ Class {
66 ' blinkingTask' ,
77 ' blinkingScheduleTask'
88 ],
9+ #classVars : [
10+ ' BlinkDelay' ,
11+ ' BlinkInterval' ,
12+ ' ShouldBlink'
13+ ],
914 #category : #' Brick-Editor-UI'
1015}
1116
12- { #category : #initialization }
17+ { #category : #accessing }
18+ BrCursorElement class >> blinkDelay [
19+ ^ BlinkDelay ifNil: [ 1 second ]
20+ ]
21+
22+ { #category : #accessing }
23+ BrCursorElement class >> blinkDelay: aDuration [
24+ BlinkDelay := aDuration
25+ ]
26+
27+ { #category : #accessing }
28+ BrCursorElement class >> blinkInterval [
29+ ^ BlinkInterval ifNil: [ 1 second ]
30+ ]
31+
32+ { #category : #accessing }
33+ BrCursorElement class >> blinkInterval: aDuration [
34+ BlinkInterval := aDuration
35+ ]
36+
37+ { #category : #accessing }
38+ BrCursorElement class >> shouldBlink [
39+ ^ ShouldBlink ifNil: [ true ]
40+ ]
41+
42+ { #category : #accessing }
43+ BrCursorElement class >> shouldBlink: aBoolean [
44+ ShouldBlink := aBoolean
45+ ]
46+
47+ { #category : #' private - blinking' }
1348BrCursorElement >> doBlink [
1449 (self opacity > 0.5 )
1550 ifTrue: [ self opacity: 0.0 ]
@@ -26,49 +61,51 @@ BrCursorElement >> initialize [
2661 self scheduleBlinking
2762]
2863
29- { #category : #' as yet unclassified ' }
64+ { #category : #' hooks - children ' }
3065BrCursorElement >> onAddedToSceneGraph [
3166 super onAddedToSceneGraph.
3267
3368 self scheduleBlinking
3469]
3570
36- { #category : #' as yet unclassified ' }
71+ { #category : #' hooks - geometry ' }
3772BrCursorElement >> onPositionInSpaceChanged [
3873 super onPositionChanged.
3974
4075 self stopBlinking.
4176 self scheduleBlinking
4277]
4378
44- { #category : #' as yet unclassified ' }
79+ { #category : #' hooks - children ' }
4580BrCursorElement >> onRemovedFromSceneGraph [
4681 super onRemovedFromSceneGraph.
4782
48- self scheduleBlinking
83+ self stopBlinking
4984]
5085
51- { #category : #' as yet unclassified ' }
86+ { #category : #' private - blinking ' }
5287BrCursorElement >> scheduleBlinking [
53- self opacity: 1.0 .
54- blinkingScheduleTask ifNotNil: [ :aTask | aTask stop ].
55- blinkingTask ifNotNil: [ :aTask | aTask stop ].
88+ self stopBlinking.
89+
90+ self class shouldBlink
91+ ifFalse: [ ^ self ].
92+
5693 blinkingScheduleTask := (BlDelayedTaskAction new
57- delay: 1 second ;
94+ delay: self class blinkDelay ;
5895 action: [ self startBlinking ]).
5996
6097 self enqueueTask: blinkingScheduleTask
6198]
6299
63- { #category : #' as yet unclassified ' }
100+ { #category : #' private - blinking ' }
64101BrCursorElement >> startBlinking [
65102 blinkingTask := (BlRepeatedTaskAction new
66- delay: 1 second ;
103+ delay: self class blinkInterval ;
67104 action: [ self doBlink ]).
68105 self enqueueTask: blinkingTask
69106]
70107
71- { #category : #accessing }
108+ { #category : #' private - blinking ' }
72109BrCursorElement >> stopBlinking [
73110 blinkingScheduleTask ifNotNil: [ :aTask | aTask stop ].
74111 blinkingTask ifNotNil: [ :aTask | aTask stop ].
0 commit comments