001 // License: GPL. Copyright 2007 by Immanuel Scholz and others 002 package org.openstreetmap.josm.gui.preferences.shortcut; 003 004 import static org.openstreetmap.josm.tools.I18n.tr; 005 006 import java.util.List; 007 008 import javax.swing.JPanel; 009 import javax.swing.table.AbstractTableModel; 010 011 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting; 012 import org.openstreetmap.josm.gui.preferences.PreferenceSetting; 013 import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; 014 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; 015 import org.openstreetmap.josm.tools.GBC; 016 import org.openstreetmap.josm.tools.Shortcut; 017 018 public class ShortcutPreference extends DefaultTabPreferenceSetting { 019 020 public static class Factory implements PreferenceSettingFactory { 021 public PreferenceSetting createPreferenceSetting() { 022 return new ShortcutPreference(); 023 } 024 } 025 026 private ShortcutPreference() { 027 // icon source: http://www.iconfinder.net/index.php?q=key&page=icondetails&iconid=8553&size=128&q=key&s12=on&s16=on&s22=on&s32=on&s48=on&s64=on&s128=on 028 // icon licence: GPL 029 // icon designer: Paolino, http://www.paolinoland.it/ 030 // icon original filename: keyboard.png 031 // icon original size: 128x128 032 // modifications: icon was cropped, then resized 033 super("shortcuts", tr("Keyboard Shortcuts"), tr("Changing keyboard shortcuts manually.")); 034 } 035 036 public void addGui(PreferenceTabbedPane gui) { 037 JPanel p = gui.createPreferenceTab(this); 038 039 PrefJPanel prefpanel = new PrefJPanel(new scListModel()); 040 p.add(prefpanel, GBC.eol().fill(GBC.BOTH)); 041 042 } 043 044 public boolean ok() { 045 return Shortcut.savePrefs(); 046 } 047 048 // Maybe move this to prefPanel? There's no need for it to be here. 049 private static class scListModel extends AbstractTableModel { 050 private String[] columnNames = new String[]{tr("Action"), tr("Shortcut")}; 051 private List<Shortcut> data; 052 053 public scListModel() { 054 data = Shortcut.listAll(); 055 } 056 public int getColumnCount() { 057 return columnNames.length; 058 } 059 public int getRowCount() { 060 return data.size(); 061 } 062 @Override 063 public String getColumnName(int col) { 064 return columnNames[col]; 065 } 066 public Object getValueAt(int row, int col) { 067 return (col==0)? data.get(row).getLongText() : data.get(row); 068 } 069 @Override 070 public boolean isCellEditable(int row, int col) { 071 return false; 072 } 073 } 074 }