EDU-523 Lost automatic code inspection warnings

EP was registered in wrong plugin.xml
This commit is contained in:
Liana Bakradze
2016-02-01 19:00:42 +03:00
parent ada89f6b0a
commit 3fefc88a78
8 changed files with 74 additions and 28 deletions
@@ -1,6 +1,7 @@
package com.jetbrains.edu.coursecreator;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.project.Project;
import com.jetbrains.edu.coursecreator.actions.PyCCRunTestsAction;
import com.jetbrains.python.edu.PyExecuteFileExtensionPoint;
import org.jetbrains.annotations.NotNull;
@@ -12,4 +13,8 @@ public class PyCCRunTests implements PyExecuteFileExtensionPoint {
return new PyCCRunTestsAction();
}
@Override
public boolean accept(Project project) {
return CCProjectService.getInstance(project).getCourse() != null;
}
}
@@ -13,11 +13,22 @@
]]>
</change-notes>
<!-- please see http://confluence.jetbrains.net/display/IDEADEV/Plugin+Compatibility+with+IntelliJ+Platform+Products
on how to target different products -->
<depends>com.intellij.modules.lang</depends>
<extensionPoints>
<extensionPoint qualifiedName="Edu.executeFile" interface="com.jetbrains.python.edu.PyExecuteFileExtensionPoint"/>
</extensionPoints>
<extensions defaultExtensionNs="com.intellij">
<codeInsight.lineMarkerProvider language="Python" implementationClass="com.jetbrains.python.edu.PyExecuteFileLineMarkerProvider"/>
</extensions>
<extensions defaultExtensionNs="Edu">
<executeFile implementation="com.jetbrains.python.edu.PyEduAddParametersAction" order="last"/>
<executeFile implementation="com.jetbrains.python.edu.PyDebugCurrentFile"/>
</extensions>
<project-components>
</project-components>
@@ -19,19 +19,10 @@
</component>
</application-components>
<extensionPoints>
<extensionPoint qualifiedName="Edu.executeFile" interface="com.jetbrains.python.edu.PyExecuteFileExtensionPoint"/>
</extensionPoints>
<extensions defaultExtensionNs="com.intellij">
<programRunner implementation="com.jetbrains.python.edu.debugger.PyEduDebugRunner"/>
<executor implementation="com.jetbrains.python.edu.debugger.PyEduDebugExecutor" order="first,after run"/>
<consoleInputFilterProvider implementation="com.jetbrains.python.edu.debugger.PyEduConsoleInputFilterProvider"/>
</extensions>
<extensions defaultExtensionNs="Edu">
<executeFile implementation="com.jetbrains.python.edu.PyEduAddParametersAction" order="last"/>
<executeFile implementation="com.jetbrains.python.edu.PyDebugCurrentFile"/>
</extensions>
</idea-plugin>
@@ -2,6 +2,8 @@ package com.jetbrains.python.edu;
import com.intellij.execution.actions.RunContextAction;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.project.Project;
import com.intellij.util.PlatformUtils;
import com.jetbrains.python.edu.debugger.PyEduDebugExecutor;
import org.jetbrains.annotations.Nullable;
@@ -10,7 +12,15 @@ public class PyDebugCurrentFile implements PyExecuteFileExtensionPoint {
@Nullable
@Override
public AnAction getRunAction() {
if (!PlatformUtils.isPyCharmEducational()) {
return null;
}
return new RunContextAction(PyEduDebugExecutor.getInstance());
}
@Override
public boolean accept(Project project) {
return PlatformUtils.isPyCharmEducational();
}
}
@@ -3,15 +3,23 @@ package com.jetbrains.python.edu;
import com.intellij.execution.actions.EditRunConfigurationsAction;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import org.jetbrains.annotations.NotNull;
import com.intellij.openapi.project.Project;
import com.intellij.util.PlatformUtils;
import org.jetbrains.annotations.Nullable;
public class PyEduAddParametersAction implements PyExecuteFileExtensionPoint {
@NotNull
@Nullable
@Override
public AnAction getRunAction() {
return new AddParametersAction();
}
@Override
public boolean accept(Project project) {
return PlatformUtils.isPyCharmEducational();
}
private static class AddParametersAction extends EditRunConfigurationsAction {
@Override
public void update(AnActionEvent e) {
@@ -17,6 +17,7 @@ package com.jetbrains.python.edu;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.Nullable;
public interface PyExecuteFileExtensionPoint {
@@ -26,4 +27,5 @@ public interface PyExecuteFileExtensionPoint {
@Nullable
AnAction getRunAction();
boolean accept(Project project);
}
@@ -13,9 +13,12 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.markup.GutterIconRenderer;
import com.intellij.psi.PsiElement;
import com.intellij.util.Function;
import com.intellij.util.PlatformUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -36,12 +39,34 @@ public class PyExecuteFileLineMarkerProvider implements LineMarkerProvider {
}
PsiElement file = elements.get(0).getContainingFile();
final RunContextAction runAction = new RunContextAction(DefaultRunExecutor.getRunExecutorInstance());
final PyExecuteFileExtensionPoint[] extensions =
ApplicationManager.getApplication().getExtensions(PyExecuteFileExtensionPoint.EP_NAME);
final List<AnAction> actions = new ArrayList<AnAction>();
final DefaultActionGroup group = new DefaultActionGroup();
if (PlatformUtils.isPyCharmEducational()) {
group.add(runAction);
}
for (PyExecuteFileExtensionPoint extension : extensions) {
AnAction action = extension.getRunAction();
if (action != null && extension.accept(file.getProject())) {
actions.add(action);
group.add(action);
}
}
if (actions.isEmpty() && !PlatformUtils.isPyCharmEducational()) {
return;
}
Icon icon = PlatformUtils.isPyCharmEducational() ? AllIcons.Actions.Execute : actions.get(0).getTemplatePresentation().getIcon();
final LineMarkerInfo<PsiElement> markerInfo = new LineMarkerInfo<PsiElement>(
file, file.getTextRange(), AllIcons.Actions.Execute, Pass.UPDATE_OVERRIDEN_MARKERS,
file, file.getTextRange(), icon, Pass.UPDATE_OVERRIDEN_MARKERS,
new Function<PsiElement, String>() {
@Override
public String fun(PsiElement e) {
return "Execute '" + e.getContainingFile().getName() + "'";
String text = "Execute '" + e.getContainingFile().getName() + "'";
return PlatformUtils.isPyCharmEducational() ? text : actions.get(0).getTemplatePresentation().getText();
}
}, null,
GutterIconRenderer.Alignment.RIGHT) {
@@ -51,22 +76,17 @@ public class PyExecuteFileLineMarkerProvider implements LineMarkerProvider {
return new LineMarkerGutterIconRenderer<PsiElement>(this) {
@Override
public AnAction getClickAction() {
return runAction;
return PlatformUtils.isPyCharmEducational() ? runAction : actions.get(0);
}
@Nullable
@Override
public ActionGroup getPopupMenuActions() {
final DefaultActionGroup group = new DefaultActionGroup();
group.add(runAction);
final PyExecuteFileExtensionPoint[] extensions =
ApplicationManager.getApplication().getExtensions(PyExecuteFileExtensionPoint.EP_NAME);
for (PyExecuteFileExtensionPoint extension : extensions) {
final AnAction action = extension.getRunAction();
if (action == null) {
continue;
}
group.add(action);
if (!PlatformUtils.isPyCharmEducational() && actions.isEmpty()) {
return null;
}
if (actions.size() == 1) {
return null;
}
return group;
}
@@ -23,7 +23,6 @@
<extensions defaultExtensionNs="com.intellij">
<directoryProjectGenerator implementation="com.jetbrains.edu.learning.PyStudyDirectoryProjectGenerator"/>
<codeInsight.lineMarkerProvider language="Python" implementationClass="com.jetbrains.python.edu.PyExecuteFileLineMarkerProvider"/>
</extensions>
<extensions defaultExtensionNs="Pythonid">
<inspectionExtension implementation="com.jetbrains.edu.learning.highlighting.PyStudyInspectionExtension"/>