diff --git a/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionManager.java b/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionManager.java
index 5577664bf9f7..ee850c3fe060 100644
--- a/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionManager.java
+++ b/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/ActionManager.java
@@ -20,6 +20,7 @@ import com.intellij.openapi.actionSystem.ex.AnActionListener;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.openapi.extensions.PluginId;
+import com.intellij.openapi.project.ProjectType;
import com.intellij.openapi.util.ActionCallback;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -80,7 +81,7 @@ public abstract class ActionManager implements ApplicationComponent {
* @param actionId Id of the registered action
*
* @return Action associated with the specified actionId, null if
- * there is no actions associated with the speicified actionId
+ * there is no actions associated with the specified actionId
*
* @exception java.lang.IllegalArgumentException if actionId is null
*
@@ -88,6 +89,20 @@ public abstract class ActionManager implements ApplicationComponent {
*/
public abstract AnAction getAction(@NonNls @NotNull String actionId);
+ /**
+ * Returns action associated with the specified actionId.
+ *
+ * @param actionId Id of the registered action
+ *
+ * @return Action associated with the specified actionId, null if
+ * there is no actions associated with the specified actionId
+ *
+ * @exception java.lang.IllegalArgumentException if actionId is null
+ *
+ * @see com.intellij.openapi.actionSystem.IdeActions
+ */
+ public abstract AnAction getAction(@NonNls @NotNull String actionId, @Nullable ProjectType projectType);
+
/**
* Returns actionId associated with the specified action.
*
diff --git a/platform/extensions/src/com/intellij/openapi/extensions/Extensions.java b/platform/extensions/src/com/intellij/openapi/extensions/Extensions.java
index 1c0152514e33..60d73084e988 100644
--- a/platform/extensions/src/com/intellij/openapi/extensions/Extensions.java
+++ b/platform/extensions/src/com/intellij/openapi/extensions/Extensions.java
@@ -28,15 +28,16 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class Extensions {
- private static LogProvider ourLogger = new SimpleLogProvider();
-
public static final ExtensionPointName AREA_LISTENER_EXTENSION_POINT = new ExtensionPointName("com.intellij.arealistener");
-
+ private static LogProvider ourLogger = new SimpleLogProvider();
private static Map ourAreaInstance2area = new THashMap();
private static Map ourAreaClass2Configuration = new THashMap();
@NotNull private static ExtensionsAreaImpl ourRootArea = createRootArea();
+ private Extensions() {
+ }
+
@NotNull
private static ExtensionsAreaImpl createRootArea() {
ExtensionsAreaImpl rootArea = new ExtensionsAreaImpl(null, null, null, ourLogger);
@@ -44,9 +45,6 @@ public class Extensions {
return rootArea;
}
- private Extensions() {
- }
-
public static void setSynchronized() {
assert ourAreaInstance2area.isEmpty();
assert ourAreaClass2Configuration.isEmpty();
@@ -101,7 +99,7 @@ public class Extensions {
@NotNull
@SuppressWarnings({"unchecked"})
public static T[] getExtensions(@NotNull ExtensionPointName extensionPointName, AreaInstance areaInstance) {
- return Extensions.getExtensions(extensionPointName.getName(), areaInstance);
+ return getExtensions(extensionPointName.getName(), areaInstance);
}
@NotNull
diff --git a/platform/platform-api/src/com/intellij/openapi/actionSystem/ActionStub.java b/platform/platform-api/src/com/intellij/openapi/actionSystem/ActionStub.java
index 09896aaf0da8..c96ce2aa3371 100644
--- a/platform/platform-api/src/com/intellij/openapi/actionSystem/ActionStub.java
+++ b/platform/platform-api/src/com/intellij/openapi/actionSystem/ActionStub.java
@@ -29,6 +29,7 @@ public class ActionStub extends AnAction{
private static final Logger LOG=Logger.getInstance("#com.intellij.openapi.actionSystem.ActionStub");
private final String myClassName;
+ private final String myProjectType;
private final String myId;
private final String myText;
private final ClassLoader myLoader;
@@ -40,9 +41,10 @@ public class ActionStub extends AnAction{
@NotNull String text,
ClassLoader loader,
PluginId pluginId,
- String iconPath) {
+ String iconPath, String projectType) {
myLoader = loader;
myClassName=actionClass;
+ myProjectType = projectType;
LOG.assertTrue(!id.isEmpty());
myId=id;
myText=text;
@@ -102,4 +104,7 @@ public class ActionStub extends AnAction{
targetAction.setShortcutSet(getShortcutSet());
}
+ public String getProjectType() {
+ return myProjectType;
+ }
}
diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionManagerImpl.java
index 723956ef9daa..c5a9b01c4d21 100644
--- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionManagerImpl.java
+++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionManagerImpl.java
@@ -39,6 +39,7 @@ import com.intellij.openapi.keymap.KeymapManager;
import com.intellij.openapi.keymap.KeymapUtil;
import com.intellij.openapi.keymap.ex.KeymapManagerEx;
import com.intellij.openapi.progress.ProcessCanceledException;
+import com.intellij.openapi.project.ProjectType;
import com.intellij.openapi.util.ActionCallback;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.Disposer;
@@ -71,28 +72,6 @@ import java.util.*;
import java.util.List;
public final class ActionManagerImpl extends ActionManagerEx implements ApplicationComponent {
- private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.actionSystem.impl.ActionManagerImpl");
- private static final int DEACTIVATED_TIMER_DELAY = 5000;
- private static final int TIMER_DELAY = 500;
- private static final int UPDATE_DELAY_AFTER_TYPING = 500;
-
- private final Object myLock = new Object();
- private final Map myId2Action = new THashMap();
- private final Map> myPlugin2Id = new THashMap>();
- private final TObjectIntHashMap myId2Index = new TObjectIntHashMap();
- private final Map