package com.hackerdude.swing.keymapper; /* ===================================================================== KeyMapTableModel.java Created by Claude Duguay Copyright (c) 2000 ===================================================================== */ import java.util.Iterator; import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; import javax.swing.InputMap; import javax.swing.KeyStroke; import javax.swing.table.DefaultTableModel; public class KeyMapTableModel extends DefaultTableModel { public KeyMapTableModel() { addColumn("Action"); addColumn("Key Assignment"); } public void setModelInputMap(InputMap inputMap) { KeyStroke[] keys = inputMap.allKeys(); SortedMap sortedMap = new TreeMap(); for (int i = 0; i < keys.length; i++) { Object actionKey = inputMap.get(keys[i]); sortedMap.put(actionKey.toString(), keys[i]); } int count = getRowCount(); for (int i = count - 1; i >= 0; i--) { removeRow(i); } Iterator iterator = sortedMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = (Map.Entry)iterator.next(); Object[] col = {entry.getKey(), entry.getValue()}; addRow(col); } } public InputMap getModelInputMap() { InputMap inputMap = new InputMap(); for (int i = 0; i < getRowCount(); i++) { Object stroke = getValueAt(i, 1); if (stroke instanceof KeyStroke) { inputMap.put((KeyStroke)stroke, (String)getValueAt(i, 0)); } } return inputMap; } }