a6c648a6153af9c2fac4a27a3a3f7465338f9616
[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
20 import com.intellij.openapi.Disposable;
21 import com.intellij.openapi.actionSystem.*;
22 import com.intellij.openapi.extensions.PluginId;
23 import org.jetbrains.annotations.NotNull;
24 import org.jetbrains.annotations.Nullable;
25
26 import javax.swing.*;
27 import java.util.Comparator;
28
29
30
31 public abstract class ActionManagerEx extends ActionManager{
32
33   private boolean myActionPopupStackEmpty;
34
35
36
37   public static ActionManagerEx getInstanceEx(){
38
39     return (ActionManagerEx)getInstance();
40
41   }
42
43
44
45
46
47   public abstract void fireBeforeActionPerformed(AnAction action, DataContext dataContext, AnActionEvent event);
48
49   public abstract void fireAfterActionPerformed(AnAction action, DataContext dataContext, AnActionEvent event);
50
51   @Nullable
52   public abstract KeyboardShortcut getKeyboardShortcut(@NotNull String actionId);
53
54
55   public abstract void fireBeforeEditorTyping(char c, DataContext dataContext);
56
57   /**
58
59    * For logging purposes
60
61    */
62
63   public abstract String getLastPreformedActionId();
64
65   public abstract String getPrevPreformedActionId();
66
67
68
69   /**
70
71    * Comparator compares action ids (String) on order of action registration.
72
73    * @return a negative integer if action that corresponds to the first id was registered earler than the action that corresponds
74
75    *  to the second id; zero if both ids are equal; a positive number otherwise.
76
77    */
78
79   public abstract Comparator<String> getRegistrationOrderComparator();
80
81
82
83  
84
85   /**
86
87    * Similar to {@link KeyStroke#getKeyStroke(String)} but allows keys in lower case.
88
89    * I.e. "control x" is accepted and interpreted as "control X".
90
91    * @return null if string cannot be parsed.
92
93    */
94
95   @Nullable
96
97   public static KeyStroke getKeyStroke(String s) {
98
99     KeyStroke result = null;
100
101     try {
102
103       result = KeyStroke.getKeyStroke(s);
104
105     } catch (Exception ex) {
106
107       //ok
108
109     }
110
111
112
113     if (result == null && s != null && s.length() >= 2 && s.charAt(s.length() - 2) == ' ') {
114
115       try {
116
117         String s1 = s.substring(0, s.length() - 1) + Character.toUpperCase(s.charAt(s.length() - 1));
118
119         result = KeyStroke.getKeyStroke(s1);
120
121       } catch (Exception ex) {
122
123         // ok
124
125       }
126
127     }
128
129
130
131     return result;
132
133   }
134
135
136
137   public abstract String [] getPluginActions(PluginId pluginId);
138
139
140
141   public abstract void queueActionPerformedEvent(final AnAction action, DataContext context, AnActionEvent event);
142
143
144
145   public abstract boolean isActionPopupStackEmpty();
146
147   public abstract boolean isTransparrentOnlyActionsUpdateNow();
148 }
149