def data(self): table = JTable() # use an empty (default) table iMap = table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) # List of mapped keystrokes & actions keystrokes = [(key, iMap.get(key)) for key in table.getRegisteredKeyStrokes()] #------------------------------------------------------ # Dict of key names & modified keystrokes #------------------------------------------------------ keys = {} # Dict, index = key name -> modifiers acts = {} # Dict, index = keyStroke -> actionName for key, act in keystrokes: val = str(key) # e.g., shift ctrl pressed TAB acts[val] = act # e.g., selectNextColumnCell pos = val.rfind(' ') prefix, name = val[:pos], val[pos + 1:] if keys.has_key(name): keys[name].append(prefix) else: keys[name] = [prefix] #------------------------------------------------------ # The list of unique key names, in alphabetical order #------------------------------------------------------ names = keys.keys() names.sort() prefixes = [ 'pressed', # unmodified keystroke 'ctrl pressed', # Ctrl-<keystroke> 'shift pressed', # Shift-<keystroke> 'shift ctrl pressed' # Shift-Ctrl-<keystroke> ] #------------------------------------------------------ # For each key name (in alphabetical order) #------------------------------------------------------ result = [] # The 2D table of strings for name in names: # For each key name (e.g., TAB) here = [name] # Current table row # # columns are in a fixed order, based upon prefix # for prefix in prefixes: kName = ' '.join([prefix, name]) here.append(acts.get(kName, '')) result.append(here) return result
# ISBN-13: 978-1-4824-0818-2 (paperback) # ISBN-13: 978-1-4824-0817-5 (electronic) # website: http://www.apress.com/978148420818 # Role: Simple Jython Swing script showing JTable 'SPACE' KeyStrokes # Note: This is a "Swing" script only because it imports javax.swing JTable # Usage: wsadmin -f KeyStrokes.py # or # jython KeyStrokes.py # History: # date who ver Comment # -------- --- --- ---------- # 14/10/27 rag 0.0 New - ... #------------------------------------------------------------------------------- from javax.swing import JTable table = JTable() keys = [ str( key ) for key in table.getRegisteredKeyStrokes() ] print 'Number of JTable KeyStrokes:', len( keys ) width = max( [ len( key ) for key in keys ] ) print 'JTable "Space" Keys:' print '\n'.join( [ '%*s' % ( width, key ) for key in keys if key.endswith( 'SPACE' ) ] )