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.help.HelpUtil; 009import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting; 010import org.openstreetmap.josm.gui.preferences.PreferenceSetting; 011import org.openstreetmap.josm.gui.preferences.PreferenceSettingFactory; 012import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane; 013import org.openstreetmap.josm.tools.GBC; 014import org.openstreetmap.josm.tools.Shortcut; 015 016/** 017 * Keyboard shortcut preferences. 018 */ 019public final class ShortcutPreference extends DefaultTabPreferenceSetting { 020 021 private String defaultFilter; 022 023 /** 024 * Factory used to create a new {@code ShortcutPreference}. 025 */ 026 public static class Factory implements PreferenceSettingFactory { 027 @Override 028 public PreferenceSetting createPreferenceSetting() { 029 return new ShortcutPreference(); 030 } 031 } 032 033 private ShortcutPreference() { 034 super(/* ICON(preferences/) */ "shortcuts", tr("Keyboard Shortcuts"), tr("Changing keyboard shortcuts manually.")); 035 } 036 037 @Override 038 public void addGui(PreferenceTabbedPane gui) { 039 JPanel p = gui.createPreferenceTab(this); 040 041 PrefJPanel prefpanel = new PrefJPanel(); 042 p.add(prefpanel, GBC.eol().fill(GBC.BOTH)); 043 if (defaultFilter != null) { 044 prefpanel.filter(defaultFilter); 045 } 046 } 047 048 @Override 049 public boolean ok() { 050 return Shortcut.savePrefs(); 051 } 052 053 /** 054 * Sets the default filter used to show only shortcuts with descriptions containing given substring. 055 * @param substring The substring used to filter 056 * @see PrefJPanel#filter(String) 057 */ 058 public void setDefaultFilter(String substring) { 059 defaultFilter = substring; 060 } 061 062 @Override 063 public String getHelpContext() { 064 return HelpUtil.ht("/Preferences/Shortcuts"); 065 } 066}