/* * Zed Attack Proxy (ZAP) and its related class files. * * ZAP is an HTTP/HTTPS proxy for assessing web application security. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.zaproxy.zap.extension.keyboard; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.swing.KeyStroke; import org.apache.commons.configuration.ConversionException; import org.apache.commons.configuration.HierarchicalConfiguration; import org.apache.log4j.Logger; import org.parosproxy.paros.common.AbstractParam; public class KeyboardParam extends AbstractParam { private static final Logger logger = Logger.getLogger(KeyboardParam.class); private static final String KEYBOARD_BASE_KEY = "keyboard"; private static final String ALL_SHORTCUTS_KEY = KEYBOARD_BASE_KEY + ".shortcuts"; private static final String MENU_ITEM_KEY = "menu"; private static final String KEYCODE_KEY = "keycode"; private static final String MODIFIERS_KEY = "modifiers"; private Map<String, KeyStroke> map = null; public KeyboardParam() { } @Override protected void parse() { try { List<HierarchicalConfiguration> fields = ((HierarchicalConfiguration) getConfig()).configurationsAt(ALL_SHORTCUTS_KEY); map = new HashMap<String, KeyStroke>(fields.size()); for (HierarchicalConfiguration sub : fields) { String name = sub.getString(MENU_ITEM_KEY, ""); if (name.length() > 0) { map.put(name, KeyStroke.getKeyStroke(sub.getInt(KEYCODE_KEY, 0), sub.getInt(MODIFIERS_KEY, 0), false)); } } } catch (ConversionException e) { logger.error("Error while loading keyboard shortcuts " + e.getMessage(), e); } } public KeyStroke getShortcut(String i18nKey) { return map.get(i18nKey); } public void setShortcut(String i18nKey, KeyStroke keyStroke) { map.put(i18nKey, keyStroke); } protected void setConfigs() { ((HierarchicalConfiguration) getConfig()).clearTree(ALL_SHORTCUTS_KEY); int i= 0; for (Entry<String, KeyStroke> entry : map.entrySet()) { String elementBaseKey = ALL_SHORTCUTS_KEY + "(" + i + ")."; getConfig().setProperty(elementBaseKey + MENU_ITEM_KEY, entry.getKey()); if (entry.getValue() != null) { getConfig().setProperty(elementBaseKey + KEYCODE_KEY, entry.getValue().getKeyCode()); getConfig().setProperty(elementBaseKey + MODIFIERS_KEY, entry.getValue().getModifiers()); } else { getConfig().setProperty(elementBaseKey + KEYCODE_KEY, 0); getConfig().setProperty(elementBaseKey + MODIFIERS_KEY, 0); } i++; } } }