create new DefaultActionGroup() lazily: save 40% of LineMarkersPass.addLineMarkers()

This commit is contained in:
Alexander Doroshko
2015-10-20 17:57:16 +03:00
parent 00d0c45e02
commit 920d5e8eb7
@@ -40,7 +40,7 @@ public class RunLineMarkerProvider implements LineMarkerProvider {
@Override
public LineMarkerInfo getLineMarkerInfo(@NotNull PsiElement element) {
List<RunLineMarkerContributor> contributors = RunLineMarkerContributor.EXTENSION.allForLanguage(element.getLanguage());
final DefaultActionGroup actionGroup = new DefaultActionGroup();
DefaultActionGroup actionGroup = null;
Icon icon = null;
for (RunLineMarkerContributor contributor : contributors) {
RunLineMarkerContributor.Info info = contributor.getInfo(element);
@@ -50,6 +50,9 @@ public class RunLineMarkerProvider implements LineMarkerProvider {
if (icon == null) {
icon = info.icon;
}
if (actionGroup == null) {
actionGroup = new DefaultActionGroup();
}
for (AnAction action : info.actions) {
actionGroup.add(new LineMarkerActionWrapper(element, action));
}
@@ -57,7 +60,9 @@ public class RunLineMarkerProvider implements LineMarkerProvider {
}
if (icon == null) return null;
return new LineMarkerInfo<PsiElement>(element, element.getTextOffset(), icon, Pass.UPDATE_ALL, null, null, GutterIconRenderer.Alignment.CENTER) {
final DefaultActionGroup finalActionGroup = actionGroup;
return new LineMarkerInfo<PsiElement>(element, element.getTextOffset(), icon, Pass.UPDATE_ALL, null, null,
GutterIconRenderer.Alignment.CENTER) {
@Nullable
@Override
public GutterIconRenderer createGutterRenderer() {
@@ -75,7 +80,7 @@ public class RunLineMarkerProvider implements LineMarkerProvider {
@Nullable
@Override
public ActionGroup getPopupMenuActions() {
return actionGroup;
return finalActionGroup;
}
};
}