Skip to content

Commit 3062995

Browse files
Merge pull request #157 from ThalesGroup/dev-156
GeoViewManager: add event to be notified when scale and center changed.
2 parents f2b3e12 + 4619c81 commit 3062995

File tree

7 files changed

+280
-18
lines changed

7 files changed

+280
-18
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Class {
2+
#name : #GeoViewManagerBlocImplTest,
3+
#superclass : #GeoViewManagerImplTest,
4+
#category : #'GeoView-Molecule-Tests-Cases'
5+
}
6+
7+
{ #category : #setup }
8+
GeoViewManagerBlocImplTest >> componentImplClass [
9+
10+
^ GeoViewManagerBlocImpl
11+
]

src/GeoView-Molecule-Tests/GeoViewManagerImplTests.class.st renamed to src/GeoView-Molecule-Tests/GeoViewManagerImplTest.class.st

Lines changed: 84 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,52 @@
11
Class {
2-
#name : #GeoViewManagerImplTests,
2+
#name : #GeoViewManagerImplTest,
33
#superclass : #TestCase,
44
#instVars : [
5-
'geoViewManagerName',
6-
'geoViewManager'
5+
'geoViewManager',
6+
'geoViewUser'
77
],
88
#category : #'GeoView-Molecule-Tests-Cases'
99
}
1010

