from java.awt.event import KeyAdapter, KeyEvent

class AddFrameListener(KeyAdapter):
	def __init__(self, image):
		self.orig = image
		self.image = None
		self.enabled = True

	def keyPressed(self, e):
		if not self.enabled:
			return
		if e.getKeyCode() == KeyEvent.VK_F3:
			if self.image == None:
				stack = ImageStack(self.orig.getWidth(),
						self.orig.getHeight())
				stack.addSlice('', self.orig.getProcessor())
				self.image = ImagePlus('Movie', stack)
				self.image.show()
			else:
				ip = self.orig.getProcessor()
				stack = self.image.getStack()
				stack.addSlice('', ip)
				self.image.setStack('Movie', stack)
				self.image.setSlice(self.image.getStackSize())
			self.orig.getWindow().toFront()
		elif e.getKeyCode() == KeyEvent.VK_ESCAPE or e.getKeyCode() == KeyEvent.VK_ENTER:
			self.enabled = False

image = WindowManager.getCurrentImage()

if image == None:
	IJ.error('Need an image!')
else:
	listener = AddFrameListener(image)
	image.getWindow().addKeyListener(listener)
	for component in image.getWindow().getComponents():
		component.addKeyListener(listener)

from java.awt import AWTEvent, Toolkit
from java.awt.event import AWTEventListener

class ShowAllEvents(AWTEventListener):
	def eventDispatched(self, event):
		if isinstance(event, KeyListener):
			print("event: " + event.toString() + ", source: " + event.getSource().toString())

#Toolkit.getDefaultToolkit().addAWTEventListener(ShowAllEvents(), -1)
