5 * LocationWindowInteraction usage example for Swift
6 * Demonstrates specific methods: stickToBorder, rotateGestureEnabled, tiltGesturesEnabled,
7 * scrollGesturesEnabled, zoomGesturesEnabled, pickRadius, pickMapObjectAt, pickMapFeatureAt,
8 * addPickListener, addInputListener, removeInputListener
10class LocationWindowInteractionExample {
11 private var locationWindow: NCLocationWindow?
12 private var inputListener: NCInputListener?
13 private var pickListener: NCPickListener?
16 demonstrateLocationWindowInteractionMethods()
20 * Demonstrate LocationWindowInteraction methods
22 private func demonstrateLocationWindowInteractionMethods() {
23 print("=== LocationWindowInteraction Example ===")
25 demonstrateGestureProperties()
26 demonstratePickProperties()
27 demonstratePickMethods()
28 demonstrateInputListeners()
29 demonstratePickListeners()
34 * Demonstrate gesture properties
36 private func demonstrateGestureProperties() {
37 print("--- Gesture Properties ---")
39 guard let locationWindow = locationWindow else {
40 print("LocationWindow not available yet")
44 // [swift_LocationWindow_setStickToBorder]
45 // Set stick to border property
46 locationWindow.stickToBorder = true
47 print("Set stick to border to true")
48 // [swift_LocationWindow_setStickToBorder]
50 // [swift_LocationWindow_setRotateGestureEnabled]
51 // Set rotate gesture enabled
52 locationWindow.rotateGestureEnabled = true
53 print("Set rotate gesture enabled to true")
54 // [swift_LocationWindow_setRotateGestureEnabled]
56 // [swift_LocationWindow_setTiltGesturesEnabled]
57 // Set tilt gestures enabled
58 locationWindow.tiltGesturesEnabled = true
59 print("Set tilt gestures enabled to true")
60 // [swift_LocationWindow_setTiltGesturesEnabled]
62 // [swift_LocationWindow_setScrollGesturesEnabled]
63 // Set scroll gestures enabled
64 locationWindow.scrollGesturesEnabled = true
65 print("Set scroll gestures enabled to true")
66 // [swift_LocationWindow_setScrollGesturesEnabled]
68 // [swift_LocationWindow_setZoomGesturesEnabled]
69 // Set zoom gestures enabled
70 locationWindow.zoomGesturesEnabled = true
71 print("Set zoom gestures enabled to true")
72 // [swift_LocationWindow_setZoomGesturesEnabled]
74 // Test different gesture combinations
76 [true, true, true, true, true],
77 [false, true, true, true, false],
78 [true, false, true, false, true],
79 [false, false, false, false, false],
82 for (i, test) in gestureTests.enumerated() {
89 locationWindow.rotateGestureEnabled = rotate
90 locationWindow.tiltGesturesEnabled = tilt
91 locationWindow.scrollGesturesEnabled = scroll
92 locationWindow.zoomGesturesEnabled = zoom
93 locationWindow.stickToBorder = stick
94 print("Gesture test \(i): Rotate=\(rotate), Tilt=\(tilt), Scroll=\(scroll), Zoom=\(zoom), Stick=\(stick)")
99 * Demonstrate pick properties
101 private func demonstratePickProperties() {
102 print("--- Pick Properties ---")
104 guard let locationWindow = locationWindow else {
105 print("LocationWindow not available yet")
109 // [swift_LocationWindow_setPickRadius]
111 locationWindow.pickRadius = 10.0
112 print("Set pick radius to 10.0 pixels")
113 // [swift_LocationWindow_setPickRadius]
115 // Test different pick radius values
116 let pickRadiusTests = [5.0, 10.0, 20.0, 50.0, 100.0]
118 for (i, radius) in pickRadiusTests.enumerated() {
119 locationWindow.pickRadius = radius
120 print("Pick radius test \(i): \(radius) pixels")
125 * Demonstrate pick methods
127 private func demonstratePickMethods() {
128 print("--- Pick Methods ---")
130 guard let locationWindow = locationWindow else {
131 print("LocationWindow not available yet")
135 // [swift_LocationWindow_pickMapObjectAt]
136 // Pick map object at screen position
137 let screenPoint = NCPoint(x: 100.0, y: 200.0)
138 locationWindow.pickMapObject(at: screenPoint)
139 print("Picked map object at screen position (\(screenPoint.x), \(screenPoint.y))")
140 // [swift_LocationWindow_pickMapObjectAt]
142 // [swift_LocationWindow_pickMapFeatureAt]
143 // Pick map feature at screen position
144 let featurePoint = NCPoint(x: 150.0, y: 250.0)
145 locationWindow.pickMapFeature(at: featurePoint)
146 print("Picked map feature at screen position (\(featurePoint.x), \(featurePoint.y))")
147 // [swift_LocationWindow_pickMapFeatureAt]
149 // Test pick at different positions
151 NCPoint(x: 50.0, y: 50.0),
152 NCPoint(x: 200.0, y: 300.0),
153 NCPoint(x: 400.0, y: 100.0),
154 NCPoint(x: 300.0, y: 400.0),
157 for (i, point) in pickTests.enumerated() {
158 locationWindow.pickMapObject(at: point)
159 locationWindow.pickMapFeature(at: point)
160 print("Pick test \(i): Object and feature at (\(point.x), \(point.y))")
165 * Demonstrate input listeners
167 private func demonstrateInputListeners() {
168 print("--- Input Listeners ---")
170 guard let locationWindow = locationWindow else {
171 print("LocationWindow not available yet")
175 // [swift_LocationWindow_addInputListener]
176 // Add input listener
177 inputListener = InputListenerImpl()
178 locationWindow.addInputListener(inputListener!)
179 print("Added input listener")
180 // [swift_LocationWindow_addInputListener]
182 // [swift_LocationWindow_removeInputListener]
183 // Remove input listener
184 locationWindow.removeInputListener(inputListener!)
186 print("Removed input listener")
187 // [swift_LocationWindow_removeInputListener]
189 // Test multiple listeners
196 for (i, listener) in listeners.enumerated() {
197 locationWindow.addInputListener(listener)
198 print("Added input listener \(i)")
201 for (i, listener) in listeners.enumerated() {
202 locationWindow.removeInputListener(listener)
203 print("Removed input listener \(i)")
208 * Demonstrate pick listeners
210 private func demonstratePickListeners() {
211 print("--- Pick Listeners ---")
213 guard let locationWindow = locationWindow else {
214 print("LocationWindow not available yet")
218 // [swift_LocationWindow_addPickListener]
220 pickListener = PickListenerImpl()
221 locationWindow.addPickListener(pickListener!)
222 print("Added pick listener")
223 // [swift_LocationWindow_addPickListener]
225 // Test multiple pick listeners
232 for (i, listener) in listeners.enumerated() {
233 locationWindow.addPickListener(listener)
234 print("Added pick listener \(i)")
237 for (i, listener) in listeners.enumerated() {
238 // [swift_LocationWindow_removePickListener]
239 locationWindow.removePickListener(listener)
240 print("Removed pick listener \(i)")
241 // [swift_LocationWindow_removePickListener]
248 private func cleanup() {
249 if let inputListener = inputListener {
250 locationWindow?.removeInputListener(inputListener)
251 self.inputListener = nil
253 if let pickListener = pickListener {
254 locationWindow?.removePickListener(pickListener)
255 self.pickListener = nil
257 print("LocationWindowInteraction example cleanup completed")
261// Input listener implementation
262class InputListenerImpl: NSObject, NCInputListener {
263 // [swift_InputListener_onViewTap]
264 func onViewTap(screenPoint: NCPoint) {
265 print("View tapped at screen position (\(screenPoint.x), \(screenPoint.y))")
267 // [swift_InputListener_onViewTap]
269 // [swift_InputListener_onViewDoubleTap]
270 func onViewDoubleTap(screenPoint: NCPoint) {
271 print("View double tapped at screen position (\(screenPoint.x), \(screenPoint.y))")
273 // [swift_InputListener_onViewDoubleTap]
275 // [swift_InputListener_onViewLongTap]
276 func onViewLongTap(screenPoint: NCPoint) {
277 print("View long tapped at screen position (\(screenPoint.x), \(screenPoint.y))")
279 // [swift_InputListener_onViewLongTap]
282// Pick listener implementation
283class PickListenerImpl: NSObject, NCPickListener {
284 // [swift_PickListener_onMapObjectPickComplete]
285 func onMapObjectPickComplete(mapObjectPickResult: NCMapObjectPickResult?, screenPosition: NCPoint) {
286 if let result = mapObjectPickResult {
287 // [swift_MapObjectPickResult_getPoint]
288 let point = result.point
289 print("Map object picked at screen position (\(screenPosition.x), \(screenPosition.y))")
290 print(" Object location: (\(point.x), \(point.y))")
291 // [swift_MapObjectPickResult_getPoint]
293 // [swift_MapObjectPickResult_getMapObject]
294 let mapObject = result.mapObject
295 print(" Object type: \(type(of: mapObject))")
296 // [swift_MapObjectPickResult_getMapObject]
298 print("No map object found at screen position (\(screenPosition.x), \(screenPosition.y))")
301 // [swift_PickListener_onMapObjectPickComplete]
303 // [swift_PickListener_onMapFeaturePickComplete]
304 func onMapFeaturePickComplete(mapFeaturePickResult: [String: String]?, screenPosition: NCPoint) {
305 if let result = mapFeaturePickResult {
306 print("Map feature picked at screen position (\(screenPosition.x), \(screenPosition.y))")
307 print(" Feature properties: \(result)")
309 print("No map feature found at screen position (\(screenPosition.x), \(screenPosition.y))")
312 // [swift_PickListener_onMapFeaturePickComplete]
316let example = LocationWindowInteractionExample()