001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.preferences.shortcut; 003 004import static org.openstreetmap.josm.tools.I18n.tr; 005 006import javax.swing.JPanel; 007 008import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting; 009import org.openstreetmap.josm.gui.preferences.PreferenceSetting; 010import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; 011import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; 012import org.openstreetmap.josm.tools.GBC; 013import org.openstreetmap.josm.tools.Shortcut; 014 015/** 016 * Keyboard shortcut preferences. 017 */ 018public final class ShortcutPreference extends DefaultTabPreferenceSetting { 019 020 private String defaultFilter; 021 022 /** 023 * Factory used to create a new {@code ShortcutPreference}. 024 */ 025 public static class Factory implements PreferenceSettingFactory { 026 @Override 027 public PreferenceSetting createPreferenceSetting() { 028 return new ShortcutPreference(); 029 } 030 } 031 032 private ShortcutPreference() { 033 super("shortcuts", tr("Keyboard Shortcuts"), tr("Changing keyboard shortcuts manually.")); 034 } 035 036 @Override 037 public void addGui(PreferenceTabbedPane gui) { 038 JPanel p = gui.createPreferenceTab(this); 039 040 PrefJPanel prefpanel = new PrefJPanel(); 041 p.add(prefpanel, GBC.eol().fill(GBC.BOTH)); 042 if (defaultFilter != null) { 043 prefpanel.filter(defaultFilter); 044 } 045 } 046 047 @Override 048 public boolean ok() { 049 return Shortcut.savePrefs(); 050 } 051 052 /** 053 * Sets the default filter used to show only shortcuts with descriptions containing given substring. 054 * @param substring The substring used to filter 055 * @see PrefJPanel#filter(String) 056 */ 057 public void setDefaultFilter(String substring) { 058 defaultFilter = substring; 059 } 060}