001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.util; 003 004import java.util.List; 005 006import javax.swing.Action; 007 008import org.openstreetmap.josm.tools.Shortcut; 009 010/** 011 * Action implementing a multikey shortcut - shorcuts like Ctrl+Alt+S,n will toggle n-th layer visibility. 012 * @since 4595 013 */ 014public interface MultikeyShortcutAction extends Action { 015 016 class MultikeyInfo { 017 private final int index; 018 private final String description; 019 020 public MultikeyInfo(int index, String description) { 021 this.index = index; 022 this.description = description; 023 } 024 025 public int getIndex() { 026 return index; 027 } 028 029 public char getShortcut() { 030 if (index < 9) 031 return (char) ('1' + index); 032 else if (index == 9) 033 return '0'; 034 else 035 return (char) ('A' + index - 10); 036 } 037 038 public String getDescription() { 039 return description; 040 } 041 } 042 043 Shortcut getMultikeyShortcut(); 044 045 void executeMultikeyAction(int index, boolean repeatLastAction); 046 047 List<MultikeyInfo> getMultikeyCombinations(); 048 049 MultikeyInfo getLastMultikeyAction(); 050 051}