20 package net.sf.gridarta.gui.dialog.shortcuts;
22 import java.awt.Component;
23 import java.util.ArrayList;
24 import java.util.Arrays;
25 import java.util.Collection;
26 import java.util.Comparator;
27 import java.util.HashSet;
28 import java.util.Iterator;
29 import java.util.List;
30 import java.util.prefs.AbstractPreferences;
31 import java.util.prefs.BackingStoreException;
32 import java.util.prefs.Preferences;
33 import javax.swing.Action;
34 import javax.swing.ActionMap;
35 import javax.swing.KeyStroke;
40 import net.
sf.japi.swing.action.ActionBuilder;
41 import net.
sf.japi.swing.action.DummyAction;
42 import org.jetbrains.annotations.NotNull;
43 import org.jetbrains.annotations.Nullable;
77 public int compare(@NotNull
final Action o1, @NotNull
final Action o2) {
109 for (
final Action action :
this) {
110 final Object acceleratorKey = action.getValue(Action.ACCELERATOR_KEY);
111 if (acceleratorKey !=
null) {
116 final Preferences commentPreferences =
new AbstractPreferences(
null,
"") {
119 protected void putSpi(
final String key,
final String value) {
120 throw new UnsupportedOperationException(
"unsupported operation: key=" + key +
", value=" + value);
125 protected String getSpi(@NotNull
final String key) {
140 protected void removeSpi(
final String key) {
141 throw new UnsupportedOperationException(
"unsupported operation: key=" + key);
145 protected void removeNodeSpi() {
146 throw new UnsupportedOperationException(
"unsupported operation");
150 protected String [] keysSpi() {
151 throw new UnsupportedOperationException(
"unsupported operation");
155 protected String[] childrenNamesSpi() {
156 throw new UnsupportedOperationException(
"unsupported operation");
160 protected AbstractPreferences childSpi(
final String name) {
161 throw new UnsupportedOperationException(
"unsupported operation: name=" + name);
165 protected void syncSpi() {
170 protected void flushSpi() {
177 for (
final Action action :
this) {
181 action.putValue(Action.ACCELERATOR_KEY,
null);
183 final Object acceleratorKey = KeyStroke.getKeyStroke(value);
184 if (acceleratorKey !=
null) {
185 action.putValue(Action.ACCELERATOR_KEY, acceleratorKey);
202 }
catch (
final BackingStoreException ignored) {
206 for (
final Action action :
this) {
210 if (acceleratorKey.equals(defaultAcceleratorKey)) {
231 for (
final Action action :
this) {
242 final List<Action> result =
new ArrayList<>();
244 for (
final Object key : actionMap.allKeys()) {
245 if (key instanceof String) {
246 final Action action = actionMap.get(key);
247 assert action !=
null;
254 return result.iterator();
263 if (action instanceof DummyAction) {
270 }
catch (
final IllegalArgumentException ignored) {