class ActionMenu: def __init__(self): self.titleBase = 'HCR2 Monkey' self.frame = JFrame(self.titleBase, defaultCloseOperation=JFrame.EXIT_ON_CLOSE, size=(300, 250)) self.inputMap = self.frame.getRootPane().getInputMap( JComponent.WHEN_IN_FOCUSED_WINDOW) self.actionMap = self.frame.getRootPane().getActionMap() self.actionLabels = {} self.actionThread = None self.defaultBackground = self.frame.getBackground() self.frame.getContentPane().setLayout( BoxLayout(self.frame.getContentPane(), BoxLayout.Y_AXIS)) self.addAction("ESCAPE", "Abort current action", lambda: None) def addAction(self, key, desc, cb): if " " in key: strokeString = key else: strokeString = "pressed " + key stroke = KeyStroke.getKeyStroke(strokeString) if stroke == None: raise ValueError("Invalid key: " + str(key)) self.inputMap.put(stroke, key) self.actionMap.put(key, MenuAction(cb, key, desc, self)) self.actionLabels[key] = JLabel(key + ": " + desc) self.actionLabels[key].setOpaque(True) self.frame.getContentPane().add(self.actionLabels[key]) def run(self): log("Starting menu") self.frame.visible = True while True: sleep(300)
class ActionMenu: def __init__(self): self.titleBase = 'FF3 Monkey' self.frame = JFrame(self.titleBase, defaultCloseOperation = JFrame.EXIT_ON_CLOSE, size=(400,400)) self.inputMap = self.frame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW) self.actionMap = self.frame.getRootPane().getActionMap() self.actionLabels = {} self.actionThread = None self.defaultBackground = self.frame.getBackground() self.frame.getContentPane().setLayout(BoxLayout(self.frame.getContentPane(), BoxLayout.Y_AXIS)) def quit(): from java.lang import System print "Quitting..." System.exit(0) self.addAction("Q", "Quit", quit) self.addAction("ESCAPE", "Abort current action", lambda: None) def addAction(self, key, desc, cb): if " " in key: strokeString = key else: strokeString = "pressed "+key stroke = KeyStroke.getKeyStroke(strokeString) if stroke == None: raise ValueError("Invalid key: "+str(key)) self.inputMap.put(stroke, key) self.actionMap.put(key, MenuAction(cb, key, desc, self)) self.actionLabels[key] = JLabel(key+": "+desc) self.actionLabels[key].setOpaque(True) self.frame.getContentPane().add(self.actionLabels[key]) def run(self): print "Starting menu" self.frame.visible = True while True: sleep(300)