11+
{ #category : #testing }
12+
GeoViewManagerImplTest class >> isAbstract [
13+
14+
^ self == GeoViewManagerImplTest
15+
]
16+
17+
{ #category : #setup }
18+
GeoViewManagerImplTest >> componentImplClass [
19+
20+
self subclassResponsibility
21+
]
22+
1123
{ #category : #running }
12-
GeoViewManagerImplTests >> setUp [
24+
GeoViewManagerImplTest >> setUp [
1325

1426
super setUp.
27+
1528
MolComponentManager cleanUp.
1629

17-
geoViewManagerName := #myGeoViewManager.
18-
geoViewManager := GeoViewManagerBlocImpl start: geoViewManagerName.
30+
geoViewManager := self componentImplClass start.
31+
geoViewUser := GeoViewManagerTestUserImpl start
1932
]
2033

2134
{ #category : #running }
22-
GeoViewManagerImplTests >> tearDown [
35+
GeoViewManagerImplTest >> tearDown [
2336

24-
super tearDown.
25-
GeoViewManagerBlocImpl stop: geoViewManagerName.
37+
self componentImplClass stop.
2638
geoViewManager := nil.
27-
geoViewManagerName := nil.
39+
40+
geoViewUser stop.
41+
geoViewUser := nil.
2842

29-
MolComponentManager cleanUp
43+
MolComponentManager cleanUp.
44+
45+
super tearDown
3046
]
3147

3248
{ #category : #tests }
33-
GeoViewManagerImplTests >> testAddLayerAfterIndex [
49+
GeoViewManagerImplTest >> testAddLayerAfterIndex [
3450

3551
| layerA layerB layerC |
3652

@@ -54,14 +70,14 @@ GeoViewManagerImplTests >> testAddLayerAfterIndex [
5470
]
5571

5672
{ #category : #tests }
57-
GeoViewManagerImplTests >> testAggregatedComponentsStart [
73+
GeoViewManagerImplTest >> testAggregatedComponentsStart [
5874

5975
self assert: geoViewManager getSmockSymbologyManagerServicesProvider isNotFoundServices equals: false.
6076
self assert: geoViewManager getSmockSelectionManagerServicesProvider isNotFoundServices equals: false.
6177
]
6278

6379
{ #category : #tests }
64-
GeoViewManagerImplTests >> testCreateAndAddGeoObjectsLayer [
80+
GeoViewManagerImplTest >> testCreateAndAddGeoObjectsLayer [
6581
"Warning : default implementation of GeoViewManager is an abtract engine implementation, all created objets are nil"
6682

6783
| layer |
@@ -70,7 +86,21 @@ GeoViewManagerImplTests >> testCreateAndAddGeoObjectsLayer [
7086
]
7187

7288
{ #category : #tests }
73-
GeoViewManagerImplTests >> testLayerServices [
89+
GeoViewManagerImplTest >> testGetGeoCenter [
90+
91+
self
92+
assert: geoViewManager getGeoCenter class
93+
equals: AbsoluteCoordinates
94+
]
95+
96+
{ #category : #tests }
97+
GeoViewManagerImplTest >> testGetScale [
98+
99+
self assert: geoViewManager getScale isNumber
100+
]
101+
102+
{ #category : #tests }
103+
GeoViewManagerImplTest >> testLayerServices [
74104
| layer |
75105
geoViewManager addLayer: (GeoViewTestLayer new name: #layer1).
76106
self assert: geoViewManager getLayers size equals: 1.
@@ -89,7 +119,7 @@ GeoViewManagerImplTests >> testLayerServices [
89119
]
90120

91121
{ #category : #tests }
92-
GeoViewManagerImplTests >> testLayerServicesWithoutLayers [
122+
GeoViewManagerImplTest >> testLayerServicesWithoutLayers [
93123
| layer |
94124
self assert: geoViewManager getLayers isEmpty.
95125
layer := geoViewManager getLayer: #nonExistingLayer.
@@ -101,3 +131,41 @@ GeoViewManagerImplTests >> testLayerServicesWithoutLayers [
101131
geoViewManager removeAllLayers.
102132
self assert: geoViewManager getLayers isEmpty.
103133
]
134+
135+
{ #category : #tests }
136+
GeoViewManagerImplTest >> testSetGeoCenter [
137+
138+
self
139+
deny: geoViewManager getGeoCenter
140+
equals: AbsoluteCoordinates frBrest.
141+
142+
self assert: geoViewUser center isNil.
143+
144+
geoViewManager setGeoCenter: AbsoluteCoordinates frBrest.
145+
self
146+
assert: geoViewManager getGeoCenter
147+
equals: AbsoluteCoordinates frBrest.
148+
149+
self
150+
assert: geoViewUser center
151+
equals: AbsoluteCoordinates frBrest -> geoViewManager componentName
152+
]
153+
154+
{ #category : #tests }
155+
GeoViewManagerImplTest >> testSetScale [
156+
157+
self
158+
deny: geoViewManager getScale
159+
equals: 1000.
160+
161+
self assert: geoViewUser scale isNil.
162+
163+
geoViewManager setScale: 1000.
164+
self
165+
assert: geoViewManager getScale
166+
equals: 1000.
167+
168+
self
169+
assert: geoViewUser scale
170+
equals: 1000 -> geoViewManager componentName
171+
]
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
Trait {
2+
#name : #GeoViewManagerTestUser,
3+
#traits : 'MolComponentType',
4+
#classTraits : 'MolComponentType classTrait',
5+
#category : #'GeoView-Molecule-Tests-Utils'
6+
}
7+
8+
{ #category : #'accessing - events' }
9+
GeoViewManagerTestUser classSide >> consumedComponentEvents [
10+
11+
<componentContract>
12+
^ {
13+
GeoViewManagerEvents.
14+
GeoViewManagerCursorEvents }
15+
]
16+
17+
{ #category : #'accessing - parameters' }
18+
GeoViewManagerTestUser classSide >> usedComponentParameters [
19+
20+
<componentContract>
21+
^ { GeoViewManagerParameters }
22+
]
23+
24+
{ #category : #'accessing - services' }
25+
GeoViewManagerTestUser classSide >> usedComponentServices [
26+
27+
<componentContract>
28+
^ {
29+
GeoViewManagerServices.
30+
GeoViewManagerObjectsServices.
31+
GeoViewManagerPickingServices }
32+
]
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
Class {
2+
#name : #GeoViewManagerTestUserImpl,
3+
#superclass : #MolAbstractComponentImpl,
4+
#traits : 'GeoViewManagerTestUser + GeoViewManagerCursorEvents + GeoViewManagerEvents',
5+
#classTraits : 'GeoViewManagerTestUser classTrait + GeoViewManagerCursorEvents classTrait + GeoViewManagerEvents classTrait',
6+
#instVars : [
7+
'center',
8+
'scale'
9+
],
10+
#category : #'GeoView-Molecule-Tests-Utils'
11+
}
12+
13+
{ #category : #accessing }
14+
GeoViewManagerTestUserImpl >> center [
15+
16+
^ center
17+
]
18+
19+
{ #category : #'life cycle' }
20+
GeoViewManagerTestUserImpl >> componentActivate [
21+
22+
super componentActivate.
23+
24+
self getGeoViewManagerCursorEventsSubscriber subscribe: self.
25+
self getGeoViewManagerEventsSubscriber subscribe: self
26+
]
27+
28+
{ #category : #'life cycle' }
29+
GeoViewManagerTestUserImpl >> componentPassivate [
30+
31+
self getGeoViewManagerCursorEventsSubscriber unsubscribe: self.
32+
self getGeoViewManagerEventsSubscriber unsubscribe: self.
33+
34+
super componentPassivate
35+
]
36+
37+
{ #category : #'events - view' }
38+
GeoViewManagerTestUserImpl >> geoViewCenterHasChanged: anAbsoluteCoordinates in: aGeoViewManagerKey [
39+
40+
center := anAbsoluteCoordinates -> aGeoViewManagerKey
41+
]
42+
43+
{ #category : #'events - view' }
44+
GeoViewManagerTestUserImpl >> geoViewScaleHasChanged: aScale in: aGeoViewManagerKey [
45+
46+
scale := aScale -> aGeoViewManagerKey
47+
]
48+
49+
{ #category : #'component accessing' }
50+
GeoViewManagerTestUserImpl >> getGeoViewManagerCursorEventsSubscriber [
51+
| eventsSymbol eventsSubscriber itf |
52+
itf := GeoViewManagerCursorEvents.
53+
eventsSymbol := self eventsSubscribers at: itf ifAbsent: [^MolNotFoundEventsSubscriber new interface: itf name: nil].
54+
eventsSymbol isCollection
55+
ifTrue:
56+
[eventsSubscriber := MolComponentManager default locatorServices
57+
searchEventsSubscriberFor: GeoViewManagerCursorEvents named: eventsSymbol ].
58+
^eventsSubscriber
59+
]
60+
61+
{ #category : #'component accessing' }
62+
GeoViewManagerTestUserImpl >> getGeoViewManagerEventsSubscriber [
63+
| eventsSymbol eventsSubscriber itf |
64+
itf := GeoViewManagerEvents.
65+
eventsSymbol := self eventsSubscribers at: itf ifAbsent: [^MolNotFoundEventsSubscriber new interface: itf name: nil].
66+
eventsSymbol isCollection
67+
ifTrue:
68+
[eventsSubscriber := MolComponentManager default locatorServices
69+
searchEventsSubscriberFor: GeoViewManagerEvents named: eventsSymbol ].
70+
^eventsSubscriber
71+
]
72+
73+
{ #category : #'component accessing' }
74+
GeoViewManagerTestUserImpl >> getGeoViewManagerObjectsServicesProvider [
75+
| servicesSymbol servicesProvider itf |
76+
77+
itf := GeoViewManagerObjectsServices.
78+
servicesSymbol := self servicesProviders at: itf ifAbsent: [nil].
79+
(servicesSymbol isNil or:[servicesSymbol isSymbol not]) ifTrue: [ ^ MolNotFoundServicesProvider new interface: itf name: nil ].
80+
81+
servicesProvider := MolComponentManager default locatorServices searchServicesProviderFor: GeoViewManagerObjectsServices named: servicesSymbol.
82+
^servicesProvider
83+
]
84+
85+
{ #category : #'component accessing' }
86+
GeoViewManagerTestUserImpl >> getGeoViewManagerParametersProvider [
87+
| parametersSymbol parametersProvider itf |
88+
89+
itf := GeoViewManagerParameters.
90+
parametersSymbol := self parametersProviders at: itf ifAbsent: [nil].
91+
(parametersSymbol isNil or:[parametersSymbol isSymbol not]) ifTrue: [ ^ MolNotFoundParametersProvider new interface: itf name: nil ].
92+
93+
parametersProvider := MolComponentManager default locatorServices searchParametersProviderFor: GeoViewManagerParameters named: parametersSymbol.
94+
^parametersProvider
95+
]
96+
97+
{ #category : #'component accessing' }
98+
GeoViewManagerTestUserImpl >> getGeoViewManagerPickingServicesProvider [
99+
| servicesSymbol servicesProvider itf |
100+
101+
itf := GeoViewManagerPickingServices.
102+
servicesSymbol := self servicesProviders at: itf ifAbsent: [nil].
103+
(servicesSymbol isNil or:[servicesSymbol isSymbol not]) ifTrue: [ ^ MolNotFoundServicesProvider new interface: itf name: nil ].
104+
105+
servicesProvider := MolComponentManager default locatorServices searchServicesProviderFor: GeoViewManagerPickingServices named: servicesSymbol.
106+
^servicesProvider
107+
]
108+
109+
{ #category : #'component accessing' }
110+
GeoViewManagerTestUserImpl >> getGeoViewManagerServicesProvider [
111+
| servicesSymbol servicesProvider itf |
112+
113+
itf := GeoViewManagerServices.
114+
servicesSymbol := self servicesProviders at: itf ifAbsent: [nil].
115+
(servicesSymbol isNil or:[servicesSymbol isSymbol not]) ifTrue: [ ^ MolNotFoundServicesProvider new interface: itf name: nil ].
116+
117+
servicesProvider := MolComponentManager default locatorServices searchServicesProviderFor: GeoViewManagerServices named: servicesSymbol.
118+
^servicesProvider
119+
]
120+
121+
{ #category : #accessing }
122+
GeoViewManagerTestUserImpl >> scale [
123+
124+
^ scale
125+
]

src/GeoView-Molecule/GeoViewManagerBlocImpl.class.st

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ GeoViewManagerBlocImpl >> installEventHandlers: aBlElement [
2222
aBlElement addEventHandlerOn: GeoViewLayerAddedEvent do: [ :e | self layerAdded: e ].
2323
aBlElement addEventHandlerOn: GeoViewLayerRemovedEvent do: [ :e | self layerRemoved: e ].
2424

25-
"Projection events"
25+
"View changed events"
2626
aBlElement addEventHandlerOn: GeoViewMapProjectionChangedEvent do: [ :e | self mapProjectionHasChanged: e ].
27-
27+
aBlElement addEventHandlerOn: GeoViewCenterChangedEvent do: [ :e | self centerHasChanged: e ].
28+
aBlElement addEventHandlerOn: GeoViewScaleChangedEvent do: [ :e | self scaleHasChanged: e ].
29+
2830
"Selection events"
2931
aBlElement addEventHandlerOn: GeoViewObjectSelectionChanged do: [ :e | self strategyRequestSetSelection: e objectIndexesList ].
3032
aBlElement addEventHandlerOn: GeoViewObjectSelectionAdded do: [ :e | self strategyRequestAddSelection: e objectIndexesList ].

src/GeoView-Molecule/GeoViewManagerEvents.trait.st

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ Trait {
88
#category : #'GeoView-Molecule-Contract'
99
}
1010

11+
{ #category : #'events - view' }
12+
GeoViewManagerEvents >> geoViewCenterHasChanged: anAbsoluteCoordinates in: aGeoViewManagerKey [
13+
]
14+
1115
{ #category : #'events - layer' }
1216
GeoViewManagerEvents >> geoViewLayerAdded: aKey in: aGeoViewManagerKey [
1317
]
@@ -20,6 +24,10 @@ GeoViewManagerEvents >> geoViewLayerRemoved: aKey in: aGeoViewManagerKey [
2024
GeoViewManagerEvents >> geoViewLayerUpdated: aKey in: aGeoViewManagerKey [
2125
]
2226

27+
{ #category : #'events - view' }
28+
GeoViewManagerEvents >> geoViewScaleHasChanged: aScale in: aGeoViewManagerKey [
29+
]
30+
2331
{ #category : #'events - map projection' }
2432
GeoViewManagerEvents >> mapProjectionHasChanged: aMapProjection in: aGeoViewManagerKey [
2533
]

src/GeoView-Molecule/GeoViewManagerImpl.class.st

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,14 @@ GeoViewManagerImpl >> addObjects: aGeoObjectList [
5252
self view addObjects: aGeoObjectList
5353
]
5454

55+
{ #category : #'private - events' }
56+
GeoViewManagerImpl >> centerHasChanged: anEvent [
57+
58+
self getGeoViewManagerEventsNotifier
59+
geoViewCenterHasChanged: anEvent absoluteCoordinates
60+
in: self componentName
61+
]
62+
5563
{ #category : #services }
5664
GeoViewManagerImpl >> centerOnPoint: aGlobalPoint [
5765
"Center the map on a global point"
@@ -447,6 +455,14 @@ GeoViewManagerImpl >> scaleDown [
447455
self view scaleDown
448456
]
449457

458+
{ #category : #'private - events' }
459+
GeoViewManagerImpl >> scaleHasChanged: anEvent [
460+
461+
self getGeoViewManagerEventsNotifier
462+
geoViewScaleHasChanged: anEvent scale
463+
in: self componentName
464+
]
465+
450466
{ #category : #services }
451467
GeoViewManagerImpl >> scaleUp [
452468

0 commit comments

Comments
 (0)