static void populateBindings(KeystrokeTableModel model) {
    TreeMap<String, ArrayList<String>> items = new TreeMap<String, ArrayList<String>>();
    Preferences bindings = PREFS.node("bindings"); //$NON-NLS-1$
    try {
      for (String key : bindings.keys()) {
        String act = bindings.get(key, null);
        if (act != null) {
          ArrayList<String> a = items.get(act);
          if (a == null) {
            items.put(act, a = new ArrayList<String>());
          }
          a.add(key);
        }
      }
    } catch (BackingStoreException e) {
      System.err.println("Failed to read JoshEdit keybindings!"); //$NON-NLS-1$
    }
    if (model.getRowCount() == 0) {
      for (String key : DEFAULTS.keySet()) {
        String act = DEFAULTS.getString(key);
        ArrayList<String> a = items.get(act);
        if (a == null) {
          items.put(act, a = new ArrayList<String>());
        }
        a.add(key);
      }
    }
    for (Entry<String, ArrayList<String>> i : items.entrySet()) {
      String act = i.getKey();
      for (String key : i.getValue()) {
        model.addRow(getString("bindings." + act, act), key); //$NON-NLS-1$
        act = EMPTY_STRING;
      }
    }
  }