diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/java15api/Java15APIUsageInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/java15api/Java15APIUsageInspectionBase.java index 69db5d716a75..cd119a57d030 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/java15api/Java15APIUsageInspectionBase.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/java15api/Java15APIUsageInspectionBase.java @@ -355,29 +355,31 @@ public class Java15APIUsageInspectionBase extends BaseJavaBatchLocalInspectionTo } @Nullable - public static String getSignature(PsiMember member) { + private static String getSignature(@Nullable PsiMember member) { if (member instanceof PsiClass) { return ((PsiClass)member).getQualifiedName(); } if (member instanceof PsiField) { - return getSignature(member.getContainingClass()) + "#" + member.getName(); + String containingClass = getSignature(member.getContainingClass()); + return containingClass == null ? null : containingClass + "#" + member.getName(); } if (member instanceof PsiMethod) { final PsiMethod method = (PsiMethod)member; + String containingClass = getSignature(member.getContainingClass()); + if (containingClass == null) return null; + StringBuilder buf = new StringBuilder(); - buf.append(getSignature(method.getContainingClass())); + buf.append(containingClass); buf.append('#'); buf.append(method.getName()); buf.append('('); - final PsiType[] params = method.getSignature(PsiSubstitutor.EMPTY).getParameterTypes(); - for (PsiType type : params) { + for (PsiType type : method.getSignature(PsiSubstitutor.EMPTY).getParameterTypes()) { buf.append(type.getCanonicalText()); buf.append(";"); } buf.append(')'); return buf.toString(); } - assert false; return null; } } diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameCompletionContributor.java index 2fc06a2dabd5..fb415ec2fbdb 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaClassNameCompletionContributor.java @@ -134,6 +134,10 @@ public class JavaClassNameCompletionContributor extends CompletionContributor { }); } + static LookupElement highlightIfNeeded(JavaPsiClassReferenceElement element, CompletionParameters parameters) { + return JavaCompletionUtil.highlightIfNeeded(null, element, element.getObject(), parameters.getPosition()); + } + public static JavaPsiClassReferenceElement createClassLookupItem(final PsiClass psiClass, final boolean inJavaContext) { return AllClassesGetter.createLookupItem(psiClass, inJavaContext ? JavaClassNameInsertHandler.JAVA_CLASS_INSERT_HANDLER : AllClassesGetter.TRY_SHORTENING); diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java index fba10a633432..e12fad06e77f 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionContributor.java @@ -264,7 +264,7 @@ public class JavaCompletionContributor extends CompletionContributor { return PsiUtilCore.findLanguageFromElement(position).isKindOf(JavaLanguage.INSTANCE); } - public static void addAllClasses(CompletionParameters parameters, + public static void addAllClasses(final CompletionParameters parameters, final CompletionResultSet result, final InheritorsHolder inheritors) { if (!isClassNamePossible(parameters) || !mayStartClassName(result)) { @@ -276,7 +276,7 @@ public class JavaCompletionContributor extends CompletionContributor { @Override public void consume(LookupElement element) { if (!inheritors.alreadyProcessed(element)) { - result.addElement(element); + result.addElement(JavaClassNameCompletionContributor.highlightIfNeeded((JavaPsiClassReferenceElement)element, parameters)); } } }); diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java index 17cb8724dc56..6c22727a15df 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java @@ -22,6 +22,7 @@ import com.intellij.codeInsight.completion.scope.JavaCompletionProcessor; import com.intellij.codeInsight.completion.util.ParenthesesInsertHandler; import com.intellij.codeInsight.guess.GuessManager; import com.intellij.codeInsight.lookup.*; +import com.intellij.codeInspection.java15api.Java15APIUsageInspectionBase; import com.intellij.lang.StdLanguages; import com.intellij.lang.java.JavaLanguage; import com.intellij.openapi.diagnostic.Logger; @@ -50,6 +51,7 @@ import com.intellij.psi.util.PsiFormatUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.psi.util.TypeConversionUtil; +import com.intellij.ui.JBColor; import com.intellij.util.IncorrectOperationException; import com.intellij.util.NullableFunction; import com.intellij.util.PairConsumer; @@ -60,7 +62,9 @@ import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.awt.*; import java.util.*; +import java.util.List; import static com.intellij.patterns.PlatformPatterns.psiElement; @@ -383,7 +387,7 @@ public class JavaCompletionUtil { } mentioned.add(CompletionUtil.getOriginalOrSelf((PsiMember)o)); } - set.add(highlightIfNeeded(qualifierType, castQualifier(item, castItem, plainQualifier, processor), o)); + set.add(highlightIfNeeded(qualifierType, castQualifier(item, castItem, plainQualifier, processor), o, element)); } } @@ -503,11 +507,37 @@ public class JavaCompletionUtil { return type instanceof PsiClassType ? ((PsiClassType)type).rawType() : type; } - public static LookupElement highlightIfNeeded(PsiType qualifierType, LookupElement item, Object object) { - return containsMember(qualifierType, object) ? highlight(item) : item; + @NotNull + public static LookupElement highlightIfNeeded(@Nullable PsiType qualifierType, + @NotNull LookupElement item, + @NotNull Object object, + @NotNull PsiElement place) { + final boolean bold = containsMember(qualifierType, object); + boolean red = false; + if (object instanceof PsiMember) { + red = Java15APIUsageInspectionBase.isForbiddenApiUsage((PsiMember)object, PsiUtil.getLanguageLevel(place)); + } + LookupElement result = item; + if (bold || red) { + final Color fg = red ? JBColor.RED : null; + result = LookupElementDecorator.withRenderer(result, new LookupElementRenderer>() { + @Override + public void renderElement(LookupElementDecorator element, LookupElementPresentation presentation) { + element.getDelegate().renderElement(presentation); + presentation.setItemTextBold(bold); + if (fg != null) { + presentation.setItemTextForeground(fg); + } + } + }); + } + if (bold) { + result = PrioritizedLookupElement.withExplicitProximity(result, 1); + } + return result; } - public static boolean containsMember(PsiType qualifierType, Object object) { + public static boolean containsMember(@Nullable PsiType qualifierType, @NotNull Object object) { if (qualifierType instanceof PsiArrayType && object instanceof PsiMember) { //length and clone() PsiFile file = ((PsiMember)object).getContainingFile(); if (file == null || file.getVirtualFile() == null) { //yes, they're a bit dummy diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaNoVariantsDelegator.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaNoVariantsDelegator.java index ceebdecdf8c3..d526f1bd828b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaNoVariantsDelegator.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaNoVariantsDelegator.java @@ -20,7 +20,6 @@ import com.intellij.codeInsight.completion.impl.BetterPrefixMatcher; import com.intellij.codeInsight.completion.impl.CamelHumpMatcher; import com.intellij.codeInsight.lookup.AutoCompletionPolicy; import com.intellij.codeInsight.lookup.LookupElement; -import com.intellij.openapi.util.Key; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; @@ -93,7 +92,7 @@ public class JavaNoVariantsDelegator extends CompletionContributor { suggestCollectionUtilities(parameters, result, position); if (parameters.getInvocationCount() <= 1 && - JavaCompletionContributor.mayStartClassName(result) && + (JavaCompletionContributor.mayStartClassName(result) || suggestMetaAnnotations(parameters)) && JavaCompletionContributor.isClassNamePossible(parameters)) { suggestNonImportedClasses(parameters, result, null); return; @@ -145,7 +144,7 @@ public class JavaNoVariantsDelegator extends CompletionContributor { if (ref != null) { for (final LookupElement item : JavaSmartCompletionContributor.completeReference(position, ref, filter, true, true, parameters, result.getPrefixMatcher())) { - qualifiedCollector.addElement(new JavaChainLookupElement(base, item)); + qualifiedCollector.addElement(JavaCompletionUtil.highlightIfNeeded(null, new JavaChainLookupElement(base, item), item.getObject(), position)); } } } @@ -178,7 +177,7 @@ public class JavaNoVariantsDelegator extends CompletionContributor { return allClasses; } - private static void suggestNonImportedClasses(CompletionParameters parameters, final CompletionResultSet result, @Nullable final InheritorsHolder inheritorsHolder) { + private static void suggestNonImportedClasses(final CompletionParameters parameters, final CompletionResultSet result, @Nullable final InheritorsHolder inheritorsHolder) { JavaClassNameCompletionContributor.addAllClasses(parameters, true, result.getPrefixMatcher(), new Consumer() { @Override @@ -189,6 +188,7 @@ public class JavaNoVariantsDelegator extends CompletionContributor { JavaPsiClassReferenceElement classElement = element.as(JavaPsiClassReferenceElement.CLASS_CONDITION_KEY); if (classElement != null) { classElement.setAutoCompletionPolicy(AutoCompletionPolicy.NEVER_AUTOCOMPLETE); + element = JavaClassNameCompletionContributor.highlightIfNeeded(classElement, parameters); } result.addElement(element); diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavyNormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavyNormalCompletionTest.groovy index 5d0bcd4eaa8c..72aa72138dff 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavyNormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavyNormalCompletionTest.groovy @@ -6,6 +6,7 @@ package com.intellij.codeInsight.completion import com.intellij.JavaTestUtil import com.intellij.codeInsight.generation.OverrideImplementExploreUtil import com.intellij.codeInsight.lookup.LookupElement +import com.intellij.codeInsight.lookup.LookupElementPresentation import com.intellij.codeInsight.lookup.LookupManager import com.intellij.codeInsight.lookup.impl.LookupImpl import com.intellij.openapi.application.ApplicationManager @@ -18,14 +19,17 @@ import com.intellij.openapi.roots.ModuleRootManager import com.intellij.openapi.roots.SourceFolder import com.intellij.openapi.vfs.LocalFileSystem import com.intellij.openapi.vfs.VirtualFile +import com.intellij.pom.java.LanguageLevel import com.intellij.psi.JavaPsiFacade import com.intellij.psi.PsiClass import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiManager import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.util.PsiTreeUtil +import com.intellij.testFramework.IdeaTestUtil import com.intellij.testFramework.PsiTestUtil import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase +import com.intellij.ui.JBColor import org.jetbrains.annotations.NotNull /** @@ -171,4 +175,33 @@ public class Test { assert oldCount == tracker.javaStructureModificationCount } + public void testForbiddenApiVariants() { + IdeaTestUtil.setModuleLanguageLevel(myModule, LanguageLevel.JDK_1_4) + myFixture.addClass("""\ +package java.nio.channels; +public class SocketChannel { + public SocketChannel shutdownInput() {} + public boolean isConnected(); +}""") + myFixture.addClass("package java.nio.channels; public class AsynchronousServerSocketChannel { }") + + myFixture.configureByText 'a.java', 'class Foo {{ new SocketChannex }}' + myFixture.completeBasic() + def p = LookupElementPresentation.renderElement(myFixture.lookup.items[0]) + assert p.itemText == 'SocketChannel' + assert p.itemTextForeground == JBColor.foreground() + + p = LookupElementPresentation.renderElement(myFixture.lookup.items.find { it.lookupString == 'AsynchronousServerSocketChannel' }) + assert p.itemTextForeground == JBColor.RED + + myFixture.type('\n.s') + myFixture.completeBasic() + p = LookupElementPresentation.renderElement(myFixture.lookup.items[0]) + assert p.itemText == 'shutdownInput' + assert p.itemTextForeground == JBColor.RED + + p = LookupElementPresentation.renderElement(myFixture.lookup.items.find { it.lookupString == 'isConnected' }) + assert p.itemTextForeground == JBColor.foreground() + } + } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy index 3391bb407e43..f65bff871ecf 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -1147,6 +1147,12 @@ class XInternalError {} assertFirstStringItems "XInternalError", "XInternalTimerServiceController" } + public void testMetaAnnotation() { + myFixture.configureByText "a.java", "@ @interface Anno {}" + myFixture.complete(CompletionType.BASIC) + assert myFixture.lookup.items.find { it.lookupString == 'Retention' } + } + public void testAnnotationClassFromWithinAnnotation() { doTest() } public void testStaticallyImportedFieldsTwice() { diff --git a/platform/dvcs-api/src/com/intellij/dvcs/push/PushTargetPanel.java b/platform/dvcs-api/src/com/intellij/dvcs/push/PushTargetPanel.java index e182fad94016..3f0b82c39e2c 100644 --- a/platform/dvcs-api/src/com/intellij/dvcs/push/PushTargetPanel.java +++ b/platform/dvcs-api/src/com/intellij/dvcs/push/PushTargetPanel.java @@ -24,7 +24,7 @@ import javax.swing.*; public abstract class PushTargetPanel extends JPanel { - abstract public void render(@NotNull ColoredTreeCellRenderer renderer); + abstract public void render(@NotNull ColoredTreeCellRenderer renderer, boolean isSelected); @NotNull abstract public T getValue(); diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/PushController.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/PushController.java index 5f28d2b92c7f..b6b3dfb4cd8c 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/PushController.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/PushController.java @@ -41,6 +41,8 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreeNode; +import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; @@ -366,7 +368,7 @@ public class PushController implements Disposable { public DefaultMutableTreeNode fun(final VcsError error) { VcsLinkedText errorLinkText = new VcsLinkedText(error.getText(), new VcsLinkListener() { @Override - public void hyperlinkActivated(@NotNull DefaultMutableTreeNode sourceNode) { + public void hyperlinkActivated(@NotNull DefaultMutableTreeNode sourceNode, @NotNull MouseEvent event) { error.handleError(new CommitLoader() { @Override public void reloadCommits() { @@ -509,8 +511,11 @@ public class PushController implements Disposable { if (i >= commitsNum) { final VcsLinkedText moreCommitsLink = new VcsLinkedText("...", new VcsLinkListener() { @Override - public void hyperlinkActivated(@NotNull DefaultMutableTreeNode sourceNode) { - addMoreCommits((RepositoryNode)sourceNode); + public void hyperlinkActivated(@NotNull DefaultMutableTreeNode sourceNode, @NotNull MouseEvent event) { + TreeNode parent = sourceNode.getParent(); + if (parent instanceof RepositoryNode) { + addMoreCommits((RepositoryNode)parent); + } } }); childrenToShown.add(new TextWithLinkNode(moreCommitsLink)); diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/PushLog.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/PushLog.java index 6cb7e3792388..b91aa17e04d5 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/PushLog.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/PushLog.java @@ -15,7 +15,6 @@ */ package com.intellij.dvcs.push.ui; -import com.intellij.dvcs.push.PushTargetPanel; import com.intellij.icons.AllIcons; import com.intellij.ide.actions.EditSourceAction; import com.intellij.idea.ActionsBundle; @@ -337,7 +336,7 @@ public class PushLog extends JPanel implements TypeSafeDataProvider { Object tag = me.getClickCount() >= 1 ? PushLogTreeUtil.getTagAtForRenderer(myTreeCellRenderer, me) : null; - return tag instanceof PushTargetPanel; + return tag instanceof VcsEditableComponent; } //if keyboard event - then anEvent will be null =( See BasicTreeUi TreePath treePath = myTree.getAnchorSelectionPath(); diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryNode.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryNode.java index 6a31c1a123b7..98fcca2797a9 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryNode.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryNode.java @@ -22,6 +22,7 @@ import com.intellij.ui.ColoredTreeCellRenderer; import com.intellij.ui.SimpleTextAttributes; import com.intellij.util.ui.GraphicsUtil; import com.intellij.util.ui.UIUtil; +import com.intellij.util.ui.tree.TreeUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -95,7 +96,7 @@ public class RepositoryNode extends CheckedTreeNode implements EditableTreeNode, renderer .append(myRepositoryPanel.getArrow(), isChecked() ? SimpleTextAttributes.REGULAR_ATTRIBUTES : SimpleTextAttributes.GRAY_ATTRIBUTES); PushTargetPanel pushTargetPanel = myRepositoryPanel.getTargetPanel(); - pushTargetPanel.render(renderer); + pushTargetPanel.render(renderer, renderer.getTree().isPathSelected(TreeUtil.getPathFromRoot(this))); int maxSize = Math.max(myRepositoryPanel.getCheckBoxHeight(), myLoadingIcon.getIconHeight()); int rendererHeight = renderer.getPreferredSize().height; diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/SingleRepositoryNode.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/SingleRepositoryNode.java index fccb004fd527..d0026224ba32 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/SingleRepositoryNode.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/SingleRepositoryNode.java @@ -18,6 +18,7 @@ package com.intellij.dvcs.push.ui; import com.intellij.dvcs.push.PushTargetPanel; import com.intellij.ui.ColoredTreeCellRenderer; import com.intellij.ui.SimpleTextAttributes; +import com.intellij.util.ui.tree.TreeUtil; import org.jetbrains.annotations.NotNull; public class SingleRepositoryNode extends RepositoryNode { @@ -52,6 +53,6 @@ public class SingleRepositoryNode extends RepositoryNode { renderer.append(myRepositoryPanel.getSourceName(), SimpleTextAttributes.REGULAR_ATTRIBUTES); renderer.append(myRepositoryPanel.getArrow(), SimpleTextAttributes.REGULAR_ATTRIBUTES); PushTargetPanel pushTargetPanel = myRepositoryPanel.getTargetPanel(); - pushTargetPanel.render(renderer); + pushTargetPanel.render(renderer, renderer.getTree().isPathSelected(TreeUtil.getPathFromRoot(this))); } } diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/TextWithLinkNode.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/TextWithLinkNode.java index 685fcb81fd05..3eee06530569 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/TextWithLinkNode.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/TextWithLinkNode.java @@ -16,13 +16,11 @@ package com.intellij.dvcs.push.ui; -import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.ColoredTreeCellRenderer; -import com.intellij.ui.SimpleTextAttributes; +import com.intellij.util.ui.tree.TreeUtil; import org.jetbrains.annotations.NotNull; import javax.swing.tree.DefaultMutableTreeNode; -import javax.swing.tree.TreeNode; public class TextWithLinkNode extends DefaultMutableTreeNode implements CustomRenderedTreeNode { @@ -32,21 +30,10 @@ public class TextWithLinkNode extends DefaultMutableTreeNode implements CustomRe myLinkedText = linkedText; } - public void fireOnClick(@NotNull TextWithLinkNode relatedNode) { - TreeNode parent = relatedNode.getParent(); - if (parent instanceof RepositoryNode) { - myLinkedText.hyperLinkActivate((RepositoryNode)parent); - } - } - @Override public void render(@NotNull ColoredTreeCellRenderer renderer) { - renderer.append(myLinkedText.getTextBefore(), SimpleTextAttributes.REGULAR_ATTRIBUTES); - String linkedText = myLinkedText.getLinkText(); - if (!StringUtil.isEmptyOrSpaces(linkedText)) { - renderer.append(" "); - renderer.append(myLinkedText.getLinkText(), SimpleTextAttributes.SYNTHETIC_ATTRIBUTES, this); - } - renderer.append(myLinkedText.getTextAfter(), SimpleTextAttributes.REGULAR_ATTRIBUTES); + renderer.append(" "); + myLinkedText.setSelected(renderer.getTree().isPathSelected(TreeUtil.getPathFromRoot(this))); + myLinkedText.render(renderer); } } \ No newline at end of file diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsBranchEditorListener.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsBranchEditorListener.java index 43b7c1d4e1f4..5891848803cc 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsBranchEditorListener.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsBranchEditorListener.java @@ -20,15 +20,43 @@ import com.intellij.ui.CheckboxTree; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.TreePath; +import java.awt.*; import java.awt.event.MouseEvent; public class VcsBranchEditorListener extends LinkMouseListenerBase { private final CheckboxTree.CheckboxTreeCellRenderer myRenderer; + private VcsLinkedText underlined; public VcsBranchEditorListener(final CheckboxTree.CheckboxTreeCellRenderer renderer) { myRenderer = renderer; } + @Override + public void mouseMoved(MouseEvent e) { + Component component = (Component)e.getSource(); + Object tag = getTagAt(e); + boolean shouldRepaint = false; + if (underlined != null) { + underlined.setUnderlined(false); + shouldRepaint = true; + } + if (tag != null && tag instanceof VcsLinkedText) { + component.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + VcsLinkedText linkedText = (VcsLinkedText)tag; + linkedText.setUnderlined(true); + underlined = linkedText; + shouldRepaint = true; + } + else { + super.mouseMoved(e); + } + if (shouldRepaint) { + myRenderer.getTextRenderer().getTree().repaint(); + } + } + @Nullable @Override protected Object getTagAt(@NotNull final MouseEvent e) { @@ -36,12 +64,13 @@ public class VcsBranchEditorListener extends LinkMouseListenerBase { } protected void handleTagClick(@Nullable final Object tag, @NotNull MouseEvent event) { - if (tag instanceof TextWithLinkNode) { - TextWithLinkNode textWithLink = (TextWithLinkNode)tag; - textWithLink.fireOnClick(textWithLink); - } - if (tag instanceof ExtraEditControl) { - ((ExtraEditControl)tag).click(event); + if (tag instanceof VcsLinkedText) { + VcsLinkedText textWithLink = (VcsLinkedText)tag; + final TreePath path = myRenderer.getTextRenderer().getTree().getPathForLocation(event.getX(), event.getY()); + if (path == null) return; + Object node = path.getLastPathComponent(); + if (node == null || (!(node instanceof DefaultMutableTreeNode))) return; + textWithLink.fireOnClick((DefaultMutableTreeNode)node, event); } if (tag instanceof Runnable) { ((Runnable)tag).run(); diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/ExtraEditControl.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsEditableComponent.java similarity index 80% rename from platform/dvcs-impl/src/com/intellij/dvcs/push/ui/ExtraEditControl.java rename to platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsEditableComponent.java index df6f3f324332..f188987d015d 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/ExtraEditControl.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsEditableComponent.java @@ -15,15 +15,11 @@ */ package com.intellij.dvcs.push.ui; -import org.jetbrains.annotations.NotNull; - -import java.awt.event.MouseEvent; /** + * Event on this component should start edit mode for appropriate path in JTree * + * @see com.intellij.dvcs.push.ui.PushLog */ -public interface ExtraEditControl { - - void click(@NotNull MouseEvent event); - +public interface VcsEditableComponent { } diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsEditableTextComponent.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsEditableTextComponent.java new file mode 100644 index 000000000000..30173c0b15f6 --- /dev/null +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsEditableTextComponent.java @@ -0,0 +1,26 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.dvcs.push.ui; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class VcsEditableTextComponent extends VcsLinkedText implements VcsEditableComponent { + + public VcsEditableTextComponent(@NotNull String text, @Nullable VcsLinkListener listener) { + super(text, listener); + } +} \ No newline at end of file diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsLinkListener.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsLinkListener.java index 76578165b37c..f775a26353ac 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsLinkListener.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsLinkListener.java @@ -18,7 +18,8 @@ package com.intellij.dvcs.push.ui; import org.jetbrains.annotations.NotNull; import javax.swing.tree.DefaultMutableTreeNode; +import java.awt.event.MouseEvent; public interface VcsLinkListener { - void hyperlinkActivated(@NotNull DefaultMutableTreeNode sourceNode); + void hyperlinkActivated(@NotNull DefaultMutableTreeNode sourceNode, @NotNull MouseEvent event); } diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsLinkedText.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsLinkedText.java index 35c4989f160e..8db1b12321d2 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsLinkedText.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/VcsLinkedText.java @@ -15,15 +15,18 @@ */ package com.intellij.dvcs.push.ui; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.ui.ColoredTreeCellRenderer; +import com.intellij.ui.SimpleTextAttributes; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.tree.DefaultMutableTreeNode; +import java.awt.event.MouseEvent; import java.util.regex.Matcher; import java.util.regex.Pattern; public class VcsLinkedText { - private static final Pattern HREF_PATTERN = Pattern.compile("([^<]*)"); @NotNull private String myTextBefore; @@ -31,6 +34,8 @@ public class VcsLinkedText { @NotNull private String myHandledLink; @Nullable private final VcsLinkListener myLinkListener; + private boolean mySelected; + private boolean myUnderlined; public VcsLinkedText(@NotNull String text, @Nullable VcsLinkListener listener) { Matcher aMatcher = HREF_PATTERN.matcher(text); @@ -47,24 +52,38 @@ public class VcsLinkedText { myLinkListener = listener; } - @NotNull - public String getTextBefore() { - return myTextBefore; + public void updateLinkText(@NotNull String text) { + myHandledLink = text; } - @NotNull - public String getTextAfter() { - return myTextAfter; - } - - @NotNull - public String getLinkText() { - return myHandledLink; - } - - public void hyperLinkActivate(@NotNull DefaultMutableTreeNode relatedNode) { + public void fireOnClick(@NotNull DefaultMutableTreeNode relatedNode, @NotNull MouseEvent event) { if (myLinkListener != null) { - myLinkListener.hyperlinkActivated(relatedNode); + myLinkListener.hyperlinkActivated(relatedNode, event); } } + + public void render(@NotNull ColoredTreeCellRenderer renderer) { + if (!StringUtil.isEmptyOrSpaces(myTextBefore)) { + renderer.append(myTextBefore, SimpleTextAttributes.REGULAR_ATTRIBUTES); + renderer.append(" "); + } + if (!StringUtil.isEmptyOrSpaces(myHandledLink)) { + renderer.append(myHandledLink, + myUnderlined || mySelected ? SimpleTextAttributes.LINK_ATTRIBUTES : SimpleTextAttributes.SYNTHETIC_ATTRIBUTES, this); + } + renderer.append(myTextAfter, SimpleTextAttributes.REGULAR_ATTRIBUTES); + } + + public void setUnderlined(boolean underlined) { + myUnderlined = underlined; + } + + public void setSelected(boolean selected) { + mySelected = selected; + } + + @NotNull + public String getText() { + return myTextBefore + myHandledLink + myTextAfter; + } } diff --git a/platform/icons/src/welcome/CreateNewProjectfromExistingFiles.png b/platform/icons/src/welcome/CreateNewProjectfromExistingFiles.png new file mode 100644 index 000000000000..2946fde53559 Binary files /dev/null and b/platform/icons/src/welcome/CreateNewProjectfromExistingFiles.png differ diff --git a/platform/icons/src/welcome/CreateNewProjectfromExistingFiles@2x.png b/platform/icons/src/welcome/CreateNewProjectfromExistingFiles@2x.png new file mode 100644 index 000000000000..8109a5880fe8 Binary files /dev/null and b/platform/icons/src/welcome/CreateNewProjectfromExistingFiles@2x.png differ diff --git a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/PsiAwareTextEditorProvider.java b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/PsiAwareTextEditorProvider.java index 41de1d440437..217e6051a102 100644 --- a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/PsiAwareTextEditorProvider.java +++ b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/text/PsiAwareTextEditorProvider.java @@ -28,6 +28,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.fileEditor.*; +import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.WriteExternalException; import com.intellij.openapi.vfs.VirtualFile; @@ -61,6 +62,9 @@ public class PsiAwareTextEditorProvider extends TextEditorProvider implements As state = CodeFoldingManager.getInstance(project).buildInitialFoldings(document); } } + catch (ProcessCanceledException e) { + throw e; + } catch (Exception e) { LOG.error("Error building initial foldings", e); } diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java index fdbba254571b..a291159cbe73 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java @@ -43,6 +43,7 @@ import com.intellij.openapi.fileTypes.FileTypeEvent; import com.intellij.openapi.fileTypes.FileTypeListener; import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.preview.PreviewManager; +import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.PossiblyDumbAware; @@ -782,6 +783,9 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec } }); } + catch (ProcessCanceledException e) { + throw e; + } catch (Exception e) { LOG.error(e); } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/FlatWelcomeFrameProvider.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/FlatWelcomeFrameProvider.java index 6bf6c07a4e2b..9242d94d8dc4 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/FlatWelcomeFrameProvider.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/FlatWelcomeFrameProvider.java @@ -31,6 +31,6 @@ public class FlatWelcomeFrameProvider implements WelcomeFrameProvider { public static boolean isAvailable() { return Registry.is("ide.new.welcome.screen") - && (PlatformUtils.isIntelliJ() || PlatformUtils.isCidr()); + && (PlatformUtils.isIntelliJ() || PlatformUtils.isCidr() || PlatformUtils.isWebStorm()); } } diff --git a/platform/platform-impl/src/com/intellij/platform/NewDirectoryProjectAction.java b/platform/platform-impl/src/com/intellij/platform/NewDirectoryProjectAction.java index 541f9a8194be..ef4198b5deae 100644 --- a/platform/platform-impl/src/com/intellij/platform/NewDirectoryProjectAction.java +++ b/platform/platform-impl/src/com/intellij/platform/NewDirectoryProjectAction.java @@ -15,6 +15,7 @@ */ package com.intellij.platform; +import com.intellij.icons.AllIcons; import com.intellij.ide.RecentProjectsManager; import com.intellij.idea.ActionsBundle; import com.intellij.internal.statistic.UsageTrigger; @@ -33,6 +34,7 @@ import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.wm.impl.welcomeScreen.NewWelcomeScreen; import com.intellij.projectImport.ProjectOpenedCallback; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -111,4 +113,11 @@ public class NewDirectoryProjectAction extends AnAction implements DumbAware { protected Object showSettings(DirectoryProjectGenerator generator, VirtualFile baseDir) throws ProcessCanceledException { return generator.showGenerationSettings(baseDir); } + + @Override + public void update(@NotNull AnActionEvent e) { + if (NewWelcomeScreen.isNewWelcomeScreen(e)) { + e.getPresentation().setIcon(AllIcons.Welcome.CreateNewProject); + } + } } diff --git a/platform/util/src/com/intellij/icons/AllIcons.java b/platform/util/src/com/intellij/icons/AllIcons.java index f81fbc288137..bafad53c0348 100644 --- a/platform/util/src/com/intellij/icons/AllIcons.java +++ b/platform/util/src/com/intellij/icons/AllIcons.java @@ -1173,6 +1173,7 @@ public class AllIcons { public static class Welcome { public static final Icon CreateDesktopEntry = IconLoader.getIcon("/welcome/createDesktopEntry.png"); // 32x32 public static final Icon CreateNewProject = IconLoader.getIcon("/welcome/createNewProject.png"); // 16x16 + public static final Icon CreateNewProjectfromExistingFiles = IconLoader.getIcon("/welcome/CreateNewProjectfromExistingFiles.png"); // 16x16 public static final Icon FromVCS = IconLoader.getIcon("/welcome/fromVCS.png"); // 16x16 public static final Icon ImportProject = IconLoader.getIcon("/welcome/importProject.png"); // 16x16 public static final Icon OpenProject = IconLoader.getIcon("/welcome/openProject.png"); // 16x16 diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/StepOverAction.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/StepOverAction.java index e31e0c2773a4..461ce018cb00 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/StepOverAction.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/StepOverAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,13 +15,14 @@ */ package com.intellij.xdebugger.impl.actions; -import org.jetbrains.annotations.NotNull; +import com.intellij.openapi.project.DumbAware; import com.intellij.xdebugger.impl.DebuggerSupport; +import org.jetbrains.annotations.NotNull; /** * @author nik */ -public class StepOverAction extends XDebuggerActionBase { +public class StepOverAction extends XDebuggerActionBase implements DumbAware { @NotNull protected DebuggerActionHandler getHandler(@NotNull final DebuggerSupport debuggerSupport) { return debuggerSupport.getStepOverHandler(); diff --git a/plugins/git4idea/src/git4idea/push/GitPushTargetPanel.java b/plugins/git4idea/src/git4idea/push/GitPushTargetPanel.java index 62ecbd670d4c..4e47543149d2 100644 --- a/plugins/git4idea/src/git4idea/push/GitPushTargetPanel.java +++ b/plugins/git4idea/src/git4idea/push/GitPushTargetPanel.java @@ -16,8 +16,10 @@ package git4idea.push; import com.intellij.dvcs.push.PushTargetPanel; -import com.intellij.dvcs.push.ui.ExtraEditControl; import com.intellij.dvcs.push.ui.PushTargetTextField; +import com.intellij.dvcs.push.ui.VcsEditableTextComponent; +import com.intellij.dvcs.push.ui.VcsLinkListener; +import com.intellij.dvcs.push.ui.VcsLinkedText; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.ui.ValidationInfo; import com.intellij.openapi.ui.popup.JBPopupFactory; @@ -38,6 +40,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import javax.swing.tree.DefaultMutableTreeNode; import java.awt.*; import java.awt.event.MouseEvent; import java.text.ParseException; @@ -52,9 +55,9 @@ public class GitPushTargetPanel extends PushTargetPanel { private static final String SEPARATOR = " : "; @NotNull private final GitRepository myRepository; + @NotNull private final VcsEditableTextComponent myTargetRenderedComponent; @NotNull private final PushTargetTextField myTargetTextField; - @NotNull private final JLabel myRemoteLabel; - @NotNull private final ExtraEditControl myEditRemoteControl; + @NotNull private final VcsLinkedText myRemoteRenderedComponent; @Nullable private GitPushTarget myCurrentTarget; @Nullable private String myError; @@ -85,22 +88,20 @@ public class GitPushTargetPanel extends PushTargetPanel { initialBranch = getTextFieldText(defaultTarget); initialRemote = defaultTarget.getBranch().getRemote().getName(); } - - myEditRemoteControl = new ExtraEditControl() { + myTargetRenderedComponent = new VcsEditableTextComponent("" + initialBranch + "", null); + myTargetTextField = new PushTargetTextField(repository.getProject(), getTargetNames(myRepository), initialBranch); + myRemoteRenderedComponent = new VcsLinkedText("" + initialRemote + "", new VcsLinkListener() { @Override - public void click(@NotNull MouseEvent event) { + public void hyperlinkActivated(@NotNull DefaultMutableTreeNode sourceNode, @NotNull MouseEvent event) { showRemoteSelector(event); } - }; - - myTargetTextField = new PushTargetTextField(repository.getProject(), getTargetNames(myRepository), initialBranch); - myRemoteLabel = new JBLabel(initialRemote); + }); setLayout(new BorderLayout()); setOpaque(false); JPanel remoteAndSeparator = new JPanel(new BorderLayout()); remoteAndSeparator.setOpaque(false); - remoteAndSeparator.add(myRemoteLabel, BorderLayout.CENTER); + remoteAndSeparator.add(new JBLabel(myRemoteRenderedComponent.getText()), BorderLayout.CENTER); remoteAndSeparator.add(new JBLabel(SEPARATOR), BorderLayout.EAST); add(remoteAndSeparator, BorderLayout.WEST); @@ -121,7 +122,7 @@ public class GitPushTargetPanel extends PushTargetPanel { ListPopup popup = JBPopupFactory.getInstance().createListPopup(new BaseListPopupStep(null, remotes) { @Override public PopupStep onChosen(String selectedValue, boolean finalChoice) { - myRemoteLabel.setText(selectedValue); + myRemoteRenderedComponent.updateLinkText(selectedValue); if (myFireOnChangeAction != null) { myFireOnChangeAction.run(); } @@ -142,14 +143,15 @@ public class GitPushTargetPanel extends PushTargetPanel { } @Override - public void render(@NotNull final ColoredTreeCellRenderer renderer) { + public void render(@NotNull ColoredTreeCellRenderer renderer, boolean isSelected) { if (myError != null) { renderer.append(myError, SimpleTextAttributes.ERROR_ATTRIBUTES); } else { - String currentRemote = myRemoteLabel.getText(); + String currentRemote = myRemoteRenderedComponent.getText(); if (getRemotes().size() > 1) { - renderer.append(currentRemote, SimpleTextAttributes.SYNTHETIC_ATTRIBUTES, myEditRemoteControl); + myRemoteRenderedComponent.setSelected(isSelected); + myRemoteRenderedComponent.render(renderer); } else { renderer.append(currentRemote, SimpleTextAttributes.REGULAR_ATTRIBUTES); @@ -160,7 +162,8 @@ public class GitPushTargetPanel extends PushTargetPanel { if (target.isNewBranchCreated()) { renderer.append("+", SimpleTextAttributes.SYNTHETIC_ATTRIBUTES, this); } - renderer.append(target.getBranch().getNameForRemoteOperations(), SimpleTextAttributes.SYNTHETIC_ATTRIBUTES, this); + myTargetRenderedComponent.setSelected(isSelected); + myTargetRenderedComponent.render(renderer); } } @@ -185,10 +188,11 @@ public class GitPushTargetPanel extends PushTargetPanel { if (myError != null) { return; } - String remoteName = myRemoteLabel.getText(); + String remoteName = myRemoteRenderedComponent.getText(); String branchName = myTargetTextField.getText(); try { myCurrentTarget = GitPushTarget.parse(myRepository, remoteName, branchName); + myTargetRenderedComponent.updateLinkText(branchName); } catch (ParseException e) { LOG.error("Invalid remote name shouldn't be allowed. [" + remoteName + ", " + branchName + "]", e); @@ -202,7 +206,7 @@ public class GitPushTargetPanel extends PushTargetPanel { return new ValidationInfo(myError, myTargetTextField); } try { - GitPushTarget.parse(myRepository, myRemoteLabel.getText(), myTargetTextField.getText()); + GitPushTarget.parse(myRepository, myRemoteRenderedComponent.getText(), myTargetTextField.getText()); return null; } catch (ParseException e) { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GrMainCompletionProvider.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GrMainCompletionProvider.java index b30d8f997746..6accb46d32e7 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GrMainCompletionProvider.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GrMainCompletionProvider.java @@ -252,7 +252,7 @@ public class GrMainCompletionProvider extends CompletionProvider { private final static String ENTER_REMOTE = "Enter Remote"; private final HgRepository myRepository; private final TextFieldWithAutoCompletion myDestTargetPanel; - private String myOldText; + private final VcsEditableTextComponent myTargetRenderedComponent; public HgPushTargetPanel(@NotNull HgRepository repository, @Nullable HgTarget defaultTarget) { setLayout(new BorderLayout()); setOpaque(false); myRepository = repository; final List targetVariants = HgUtil.getTargetNames(repository); - myOldText = defaultTarget != null ? defaultTarget.getPresentation() : ""; - myDestTargetPanel = new PushTargetTextField(repository.getProject(), targetVariants, myOldText); + String defaultText = defaultTarget != null ? defaultTarget.getPresentation() : ""; + myTargetRenderedComponent = new VcsEditableTextComponent("" + defaultText + "", null); + myDestTargetPanel = new PushTargetTextField(repository.getProject(), targetVariants, defaultText); add(myDestTargetPanel, BorderLayout.CENTER); } @Override - public void render(@NotNull ColoredTreeCellRenderer renderer) { + public void render(@NotNull ColoredTreeCellRenderer renderer, boolean isSelected) { String targetText = myDestTargetPanel.getText(); if (StringUtil.isEmptyOrSpaces(targetText)) { renderer.append(ENTER_REMOTE, SimpleTextAttributes.GRAY_ITALIC_ATTRIBUTES, this); } - renderer.append(targetText, SimpleTextAttributes.SYNTHETIC_ATTRIBUTES, this); + myTargetRenderedComponent.setSelected(isSelected); + myTargetRenderedComponent.render(renderer); } @Override @@ -71,12 +74,12 @@ public class HgPushTargetPanel extends PushTargetPanel { @Override public void fireOnCancel() { - myDestTargetPanel.setText(myOldText); + myDestTargetPanel.setText(myTargetRenderedComponent.getText()); } @Override public void fireOnChange() { - myOldText = myDestTargetPanel.getText(); + myTargetRenderedComponent.updateLinkText(myDestTargetPanel.getText()); } @Nullable diff --git a/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedderImpl.java b/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedderImpl.java index 27f211762fec..7526bb620295 100644 --- a/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedderImpl.java +++ b/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3ServerEmbedderImpl.java @@ -101,7 +101,7 @@ import java.util.concurrent.atomic.AtomicReference; */ public class Maven3ServerEmbedderImpl extends MavenRemoteObject implements MavenServerEmbedder { - private final static boolean USE_MVN2_COMPATIBLE_DEPENDENCY_RESOLVING = System.getProperty("maven3.use.compat.resolver") != null; + private final static boolean USE_MVN2_COMPATIBLE_DEPENDENCY_RESOLVING = System.getProperty("idea.maven3.use.compat.resolver") != null; @NotNull private final DefaultPlexusContainer myContainer; @NotNull private final Settings myMavenSettings; diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/AlwaysShowArtifactIdAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/AlwaysShowArtifactIdAction.java index c39f423062da..fc5985cf225a 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/AlwaysShowArtifactIdAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/AlwaysShowArtifactIdAction.java @@ -15,16 +15,17 @@ */ package org.jetbrains.idea.maven.navigator.actions; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator; public class AlwaysShowArtifactIdAction extends MavenProjectsNavigatorAction { @Override - public boolean isSelected(MavenProjectsNavigator navigator) { + public boolean isSelected(@NotNull MavenProjectsNavigator navigator) { return navigator.getAlwaysShowArtifactId(); } @Override - public void setSelected(MavenProjectsNavigator navigator, boolean value) { + public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) { navigator.setAlwaysShowArtifactId(value); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/GroupProjectsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/GroupProjectsAction.java index 2461dadb0272..b6212afb528e 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/GroupProjectsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/GroupProjectsAction.java @@ -15,16 +15,17 @@ */ package org.jetbrains.idea.maven.navigator.actions; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator; public class GroupProjectsAction extends MavenProjectsNavigatorAction { @Override - public boolean isSelected(MavenProjectsNavigator navigator) { + public boolean isSelected(@NotNull MavenProjectsNavigator navigator) { return navigator.getGroupModules(); } @Override - public void setSelected(MavenProjectsNavigator navigator, boolean value) { + public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) { navigator.setGroupModules(value); } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenProjectsNavigatorAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenProjectsNavigatorAction.java index d3222981f56f..6a990313a8e4 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenProjectsNavigatorAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenProjectsNavigatorAction.java @@ -16,6 +16,8 @@ package org.jetbrains.idea.maven.navigator.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; import org.jetbrains.idea.maven.utils.actions.MavenToggleAction; @@ -23,19 +25,24 @@ import org.jetbrains.idea.maven.utils.actions.MavenToggleAction; public abstract class MavenProjectsNavigatorAction extends MavenToggleAction { @Override protected boolean doIsSelected(AnActionEvent e) { - return isSelected(getNavigator(e)); + final MavenProjectsNavigator navigator = getNavigator(e); + return navigator!= null && isSelected(navigator); } @Override public void setSelected(AnActionEvent e, boolean state) { - setSelected(getNavigator(e), state); + final MavenProjectsNavigator navigator = getNavigator(e); + if (navigator != null) { + setSelected(navigator, state); + } } - private MavenProjectsNavigator getNavigator(AnActionEvent e) { + @Nullable + private static MavenProjectsNavigator getNavigator(AnActionEvent e) { return MavenProjectsNavigator.getInstance(MavenActionUtil.getProject(e.getDataContext())); } - protected abstract boolean isSelected(MavenProjectsNavigator navigator); + protected abstract boolean isSelected(@NotNull MavenProjectsNavigator navigator); - protected abstract void setSelected(MavenProjectsNavigator navigator, boolean value); + protected abstract void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowBasicPhasesOnlyAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowBasicPhasesOnlyAction.java index d9884fb29d0b..a0725a00346b 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowBasicPhasesOnlyAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowBasicPhasesOnlyAction.java @@ -15,16 +15,17 @@ */ package org.jetbrains.idea.maven.navigator.actions; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator; public class ShowBasicPhasesOnlyAction extends MavenProjectsNavigatorAction { @Override - public boolean isSelected(MavenProjectsNavigator navigator) { + public boolean isSelected(@NotNull MavenProjectsNavigator navigator) { return navigator.getShowBasicPhasesOnly(); } @Override - public void setSelected(MavenProjectsNavigator navigator, boolean value) { + public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) { navigator.setShowBasicPhasesOnly(value); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowIgnoredProjectsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowIgnoredProjectsAction.java index d24e2583415d..788faed05016 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowIgnoredProjectsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowIgnoredProjectsAction.java @@ -15,16 +15,17 @@ */ package org.jetbrains.idea.maven.navigator.actions; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator; public class ShowIgnoredProjectsAction extends MavenProjectsNavigatorAction { @Override - public boolean isSelected(MavenProjectsNavigator navigator) { + public boolean isSelected(@NotNull MavenProjectsNavigator navigator) { return navigator.getShowIgnored(); } @Override - public void setSelected(MavenProjectsNavigator navigator, boolean value) { + public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) { navigator.setShowIgnored(value); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowVersionsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowVersionsAction.java index b2ca05b0ac2f..929f08ee1d34 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowVersionsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowVersionsAction.java @@ -15,16 +15,17 @@ */ package org.jetbrains.idea.maven.navigator.actions; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator; public class ShowVersionsAction extends MavenProjectsNavigatorAction { @Override - public boolean isSelected(MavenProjectsNavigator navigator) { + public boolean isSelected(@NotNull MavenProjectsNavigator navigator) { return navigator.getShowVersions(); } @Override - public void setSelected(MavenProjectsNavigator navigator, boolean value) { + public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) { navigator.setShowVersions(value); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddFileAsMavenProjectAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddFileAsMavenProjectAction.java index ce05cccd5352..5cfd8ed787be 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddFileAsMavenProjectAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddFileAsMavenProjectAction.java @@ -18,7 +18,6 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.project.MavenProjectsManager; @@ -32,7 +31,9 @@ public class AddFileAsMavenProjectAction extends MavenAction { public void actionPerformed(AnActionEvent e) { final DataContext context = e.getDataContext(); MavenProjectsManager manager = MavenActionUtil.getProjectsManager(context); - manager.addManagedFilesOrUnignore(Collections.singletonList(getSelectedFile(context))); + if (manager != null) { + manager.addManagedFilesOrUnignore(Collections.singletonList(getSelectedFile(context))); + } } @Override @@ -51,7 +52,7 @@ public class AddFileAsMavenProjectAction extends MavenAction { private static boolean isExistingProjectFile(DataContext context, VirtualFile file) { MavenProjectsManager manager = MavenActionUtil.getProjectsManager(context); - return manager.findProject(file) != null; + return manager != null && manager.findProject(file) != null; } @Nullable diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddManagedFilesAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddManagedFilesAction.java index 33cbf026699d..a38b3d2f5719 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddManagedFilesAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddManagedFilesAction.java @@ -32,6 +32,7 @@ public class AddManagedFilesAction extends MavenAction { @Override public void actionPerformed(AnActionEvent e) { final MavenProjectsManager manager = MavenActionUtil.getProjectsManager(e.getDataContext()); + if(manager == null) return; FileChooserDescriptor singlePomSelection = new FileChooserDescriptor(true, false, false, false, false, true) { @Override public boolean isFileSelectable(VirtualFile file) { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadActionGroup.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadActionGroup.java index 6aa8d5b9c5c3..45cfbe8f5a25 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadActionGroup.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadActionGroup.java @@ -18,6 +18,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.project.DumbAware; +import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; public class DownloadActionGroup extends DefaultActionGroup implements DumbAware { @@ -28,7 +29,8 @@ public class DownloadActionGroup extends DefaultActionGroup implements DumbAware } private static boolean isEnabled(AnActionEvent e) { - return MavenActionUtil.hasProject(e.getDataContext()) - && MavenActionUtil.getProjectsManager(e.getDataContext()).isMavenizedProject(); + if(!MavenActionUtil.hasProject(e.getDataContext())) return false; + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext()); + return projectsManager != null && projectsManager.isMavenizedProject(); } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadSelectedSourcesAndDocsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadSelectedSourcesAndDocsAction.java index ae68b6e55436..680d94f81bac 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadSelectedSourcesAndDocsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadSelectedSourcesAndDocsAction.java @@ -16,6 +16,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.model.MavenArtifact; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.project.MavenProjectsManager; @@ -49,7 +50,7 @@ public class DownloadSelectedSourcesAndDocsAction extends MavenProjectsAction { return result == null ? Collections.emptyList() : result; } - protected void perform(MavenProjectsManager manager, List mavenProjects, AnActionEvent e) { + protected void perform(@NotNull MavenProjectsManager manager, List mavenProjects, AnActionEvent e) { manager.scheduleArtifactsDownloading(mavenProjects, getDependencies(e), mySources, myDocs, null); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/EditSettingsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/EditSettingsAction.java index fb845d59360c..d8ae83e68ff2 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/EditSettingsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/EditSettingsAction.java @@ -18,6 +18,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.utils.MavenSettings; import org.jetbrains.idea.maven.utils.actions.MavenAction; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; @@ -28,7 +29,7 @@ public class EditSettingsAction extends MavenAction { showSettingsFor(MavenActionUtil.getProject(e.getDataContext())); } - protected static void showSettingsFor(Project project) { + protected static void showSettingsFor(@Nullable Project project) { ShowSettingsUtil.getInstance().showSettingsDialog(project, MavenSettings.DISPLAY_NAME); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsAction.java index 5d782cf7fc48..9bcf2734a843 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsAction.java @@ -17,6 +17,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.actions.MavenAction; @@ -33,8 +34,10 @@ public abstract class MavenProjectsAction extends MavenAction { @Override public void actionPerformed(AnActionEvent e) { final DataContext context = e.getDataContext(); - perform(MavenActionUtil.getProjectsManager(context), MavenActionUtil.getMavenProjects(context), e); + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + if(projectsManager == null) return; + perform(projectsManager, MavenActionUtil.getMavenProjects(context), e); } - protected abstract void perform(MavenProjectsManager manager, List mavenProjects, AnActionEvent e); + protected abstract void perform(@NotNull MavenProjectsManager manager, List mavenProjects, AnActionEvent e); } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsManagerAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsManagerAction.java index 5626ef504af3..ee0a78f5c8e2 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsManagerAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsManagerAction.java @@ -28,7 +28,9 @@ public abstract class MavenProjectsManagerAction extends MavenAction { @Override protected boolean isAvailable(AnActionEvent e) { - return super.isAvailable(e) && MavenActionUtil.getProjectsManager(e.getDataContext()).isMavenizedProject(); + if(!super.isAvailable(e)) return false; + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext()); + return projectsManager != null && projectsManager.isMavenizedProject(); } protected abstract void perform(MavenProjectsManager manager); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenShowEffectivePom.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenShowEffectivePom.java index b938230f8a1d..f455377b3b38 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenShowEffectivePom.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenShowEffectivePom.java @@ -101,7 +101,7 @@ public class MavenShowEffectivePom extends AnAction implements DumbAware { } MavenProjectsManager manager = MavenActionUtil.getProjectsManager(dataContext); - + if(manager == null) return null; MavenProject mavenProject = manager.findProject(file); if (mavenProject == null) return null; @@ -111,6 +111,7 @@ public class MavenShowEffectivePom extends AnAction implements DumbAware { @Override public void actionPerformed(AnActionEvent event) { final Project project = MavenActionUtil.getProject(event.getDataContext()); + if(project == null) return; final VirtualFile file = findPomXml(event.getDataContext()); if (file == null) return; diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/OpenOrCreateSettingsXmlAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/OpenOrCreateSettingsXmlAction.java index fcd73f31ec7b..f0ef576721a5 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/OpenOrCreateSettingsXmlAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/OpenOrCreateSettingsXmlAction.java @@ -16,6 +16,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.MavenFileTemplateGroupFactory; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; @@ -25,7 +26,9 @@ import java.util.List; public class OpenOrCreateSettingsXmlAction extends MavenOpenOrCreateFilesAction { protected List getFiles(AnActionEvent e) { - File file = MavenActionUtil.getProjectsManager(e.getDataContext()).getGeneralSettings().getEffectiveUserSettingsIoFile(); + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext()); + if(projectsManager == null) return Collections.emptyList(); + File file = projectsManager.getGeneralSettings().getEffectiveUserSettingsIoFile(); return file != null ? Collections.singletonList(file) : Collections.emptyList(); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ReimportProjectAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ReimportProjectAction.java index fad26d7563d9..c40b8f815210 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ReimportProjectAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ReimportProjectAction.java @@ -16,13 +16,14 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.project.MavenProjectsManager; import java.util.List; public class ReimportProjectAction extends MavenProjectsAction { - protected void perform(MavenProjectsManager manager, List mavenProjects, AnActionEvent e) { + protected void perform(@NotNull MavenProjectsManager manager, List mavenProjects, AnActionEvent e) { manager.forceUpdateProjects(mavenProjects); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RemoveManagedFilesAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RemoveManagedFilesAction.java index 33889ee9d368..e3a417825f9d 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RemoveManagedFilesAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RemoveManagedFilesAction.java @@ -41,6 +41,7 @@ public class RemoveManagedFilesAction extends MavenAction { final DataContext context = e.getDataContext(); MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + if(projectsManager == null) return; List selectedFiles = MavenActionUtil.getMavenProjectsFiles(context); List removableFiles = new ArrayList(); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RunBuildAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RunBuildAction.java index 497f29b6a7a8..b84d79f51ceb 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RunBuildAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RunBuildAction.java @@ -17,10 +17,12 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.project.Project; import org.jetbrains.idea.maven.execution.MavenRunConfigurationType; import org.jetbrains.idea.maven.execution.MavenRunnerParameters; import org.jetbrains.idea.maven.model.MavenExplicitProfiles; import org.jetbrains.idea.maven.project.MavenProject; +import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.MavenDataKeys; import org.jetbrains.idea.maven.utils.actions.MavenAction; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; @@ -42,18 +44,22 @@ public class RunBuildAction extends MavenAction { final List goals = MavenDataKeys.MAVEN_GOALS.getData(context); if (goals == null || goals.isEmpty()) return false; - final MavenProject project = MavenActionUtil.getMavenProject(context); - if (project == null) return false; + final Project project = MavenActionUtil.getProject(context); + if(project == null) return false; + final MavenProject mavenProject = MavenActionUtil.getMavenProject(context); + if (mavenProject == null) return false; if (!perform) return true; - MavenExplicitProfiles explicitProfiles = MavenActionUtil.getProjectsManager(context).getExplicitProfiles(); + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + if(projectsManager == null) return false; + MavenExplicitProfiles explicitProfiles = projectsManager.getExplicitProfiles(); final MavenRunnerParameters params = new MavenRunnerParameters(true, - project.getDirectory(), + mavenProject.getDirectory(), goals, explicitProfiles.getEnabledProfiles(), explicitProfiles.getDisabledProfiles()); - MavenRunConfigurationType.runConfiguration(MavenActionUtil.getProject(context), params, null); + MavenRunConfigurationType.runConfiguration(project, params, null); return true; } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleIgnoredProjectsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleIgnoredProjectsAction.java index 42b61b235fcb..de238a67290c 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleIgnoredProjectsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleIgnoredProjectsAction.java @@ -18,6 +18,8 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.options.ShowSettingsUtil; +import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.project.MavenIgnoredFilesConfigurable; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.project.MavenProjectsManager; @@ -35,6 +37,7 @@ public class ToggleIgnoredProjectsAction extends MavenAction { final DataContext context = e.getDataContext(); MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + if(projectsManager == null) return; List projects = MavenActionUtil.getMavenProjects(context); if (isIgnoredInSettings(projectsManager, projects)) { @@ -54,6 +57,7 @@ public class ToggleIgnoredProjectsAction extends MavenAction { final DataContext context = e.getDataContext(); MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + if(projectsManager == null) return false; List projects = MavenActionUtil.getMavenProjects(context); if (projects == null || projects.isEmpty()) return false; @@ -74,11 +78,11 @@ public class ToggleIgnoredProjectsAction extends MavenAction { (ignoredStatesCount == 0 || ignoredStatesCount == projects.size()); } - private static boolean isIgnored(MavenProjectsManager projectsManager, List projects) { + private static boolean isIgnored(@NotNull MavenProjectsManager projectsManager, List projects) { return projectsManager.getIgnoredState(projects.get(0)); } - private static boolean isIgnoredInSettings(MavenProjectsManager projectsManager, List projects) { + private static boolean isIgnoredInSettings(@NotNull MavenProjectsManager projectsManager, List projects) { return projectsManager.isIgnored(projects.get(0)) && !isIgnored(projectsManager, projects); } @@ -86,11 +90,15 @@ public class ToggleIgnoredProjectsAction extends MavenAction { public void actionPerformed(AnActionEvent e) { final DataContext context = e.getDataContext(); MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + if(projectsManager == null) return; List projects = MavenActionUtil.getMavenProjects(context); + final Project project = MavenActionUtil.getProject(context); + if(project == null) return; + if (isIgnoredInSettings(projectsManager, projects)) { ShowSettingsUtil.getInstance() - .editConfigurable(MavenActionUtil.getProject(context), new MavenIgnoredFilesConfigurable(MavenActionUtil.getProject(context))); + .editConfigurable(project, new MavenIgnoredFilesConfigurable(project)); } else { projectsManager.setIgnoredState(projects, !isIgnored(projectsManager, projects)); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleOfflineAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleOfflineAction.java index 2f3411b730af..88837fcd6a57 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleOfflineAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleOfflineAction.java @@ -16,17 +16,22 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; import org.jetbrains.idea.maven.utils.actions.MavenToggleAction; public class ToggleOfflineAction extends MavenToggleAction { @Override protected boolean doIsSelected(AnActionEvent e) { - return MavenActionUtil.getProjectsManager(e.getDataContext()).getGeneralSettings().isWorkOffline(); + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext()); + return projectsManager != null && projectsManager.getGeneralSettings().isWorkOffline(); } @Override public void setSelected(AnActionEvent e, boolean state) { - MavenActionUtil.getProjectsManager(e.getDataContext()).getGeneralSettings().setWorkOffline(state); + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext()); + if (projectsManager != null) { + projectsManager.getGeneralSettings().setWorkOffline(state); + } } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleProfileAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleProfileAction.java index af0fbd091aad..bab3c4e38151 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleProfileAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleProfileAction.java @@ -16,6 +16,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.model.MavenExplicitProfiles; import org.jetbrains.idea.maven.model.MavenProfileKind; import org.jetbrains.idea.maven.project.MavenProjectsManager; @@ -61,10 +62,11 @@ public class ToggleProfileAction extends MavenAction { if (selectedProfiles == null || selectedProfiles.isEmpty()) return null; MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext()); + if(projectsManager == null) return null; return getTargetState(projectsManager, selectedProfiles); } - private static MavenProfileKind getTargetState(MavenProjectsManager projectsManager, Map profiles) { + private static MavenProfileKind getTargetState(@NotNull MavenProjectsManager projectsManager, Map profiles) { MavenExplicitProfiles explicitProfiles = projectsManager.getExplicitProfiles(); MavenProfileKind targetState = null; // all profiles should target to the same state @@ -108,6 +110,7 @@ public class ToggleProfileAction extends MavenAction { @Override public void actionPerformed(AnActionEvent e) { MavenProjectsManager manager = MavenActionUtil.getProjectsManager(e.getDataContext()); + if(manager == null) return; Map selectedProfiles = e.getData(MavenDataKeys.MAVEN_PROFILES); Set selectedProfileIds = selectedProfiles.keySet(); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleSkipTestsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleSkipTestsAction.java index f4a8edff5f04..8381e79ec9a2 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleSkipTestsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleSkipTestsAction.java @@ -16,6 +16,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.project.Project; import org.jetbrains.idea.maven.execution.MavenRunner; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; import org.jetbrains.idea.maven.utils.actions.MavenToggleAction; @@ -23,11 +24,15 @@ import org.jetbrains.idea.maven.utils.actions.MavenToggleAction; public class ToggleSkipTestsAction extends MavenToggleAction { @Override protected boolean doIsSelected(AnActionEvent e) { - return MavenRunner.getInstance(MavenActionUtil.getProject(e.getDataContext())).getState().isSkipTests(); + final Project project = MavenActionUtil.getProject(e.getDataContext()); + if(project == null) return false; + return MavenRunner.getInstance(project).getState().isSkipTests(); } @Override public void setSelected(AnActionEvent e, boolean state) { + final Project project = MavenActionUtil.getProject(e.getDataContext()); + if(project == null) return; MavenRunner.getInstance(MavenActionUtil.getProject(e.getDataContext())).getState().setSkipTests(state); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/UpdateFoldersForProjectAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/UpdateFoldersForProjectAction.java index 90030cbb74ee..1558d620f00f 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/UpdateFoldersForProjectAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/UpdateFoldersForProjectAction.java @@ -16,13 +16,14 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.project.MavenProjectsManager; import java.util.List; public class UpdateFoldersForProjectAction extends MavenProjectsAction { - protected void perform(MavenProjectsManager manager, List mavenProjects, AnActionEvent e) { + protected void perform(@NotNull MavenProjectsManager manager, List mavenProjects, AnActionEvent e) { manager.scheduleFoldersResolve(mavenProjects); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/MavenKeymapExtension.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/MavenKeymapExtension.java index 25db4aa482be..ae692464751e 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/MavenKeymapExtension.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/MavenKeymapExtension.java @@ -30,6 +30,7 @@ import org.jetbrains.idea.maven.model.MavenConstants; import org.jetbrains.idea.maven.model.MavenExplicitProfiles; import org.jetbrains.idea.maven.model.MavenPlugin; import org.jetbrains.idea.maven.project.MavenProject; +import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.MavenArtifactUtil; import org.jetbrains.idea.maven.utils.MavenPluginInfo; import org.jetbrains.idea.maven.utils.actions.MavenAction; @@ -177,13 +178,18 @@ public class MavenKeymapExtension implements KeymapExtension { public void actionPerformed(AnActionEvent e) { final DataContext context = e.getDataContext(); - MavenExplicitProfiles explicitProfiles = MavenActionUtil.getProjectsManager(context).getExplicitProfiles(); + final Project project = MavenActionUtil.getProject(context); + if (project == null) return; + + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + if(projectsManager == null) return; + MavenExplicitProfiles explicitProfiles = projectsManager.getExplicitProfiles(); MavenRunnerParameters params = new MavenRunnerParameters(true, myMavenProject.getDirectory(), Arrays.asList(myGoal), explicitProfiles.getEnabledProfiles(), explicitProfiles.getDisabledProfiles()); - MavenRunConfigurationType.runConfiguration(MavenActionUtil.getProject(context), params, null); + MavenRunConfigurationType.runConfiguration(project, params, null); } public MavenProject getMavenProject() { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/AssignShortcutAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/AssignShortcutAction.java index 4b34acede751..f7c3c00e8ba7 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/AssignShortcutAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/AssignShortcutAction.java @@ -18,8 +18,10 @@ package org.jetbrains.idea.maven.tasks.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.keymap.impl.ui.EditKeymapsDialog; +import com.intellij.openapi.project.Project; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.project.MavenProject; +import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.tasks.MavenShortcutsManager; import org.jetbrains.idea.maven.utils.MavenDataKeys; import org.jetbrains.idea.maven.utils.actions.MavenAction; @@ -37,7 +39,8 @@ public class AssignShortcutAction extends MavenAction { private static boolean isIgnoredProject(DataContext context) { final MavenProject project = MavenActionUtil.getMavenProject(context); if (project == null) return false; - return MavenActionUtil.getProjectsManager(context).isIgnored(project); + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + return projectsManager != null && projectsManager.isIgnored(project); } public void actionPerformed(AnActionEvent e) { @@ -60,11 +63,15 @@ public class AssignShortcutAction extends MavenAction { String goal = goals.get(0); - return getShortcutsManager(context).getActionId(project.getPath(), goal); + final MavenShortcutsManager shortcutsManager = getShortcutsManager(context); + return shortcutsManager != null ? shortcutsManager.getActionId(project.getPath(), goal) : null; } + @Nullable protected static MavenShortcutsManager getShortcutsManager(DataContext context) { - return MavenShortcutsManager.getInstance(MavenActionUtil.getProject(context)); + final Project project = MavenActionUtil.getProject(context); + if(project == null) return null; + return MavenShortcutsManager.getInstance(project); } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleBeforeRunTaskAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleBeforeRunTaskAction.java index 26dea4fc2634..cb8ccdb80ac0 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleBeforeRunTaskAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleBeforeRunTaskAction.java @@ -18,6 +18,7 @@ package org.jetbrains.idea.maven.tasks.actions; import com.intellij.execution.RunManagerEx; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.project.MavenProject; @@ -40,7 +41,9 @@ public class ToggleBeforeRunTaskAction extends MavenToggleAction { final DataContext context = e.getDataContext(); final Pair desc = getTaskDesc(context); if (desc != null) { - for (MavenBeforeRunTask each : getRunManager(context).getBeforeRunTasks(MavenBeforeRunTasksProvider.ID)) { + final RunManagerEx runManager = getRunManager(context); + if(runManager == null) return false; + for (MavenBeforeRunTask each : runManager.getBeforeRunTasks(MavenBeforeRunTasksProvider.ID)) { if (each.isFor(desc.first, desc.second)) return true; } } @@ -68,7 +71,10 @@ public class ToggleBeforeRunTaskAction extends MavenToggleAction { return Pair.create(mavenProject, goals.get(0)); } + @Nullable private static RunManagerEx getRunManager(DataContext context) { - return RunManagerEx.getInstanceEx(MavenActionUtil.getProject(context)); + final Project project = MavenActionUtil.getProject(context); + if(project == null) return null; + return RunManagerEx.getInstanceEx(project); } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleCompilerTasksAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleCompilerTasksAction.java index 06c6260e75c0..4089266d0245 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleCompilerTasksAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleCompilerTasksAction.java @@ -17,6 +17,8 @@ package org.jetbrains.idea.maven.tasks.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.tasks.MavenCompilerTask; import org.jetbrains.idea.maven.tasks.MavenTasksManager; @@ -50,12 +52,14 @@ public abstract class ToggleCompilerTasksAction extends MavenToggleAction { @Override public void setSelected(AnActionEvent e, boolean state) { final DataContext context = e.getDataContext(); + final MavenTasksManager tasksManager = getTasksManager(context); List tasks = getTasks(context); + if(tasksManager == null) return; if (state) { - addTasks(getTasksManager(context), tasks); + addTasks(tasksManager, tasks); } else { - removeTasks(getTasksManager(context), tasks); + removeTasks(tasksManager, tasks); } } @@ -73,7 +77,8 @@ public abstract class ToggleCompilerTasksAction extends MavenToggleAction { return result; } - protected boolean hasTask(MavenTasksManager manager, MavenCompilerTask task) { + protected boolean hasTask(@Nullable MavenTasksManager manager, MavenCompilerTask task) { + if(manager == null) return false; return manager.isCompileTaskOfPhase(task, myPhase); } @@ -85,7 +90,10 @@ public abstract class ToggleCompilerTasksAction extends MavenToggleAction { manager.removeCompileTasks(tasks, myPhase); } + @Nullable private static MavenTasksManager getTasksManager(DataContext context) { - return MavenTasksManager.getInstance(MavenActionUtil.getProject(context)); + final Project project = MavenActionUtil.getProject(context); + if(project == null) return null; + return MavenTasksManager.getInstance(project); } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/actions/MavenActionUtil.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/actions/MavenActionUtil.java index dc624d88df28..34cddb63a30c 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/actions/MavenActionUtil.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/actions/MavenActionUtil.java @@ -41,7 +41,7 @@ public class MavenActionUtil { return CommonDataKeys.PROJECT.getData(context) != null; } - @NotNull + @Nullable public static Project getProject(DataContext context) { return CommonDataKeys.PROJECT.getData(context); } @@ -55,6 +55,7 @@ public class MavenActionUtil { public static MavenProject getMavenProject(DataContext context) { MavenProject result; final MavenProjectsManager manager = getProjectsManager(context); + if(manager == null) return null; final VirtualFile file = CommonDataKeys.VIRTUAL_FILE.getData(context); if (file != null) { @@ -77,9 +78,11 @@ public class MavenActionUtil { return module != null ? module : DataKeys.MODULE_CONTEXT.getData(context); } - @NotNull + @Nullable public static MavenProjectsManager getProjectsManager(DataContext context) { - return MavenProjectsManager.getInstance(getProject(context)); + final Project project = getProject(context); + if(project == null) return null; + return MavenProjectsManager.getInstance(project); } public static boolean isMavenProjectFile(VirtualFile file) { diff --git a/python/helpers/pydev/pydevd.py b/python/helpers/pydev/pydevd.py index dfac7691dc79..5f40a93e668a 100644 --- a/python/helpers/pydev/pydevd.py +++ b/python/helpers/pydev/pydevd.py @@ -1858,7 +1858,7 @@ def _locked_settrace( #Suspend as the last thing after all tracing is in place. if suspend: - debugger.setSuspend(t, CMD_SET_BREAK) + debugger.setSuspend(t, CMD_THREAD_SUSPEND) PyDBCommandThread(debugger).start() PyDBCheckAliveThread(debugger).start() @@ -1884,7 +1884,7 @@ def _locked_settrace( if suspend: - debugger.setSuspend(t, CMD_SET_BREAK) + debugger.setSuspend(t, CMD_THREAD_SUSPEND) def stoptrace(): diff --git a/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java b/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java index eda8fb305626..7dc0148899ec 100644 --- a/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java @@ -27,7 +27,6 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.QualifiedName; import com.intellij.util.containers.ContainerUtil; -import com.jetbrains.python.PyNames; import com.jetbrains.python.codeInsight.controlflow.ControlFlowCache; import com.jetbrains.python.codeInsight.dataflow.scope.Scope; import com.jetbrains.python.inspections.quickfix.PyRenameElementQuickFix; @@ -126,7 +125,7 @@ public class PyPep8NamingInspection extends PyInspection { public boolean value(PyClass ancestor) { final PsiFile ancestorsModule = ancestor.getContainingFile(); final Sdk sdk = PyBuiltinCache.findSdkForFile(ancestorsModule); - if (PythonSdkType.isStdLib(ancestorsModule.getVirtualFile(), sdk) && !PyUtil.isObjectClass(cls)) { + if (PythonSdkType.isStdLib(ancestorsModule.getVirtualFile(), sdk) && !PyUtil.isObjectClass(ancestor)) { return true; } return false;