parentActionMap.put(actionString, new ActionListenerProxy(action, actionString));
action = new ListAction("selectPreviousColumn"); am.put("selectPreviousColumn", action); action = new ListAction("selectNextColumn"); am.put("selectNextColumn", action); action = new ListAction("selectPreviousColumnExtendSelection"); am.put("selectPreviousColumnExtendSelection", action); action = new ListAction("selectNextColumnExtendSelection"); am.put("selectNextColumnExtendSelection", action);  action = new ListAction("selectFirstRow"); am.put("selectFirstRow", action); action = new ListAction("selectLastRow"); am.put("selectLastRow", action); action = new ListAction("selectFirstRowExtendSelection"); am.put("selectFirstRowExtendSelection", action); action = new ListAction("selectLastRowExtendSelection"); am.put("selectLastRowExtendSelection", action);  action = new ListAction("scrollUp"); am.put("scrollUp", action); action = new ListAction("scrollUpExtendSelection"); am.put("scrollUpExtendSelection", action); action = new ListAction("scrollDown"); am.put("scrollDown", action); action = new ListAction("scrollDownExtendSelection"); am.put("scrollDownExtendSelection", action);  action = new ListAction("selectAll"); am.put("selectAll", action); action = new ListAction("clearSelection"); am.put("clearSelection", action);  am.put("copy", TransferHandler.getCopyAction()); am.put("cut", TransferHandler.getCutAction()); am.put("paste", TransferHandler.getPasteAction());  UIManager.put("List.actionMap", am);
  protected void installKeyboardActions()  {    InputMap focusInputMap = (InputMap) UIManager.get("List.focusInputMap");    InputMapUIResource parentInputMap = new InputMapUIResource();    // FIXME: The JDK uses a LazyActionMap for parentActionMap    ActionMap parentActionMap = new ActionMapUIResource();    action = new ListAction();    Object keys[] = focusInputMap.allKeys();    // Register key bindings in the UI InputMap-ActionMap pair    for (int i = 0; i < keys.length; i++)      {        KeyStroke stroke = (KeyStroke) keys[i];        String actionString = (String) focusInputMap.get(stroke);        parentInputMap.put(KeyStroke.getKeyStroke(stroke.getKeyCode(),                                                  stroke.getModifiers()),                           actionString);        parentActionMap.put(actionString,                              new ActionListenerProxy(action, actionString));      }    // Register the new InputMap-ActionMap as the parents of the list's    // InputMap and ActionMap    parentInputMap.setParent(list.getInputMap().getParent());    parentActionMap.setParent(list.getActionMap().getParent());    list.getInputMap().setParent(parentInputMap);    list.getActionMap().setParent(parentActionMap);  }