Capture mouse wheel movement

Expanding on code by @sfitze to access custom properties added to the component; cf AbstractVisionComponent

def MouseWheelListener(self, initialized):

	if not initialized:
		from java.awt.event import MouseWheelEvent
		from java.awt.event import MouseWheelListener
		
		class canvasMouseWheelListener(MouseWheelListener):
			def mouseWheelMoved(self, event):
				# https://docs.oracle.com/javase/tutorial/uiswing/events/mousewheellistener.html
				# https://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html
				if event.isAltDown() or event.isControlDown() or event.isShiftDown():
					canvas = event.source.parent.getComponent('Paintable Canvas')
					scale = canvas.getPropertyValue("scale") + 10*event.getWheelRotation()
					canvas.setPropertyValue("scale",scale)
				return

		for i in self.mouseWheelListeners:
			if i.__class__.__name__ == 'canvasMouseWheelListener':
				self.removeMouseWheelListener(i)
		self.addMouseWheelListener(canvasMouseWheelListener())
		self._mwlInit = True
	return

Kudos to @pturmel for all the guidance

1 Like