diff --git a/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationInspection.java b/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationInspection.java index e6f03d4b0136..5ff1af1018b8 100644 --- a/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationInspection.java @@ -38,9 +38,7 @@ import com.intellij.codeInspection.ui.EntryPointsNode; import com.intellij.codeInspection.ui.InspectionNode; import com.intellij.codeInspection.ui.InspectionTreeNode; import com.intellij.codeInspection.util.RefFilter; -import com.intellij.ide.DataManager; import com.intellij.lang.annotation.HighlightSeverity; -import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; @@ -49,7 +47,6 @@ import com.intellij.openapi.extensions.ExtensionPoint; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; -import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.util.*; import com.intellij.psi.*; import com.intellij.psi.impl.PsiClassImplUtil; @@ -203,15 +200,7 @@ public class UnusedDeclarationInspection extends FilteringInspectionTool { gc.gridy++; add(myNonJavaCheckbox, gc); - final JButton configureAnnotations = new JButton("Configure annotations"); - configureAnnotations.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - Project project = PlatformDataKeys.PROJECT.getData(DataManager.getInstance().getDataContext(OptionsPanel.this)); - if (project == null) project = ProjectManager.getInstance().getDefaultProject(); - EntryPointsManagerImpl.getInstance(project).configureAnnotations(); - } - }); + final JButton configureAnnotations = EntryPointsManagerImpl.createConfigureAnnotationsBtn(this); gc.fill = GridBagConstraints.NONE; gc.gridy++; @@ -446,8 +435,7 @@ public class UnusedDeclarationInspection extends FilteringInspectionTool { if (RefUtil.isImplicitUsage(element)) return true; if (element instanceof PsiModifierListOwner) { final EntryPointsManagerImpl entryPointsManager = EntryPointsManagerImpl.getInstance(element.getProject()); - if (AnnotationUtil.isAnnotated((PsiModifierListOwner)element, entryPointsManager.ADDITIONAL_ANNOTATIONS) || - AnnotationUtil.isAnnotated((PsiModifierListOwner)element, entryPointsManager.getAdditionalAnnotations())) { + if (entryPointsManager.isEntryPoint((PsiModifierListOwner)element)) { return true; } } diff --git a/java/java-impl/src/com/intellij/codeInspection/ex/EntryPointsManagerImpl.java b/java/java-impl/src/com/intellij/codeInspection/ex/EntryPointsManagerImpl.java index d9ae487120db..c1d316ff0914 100644 --- a/java/java-impl/src/com/intellij/codeInspection/ex/EntryPointsManagerImpl.java +++ b/java/java-impl/src/com/intellij/codeInspection/ex/EntryPointsManagerImpl.java @@ -25,8 +25,11 @@ package com.intellij.codeInspection.ex; import com.intellij.ExtensionPoints; +import com.intellij.codeInsight.AnnotationUtil; import com.intellij.codeInspection.reference.*; import com.intellij.codeInspection.util.SpecialAnnotationsUtil; +import com.intellij.ide.DataManager; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.PersistentStateComponent; import com.intellij.openapi.components.ServiceManager; @@ -37,10 +40,12 @@ import com.intellij.openapi.extensions.ExtensionPointListener; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.extensions.PluginDescriptor; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.util.*; import com.intellij.profile.codeInspection.InspectionProfileManager; import com.intellij.psi.PsiManager; +import com.intellij.psi.PsiModifierListOwner; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.UIUtil; import org.jdom.Element; @@ -49,6 +54,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.*; @State( @@ -360,6 +367,19 @@ public class EntryPointsManagerImpl implements PersistentStateComponent }.show(); } + public static JButton createConfigureAnnotationsBtn(final JComponent parent) { + final JButton configureAnnotations = new JButton("Configure annotations..."); + configureAnnotations.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + Project project = PlatformDataKeys.PROJECT.getData(DataManager.getInstance().getDataContext(parent)); + if (project == null) project = ProjectManager.getInstance().getDefaultProject(); + EntryPointsManagerImpl.getInstance(project).configureAnnotations(); + } + }); + return configureAnnotations; + } + public void addAllPersistentEntries(EntryPointsManagerImpl manager) { myPersistentEntryPoints.putAll(manager.myPersistentEntryPoints); } @@ -411,4 +431,9 @@ public class EntryPointsManagerImpl implements PersistentStateComponent public void setAddNonJavaEntries(final boolean addNonJavaEntries) { myAddNonJavaEntries = addNonJavaEntries; } + + public boolean isEntryPoint(PsiModifierListOwner element) { + return AnnotationUtil.isAnnotated(element, ADDITIONAL_ANNOTATIONS) || + AnnotationUtil.isAnnotated(element, getAdditionalAnnotations()); + } } diff --git a/java/java-impl/src/com/intellij/codeInspection/unusedParameters/UnusedParametersInspection.java b/java/java-impl/src/com/intellij/codeInspection/unusedParameters/UnusedParametersInspection.java index ed608257a9fc..d61aa226a3f5 100644 --- a/java/java-impl/src/com/intellij/codeInspection/unusedParameters/UnusedParametersInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/unusedParameters/UnusedParametersInspection.java @@ -28,6 +28,7 @@ import com.intellij.analysis.AnalysisScope; import com.intellij.codeInsight.CodeInsightUtilBase; import com.intellij.codeInsight.daemon.GroupNames; import com.intellij.codeInspection.*; +import com.intellij.codeInspection.ex.EntryPointsManagerImpl; import com.intellij.codeInspection.reference.*; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; @@ -45,6 +46,8 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import javax.swing.*; +import java.awt.*; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -71,6 +74,7 @@ public class UnusedParametersInspection extends GlobalJavaInspectionTool { if ((refMethod.isAbstract() || refMethod.getOwnerClass().isInterface()) && refMethod.getDerivedMethods().isEmpty()) return null; if (RefUtil.isEntryPoint(refMethod)) return null; + if (EntryPointsManagerImpl.getInstance(manager.getProject()).isEntryPoint(refMethod.getElement())) return null; if (refMethod.isAppMain()) return null; @@ -215,6 +219,18 @@ public class UnusedParametersInspection extends GlobalJavaInspectionTool { return SHORT_NAME; } + @Override + public JComponent createOptionsPanel() { + final JPanel panel = new JPanel(new GridBagLayout()); + final GridBagConstraints gc = + new GridBagConstraints(GridBagConstraints.RELATIVE, 0, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, + new Insets(5, 0, 0, 0), 0, 0); + panel.add(EntryPointsManagerImpl.createConfigureAnnotationsBtn(panel), gc); + gc.weightx = 1; + gc.fill = GridBagConstraints.HORIZONTAL; + panel.add(Box.createHorizontalBox(), gc); + return panel; + } private static class AcceptSuggested implements LocalQuickFix { private final RefManager myManager; diff --git a/java/java-impl/src/com/intellij/codeInspection/unusedSymbol/OptionsPanel.form b/java/java-impl/src/com/intellij/codeInspection/unusedSymbol/OptionsPanel.form index 85ad51f4ba1c..5800c27a6bd2 100644 --- a/java/java-impl/src/com/intellij/codeInspection/unusedSymbol/OptionsPanel.form +++ b/java/java-impl/src/com/intellij/codeInspection/unusedSymbol/OptionsPanel.form @@ -46,7 +46,7 @@ - + diff --git a/java/java-impl/src/com/intellij/codeInspection/unusedSymbol/UnusedSymbolLocalInspection.java b/java/java-impl/src/com/intellij/codeInspection/unusedSymbol/UnusedSymbolLocalInspection.java index 4ede61a08dbc..4db4e778770b 100644 --- a/java/java-impl/src/com/intellij/codeInspection/unusedSymbol/UnusedSymbolLocalInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/unusedSymbol/UnusedSymbolLocalInspection.java @@ -16,7 +16,6 @@ package com.intellij.codeInspection.unusedSymbol; -import com.intellij.codeInsight.AnnotationUtil; import com.intellij.codeInsight.daemon.GroupNames; import com.intellij.codeInsight.daemon.QuickFixBundle; import com.intellij.codeInsight.daemon.impl.HighlightInfoType; @@ -25,10 +24,7 @@ import com.intellij.codeInspection.BaseJavaLocalInspectionTool; import com.intellij.codeInspection.ex.EntryPointsManagerImpl; import com.intellij.codeInspection.ex.UnfairLocalInspectionTool; import com.intellij.codeInspection.util.SpecialAnnotationsUtil; -import com.intellij.ide.DataManager; -import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; -import com.intellij.openapi.project.ProjectManager; import com.intellij.psi.PsiModifierListOwner; import org.intellij.lang.annotations.Pattern; import org.jetbrains.annotations.NonNls; @@ -128,17 +124,13 @@ public class UnusedSymbolLocalInspection extends BaseJavaLocalInspectionTool imp myCheckClassesCheckBox.addActionListener(listener); myCheckParametersCheckBox.addActionListener(listener); myReportUnusedParametersInPublics.addActionListener(listener); - - final JButton configureAnnotations = new JButton("Configure annotations"); - configureAnnotations.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - Project project = PlatformDataKeys.PROJECT.getData(DataManager.getInstance().getDataContext(myPanel)); - if (project == null) project = ProjectManager.getInstance().getDefaultProject(); - EntryPointsManagerImpl.getInstance(project).configureAnnotations(); - } - }); - myAnnos.add(configureAnnotations, BorderLayout.NORTH); + final GridBagConstraints gc = + new GridBagConstraints(GridBagConstraints.RELATIVE, 0, 1, 1, 0, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, + new Insets(0, 0, 0, 0), 0, 0); + myAnnos.add(EntryPointsManagerImpl.createConfigureAnnotationsBtn(myPanel), gc); + gc.weightx = 1; + gc.fill = GridBagConstraints.HORIZONTAL; + myAnnos.add(Box.createHorizontalBox(), gc); } public JComponent getPanel() { @@ -160,8 +152,6 @@ public class UnusedSymbolLocalInspection extends BaseJavaLocalInspectionTool imp } public static boolean isInjected(final PsiModifierListOwner modifierListOwner) { - final EntryPointsManagerImpl entryPointsManager = EntryPointsManagerImpl.getInstance(modifierListOwner.getProject()); - return AnnotationUtil.isAnnotated(modifierListOwner, entryPointsManager.ADDITIONAL_ANNOTATIONS) || - AnnotationUtil.isAnnotated(modifierListOwner, entryPointsManager.getAdditionalAnnotations()); + return EntryPointsManagerImpl.getInstance(modifierListOwner.getProject()).isEntryPoint(modifierListOwner); } }