cleanup
[idea/community.git] / platform / platform-impl / src / com / intellij / openapi / actionSystem / ex / ActionManagerEx.java
1 /*
2  * Copyright 2000-2009 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.openapi.actionSystem.ex;
17
18
19 import com.intellij.openapi.actionSystem.*;
20 import com.intellij.openapi.extensions.PluginId;
21 import org.jetbrains.annotations.NotNull;
22 import org.jetbrains.annotations.Nullable;
23
24 import javax.swing.*;
25 import java.util.Comparator;
26
27
28 public abstract class ActionManagerEx extends ActionManager {
29   public static ActionManagerEx getInstanceEx() {
30     return (ActionManagerEx)getInstance();
31   }
32
33   public abstract void fireBeforeActionPerformed(AnAction action, DataContext dataContext, AnActionEvent event);
34
35   public abstract void fireAfterActionPerformed(AnAction action, DataContext dataContext, AnActionEvent event);
36
37   @Nullable
38   public abstract KeyboardShortcut getKeyboardShortcut(@NotNull String actionId);
39
40
41   public abstract void fireBeforeEditorTyping(char c, DataContext dataContext);
42
43   /**
44    * For logging purposes
45    */
46
47   public abstract String getLastPreformedActionId();
48
49   public abstract String getPrevPreformedActionId();
50
51
52   /**
53    * Comparator compares action ids (String) on order of action registration.
54    *
55    * @return a negative integer if action that corresponds to the first id was registered earler than the action that corresponds
56    *         <p/>
57    *         to the second id; zero if both ids are equal; a positive number otherwise.
58    */
59
60   public abstract Comparator<String> getRegistrationOrderComparator();
61
62
63   /**
64    * Similar to {@link KeyStroke#getKeyStroke(String)} but allows keys in lower case.
65    * <p/>
66    * I.e. "control x" is accepted and interpreted as "control X".
67    *
68    * @return null if string cannot be parsed.
69    */
70
71   @Nullable
72
73   public static KeyStroke getKeyStroke(String s) {
74
75     KeyStroke result = null;
76
77     try {
78
79       result = KeyStroke.getKeyStroke(s);
80
81     }
82     catch (Exception ex) {
83
84       //ok
85
86     }
87
88
89     if (result == null && s != null && s.length() >= 2 && s.charAt(s.length() - 2) == ' ') {
90
91       try {
92
93         String s1 = s.substring(0, s.length() - 1) + Character.toUpperCase(s.charAt(s.length() - 1));
94
95         result = KeyStroke.getKeyStroke(s1);
96
97       }
98       catch (Exception ex) {
99
100         // ok
101
102       }
103
104     }
105
106
107     return result;
108
109   }
110
111
112   public abstract String[] getPluginActions(PluginId pluginId);
113
114   public abstract void queueActionPerformedEvent(final AnAction action, DataContext context, AnActionEvent event);
115
116   public abstract boolean isActionPopupStackEmpty();
117
118   public abstract boolean isTransparrentOnlyActionsUpdateNow();
119 }
120