Gridarta Editor
ActionUtils.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2023 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.utils;
21 
22 import javax.swing.Action;
23 import javax.swing.Icon;
24 import javax.swing.KeyStroke;
25 import net.sf.japi.swing.action.ActionBuilder;
26 import org.jetbrains.annotations.NotNull;
27 import org.jetbrains.annotations.Nullable;
28 
33 public class ActionUtils {
34 
38  @NotNull
39  private static final String CATEGORY = "Category";
40 
45  @NotNull
46  private static final String UNDEFINED_CATEGORY = "Other";
47 
51  @NotNull
52  public static final String NO_SHORTCUT = "none";
53 
57  @NotNull
58  public static final String DEFAULT_ACCELERATOR_KEY = "DefaultAcceleratorKey";
59 
63  private ActionUtils() {
64  }
65 
71  @NotNull
72  public static String getActionName(@NotNull final Action action) {
73  final String name = getStringValue(action, Action.NAME);
74  if (name != null && !name.isEmpty()) {
75  return name;
76  }
77 
78  final String shortDescription = getStringValue(action, Action.SHORT_DESCRIPTION);
79  return shortDescription == null ? getActionId(action) : shortDescription;
80  }
81 
89  @NotNull
90  public static String getActionId(@NotNull final Action action) {
91  final String id = getStringValue(action, ActionBuilder.ACTION_ID);
92  if (id == null) {
93  throw new IllegalArgumentException("action does not define an action ID: " + action);
94  }
95  return id;
96  }
97 
103  @NotNull
104  public static String getActionDescription(@NotNull final Action action) {
105  final String longDescription = getStringValue(action, Action.LONG_DESCRIPTION);
106  if (longDescription != null) {
107  return longDescription;
108  }
109 
110  final String shortDescription = getStringValue(action, Action.SHORT_DESCRIPTION);
111  return shortDescription == null ? "" : shortDescription;
112  }
113 
119  @Nullable
120  public static KeyStroke getShortcut(@NotNull final Action action) {
121  return getShortcut(action, Action.ACCELERATOR_KEY);
122  }
123 
129  @Nullable
130  public static KeyStroke getAlternativeShortcut(@NotNull final Action action) {
131  return getShortcut(action, ActionBuilder.ACCELERATOR_KEY_2);
132  }
133 
140  @Nullable
141  private static KeyStroke getShortcut(@NotNull final Action action, @NotNull final String key) {
142  final Object acceleratorKey = action.getValue(key);
143  return acceleratorKey instanceof KeyStroke ? (KeyStroke) acceleratorKey : null;
144  }
145 
151  public static void setActionShortcut(@NotNull final Action action, @Nullable final KeyStroke shortcut) {
152  action.putValue(Action.ACCELERATOR_KEY, shortcut);
153  }
154 
162  @NotNull
163  public static String getShortcutDescription(@NotNull final Action action, @NotNull final String key) {
164  final KeyStroke shortcut = getShortcut(action, key);
165  return shortcut == null ? NO_SHORTCUT : shortcut.toString();
166  }
167 
173  @Nullable
174  public static Icon getActionIcon(@NotNull final Action action) {
175  final Object icon = action.getValue(Action.SMALL_ICON);
176  return icon instanceof Icon ? (Icon) icon : null;
177  }
178 
186  @Nullable
187  private static String getStringValue(@NotNull final Action action, @NotNull final String key) {
188  final Object value = action.getValue(key);
189  return value instanceof String ? (String) value : null;
190 
191  }
192 
203  @NotNull
204  public static Action newAction(@NotNull final ActionBuilder actionBuilder, @NotNull final String category, @NotNull final EditorAction editorAction, @NotNull final String key) {
205  final Action action = actionBuilder.createAction(true, key, editorAction);
206  action.putValue(CATEGORY, category);
207  editorAction.setAction(action, key);
208  return action;
209  }
210 
221  @NotNull
222  public static Action newToggleAction(@NotNull final ActionBuilder actionBuilder, @NotNull final String category, @NotNull final EditorAction editorAction, @NotNull final String key) {
223  final Action action = actionBuilder.createToggle(true, key, editorAction);
224  action.putValue(CATEGORY, category);
225  editorAction.setAction(action, key);
226  return action;
227  }
228 
234  @NotNull
235  public static String getActionCategory(@NotNull final Action action) {
236  final String category = getStringValue(action, CATEGORY);
237  return category == null ? UNDEFINED_CATEGORY : category;
238  }
239 
240 }
name
name
Definition: ArchetypeTypeSetParserTest-ignoreDefaultAttribute1-result.txt:2
net.sf.gridarta.utils.ActionUtils.getActionId
static String getActionId(@NotNull final Action action)
Returns an Action's ID string.
Definition: ActionUtils.java:90
net.sf
net.sf.gridarta.utils.ActionUtils.getActionDescription
static String getActionDescription(@NotNull final Action action)
Returns the description for an Action.
Definition: ActionUtils.java:104
net.sf.gridarta.utils.ActionUtils.getActionName
static String getActionName(@NotNull final Action action)
Returns the name of an Action.
Definition: ActionUtils.java:72
net.sf.gridarta.utils.ActionUtils.CATEGORY
static final String CATEGORY
Action key for the action's category.
Definition: ActionUtils.java:39
net.sf.gridarta.utils.ActionUtils.getShortcutDescription
static String getShortcutDescription(@NotNull final Action action, @NotNull final String key)
Returns a description of the shortcut of an Action.
Definition: ActionUtils.java:163
net.sf.gridarta.utils.ActionUtils
Utility class implementing Action related functions.
Definition: ActionUtils.java:33
net.sf.gridarta.utils.ActionUtils.getActionCategory
static String getActionCategory(@NotNull final Action action)
Returns an Action's category.
Definition: ActionUtils.java:235
net.sf.gridarta.utils.ActionUtils.NO_SHORTCUT
static final String NO_SHORTCUT
The shortcut description for actions without shortcuts.
Definition: ActionUtils.java:52
net
net.sf.gridarta.utils.ActionUtils.DEFAULT_ACCELERATOR_KEY
static final String DEFAULT_ACCELERATOR_KEY
Action key to store the default shortcut.
Definition: ActionUtils.java:58
net.sf.gridarta.utils.ActionUtils.UNDEFINED_CATEGORY
static final String UNDEFINED_CATEGORY
Category value for Actions not defining a {}.
Definition: ActionUtils.java:46
net.sf.gridarta.utils.ActionUtils.getShortcut
static KeyStroke getShortcut(@NotNull final Action action)
Returns the shortcut of an Action.
Definition: ActionUtils.java:120
net.sf.gridarta.utils.ActionUtils.setActionShortcut
static void setActionShortcut(@NotNull final Action action, @Nullable final KeyStroke shortcut)
Sets the shortcut of an Action.
Definition: ActionUtils.java:151
net.sf.gridarta.utils.ActionUtils.getAlternativeShortcut
static KeyStroke getAlternativeShortcut(@NotNull final Action action)
Returns the alternative shortcut of an Action.
Definition: ActionUtils.java:130
net.sf.gridarta.utils.ActionUtils.newAction
static Action newAction(@NotNull final ActionBuilder actionBuilder, @NotNull final String category, @NotNull final EditorAction editorAction, @NotNull final String key)
Creates a new Action instance.
Definition: ActionUtils.java:204
net.sf.gridarta.utils.ActionUtils.getShortcut
static KeyStroke getShortcut(@NotNull final Action action, @NotNull final String key)
Returns the shortcut of an Action.
Definition: ActionUtils.java:141
net.sf.gridarta.utils.ActionUtils.newToggleAction
static Action newToggleAction(@NotNull final ActionBuilder actionBuilder, @NotNull final String category, @NotNull final EditorAction editorAction, @NotNull final String key)
Creates a new Action instance.
Definition: ActionUtils.java:222
net.sf.gridarta.utils.EditorAction
A global editor action.
Definition: EditorAction.java:29
net.sf.gridarta.utils.ActionUtils.ActionUtils
ActionUtils()
Private construct to prevent instantiation.
Definition: ActionUtils.java:63
net.sf.gridarta.utils.ActionUtils.getActionIcon
static Icon getActionIcon(@NotNull final Action action)
Returns an Icon associated with the action.
Definition: ActionUtils.java:174
net.sf.gridarta.utils.ActionUtils.getStringValue
static String getStringValue(@NotNull final Action action, @NotNull final String key)
Returns an Action's value as a string.
Definition: ActionUtils.java:187