'optimize imports on the fly' moved to Settings|editor|auto import

This commit is contained in:
Alexey Kudravtsev
2009-11-02 14:12:12 +03:00
parent 44118f2f36
commit 770d01f6ef
10 changed files with 41 additions and 36 deletions
@@ -40,8 +40,6 @@ public class CodeStyleImportsPanel extends JPanel {
private JCheckBox myCbUseFQClassNamesInJavaDoc;
private JCheckBox myCbUseSingleClassImports;
private JCheckBox myCbInsertInnerClassImports;
private JCheckBox myCbOptimizeImportsOnTheFly;
private JCheckBox myCbAddUnambiguousImportsOnTheFly;
private JTextField myClassCountField;
private JTextField myNamesCountField;
private final PackageEntryTable myImportLayoutList = new PackageEntryTable();
@@ -129,12 +127,6 @@ public class CodeStyleImportsPanel extends JPanel {
myCbUseFQClassNamesInJavaDoc = new JCheckBox(ApplicationBundle.message("checkbox.use.fully.qualified.class.names.in.javadoc"));
group.add(myCbUseFQClassNamesInJavaDoc);
myCbOptimizeImportsOnTheFly = new JCheckBox(ApplicationBundle.message("checkbox.optimize.imports.on.the.fly"));
group.add(myCbOptimizeImportsOnTheFly);
myCbAddUnambiguousImportsOnTheFly = new JCheckBox(ApplicationBundle.message("checkbox.add.unambiguous.imports.on.the.fly"));
group.add(myCbAddUnambiguousImportsOnTheFly);
myClassCountField = new JTextField(3);
myNamesCountField = new JTextField(3);
final JPanel panel = new JPanel(new GridBagLayout());
@@ -590,8 +582,6 @@ public class CodeStyleImportsPanel extends JPanel {
myCbInsertInnerClassImports.setSelected(mySettings.INSERT_INNER_CLASS_IMPORTS);
myClassCountField.setText(Integer.toString(mySettings.CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND));
myNamesCountField.setText(Integer.toString(mySettings.NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND));
myCbAddUnambiguousImportsOnTheFly.setSelected(mySettings.ADD_UNAMBIGIOUS_IMPORTS_ON_THE_FLY);
myCbOptimizeImportsOnTheFly.setSelected(mySettings.OPTIMIZE_IMPORTS_ON_THE_FLY);
myImportLayoutList.copyFrom(mySettings.IMPORT_LAYOUT_TABLE);
myPackageList.copyFrom(mySettings.PACKAGES_TO_USE_IMPORT_ON_DEMAND);
@@ -628,8 +618,6 @@ public class CodeStyleImportsPanel extends JPanel {
mySettings.USE_FQ_CLASS_NAMES_IN_JAVADOC = myCbUseFQClassNamesInJavaDoc.isSelected();
mySettings.USE_SINGLE_CLASS_IMPORTS = myCbUseSingleClassImports.isSelected();
mySettings.INSERT_INNER_CLASS_IMPORTS = myCbInsertInnerClassImports.isSelected();
mySettings.OPTIMIZE_IMPORTS_ON_THE_FLY = myCbOptimizeImportsOnTheFly.isSelected();
mySettings.ADD_UNAMBIGIOUS_IMPORTS_ON_THE_FLY = myCbAddUnambiguousImportsOnTheFly.isSelected();
try{
mySettings.CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND = Integer.parseInt(myClassCountField.getText());
}
@@ -665,8 +653,6 @@ public class CodeStyleImportsPanel extends JPanel {
isModified |= isModified(myCbUseFQClassNamesInJavaDoc, mySettings.USE_FQ_CLASS_NAMES_IN_JAVADOC);
isModified |= isModified(myCbUseSingleClassImports, mySettings.USE_SINGLE_CLASS_IMPORTS);
isModified |= isModified(myCbInsertInnerClassImports, mySettings.INSERT_INNER_CLASS_IMPORTS);
isModified |= isModified(myCbOptimizeImportsOnTheFly, mySettings.OPTIMIZE_IMPORTS_ON_THE_FLY);
isModified |= isModified(myCbAddUnambiguousImportsOnTheFly, mySettings.ADD_UNAMBIGIOUS_IMPORTS_ON_THE_FLY);
isModified |= isModified(myClassCountField, mySettings.CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND);
isModified |= isModified(myNamesCountField, mySettings.NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND);
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.intellij.application.options.editor.JavaAutoImportOptions">
<grid id="27dc6" binding="myWholePanel" layout-manager="GridLayoutManager" row-count="4" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<grid id="27dc6" binding="myWholePanel" layout-manager="GridLayoutManager" row-count="6" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<xy x="20" y="20" width="310" height="260"/>
<xy x="20" y="20" width="445" height="411"/>
</constraints>
<properties/>
<border type="etched" title="Java">
@@ -18,6 +18,14 @@
<text resource-bundle="messages/ApplicationBundle" key="checkbox.show.import.popup"/>
</properties>
</component>
<component id="9fc7d" class="javax.swing.JCheckBox" binding="myCbAddUnambiguousImports">
<constraints>
<grid row="3" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text resource-bundle="messages/ApplicationBundle" key="checkbox.add.unambiguous.imports.on.the.fly"/>
</properties>
</component>
<grid id="2ef17" layout-manager="GridLayoutManager" row-count="1" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="5" bottom="0" right="0"/>
<constraints>
@@ -51,7 +59,7 @@
<grid id="e67c2" layout-manager="GridLayoutManager" row-count="3" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="3" column="0" row-span="1" col-span="2" vsize-policy="7" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
<grid row="5" column="0" row-span="1" col-span="2" vsize-policy="7" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
@@ -93,19 +101,22 @@
</vspacer>
</children>
</grid>
<hspacer id="22474">
<constraints>
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
</hspacer>
<component id="64f08" class="com.intellij.ui.TitledSeparator">
<constraints>
<grid row="2" column="0" row-span="1" col-span="2" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
<grid row="4" column="0" row-span="1" col-span="2" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text resource-bundle="messages/ApplicationBundle" key="exclude.from.completion.group"/>
</properties>
</component>
<component id="28ca2" class="javax.swing.JCheckBox" binding="myCbOptimizeImports">
<constraints>
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text resource-bundle="messages/ApplicationBundle" key="checkbox.optimize.imports.on.the.fly"/>
</properties>
</component>
</children>
</grid>
</form>
@@ -47,6 +47,8 @@ public class JavaAutoImportOptions implements AutoImportOptionsProvider {
private JList myExcludePackagesList;
private JButton myAddPackageButton;
private JButton myRemoveButton;
private JCheckBox myCbAddUnambiguousImports;
private JCheckBox myCbOptimizeImports;
private DefaultListModel myExcludePackagesModel;
@NonNls private static final Pattern ourPackagePattern = Pattern.compile("(\\w+\\.)*\\w+");
@@ -117,6 +119,8 @@ public class JavaAutoImportOptions implements AutoImportOptionsProvider {
myCbShowImportPopup.setSelected(daemonSettings.isImportHintEnabled());
myCbOptimizeImports.setSelected(codeInsightSettings.OPTIMIZE_IMPORTS_ON_THE_FLY);
myCbAddUnambiguousImports.setSelected(codeInsightSettings.ADD_UNAMBIGIOUS_IMPORTS_ON_THE_FLY);
myExcludePackagesModel = new DefaultListModel();
for(String aPackage: codeInsightSettings.EXCLUDED_PACKAGES) {
@@ -136,6 +140,8 @@ public class JavaAutoImportOptions implements AutoImportOptionsProvider {
codeInsightSettings.ADD_IMPORTS_ON_PASTE = getSmartPasteValue();
codeInsightSettings.EXCLUDED_PACKAGES = getExcludedPackages();
daemonSettings.setImportHintEnabled(myCbShowImportPopup.isSelected());
codeInsightSettings.OPTIMIZE_IMPORTS_ON_THE_FLY = myCbOptimizeImports.isSelected();
codeInsightSettings.ADD_UNAMBIGIOUS_IMPORTS_ON_THE_FLY = myCbAddUnambiguousImports.isSelected();
}
private String[] getExcludedPackages() {
@@ -156,7 +162,9 @@ public class JavaAutoImportOptions implements AutoImportOptionsProvider {
DaemonCodeAnalyzerSettings daemonSettings = DaemonCodeAnalyzerSettings.getInstance();
boolean isModified = isModified(myCbShowImportPopup, daemonSettings.isImportHintEnabled());
isModified |= isModified(myCbOptimizeImports, codeInsightSettings.OPTIMIZE_IMPORTS_ON_THE_FLY);
isModified |= isModified(myCbAddUnambiguousImports, codeInsightSettings.ADD_UNAMBIGIOUS_IMPORTS_ON_THE_FLY);
isModified |= getSmartPasteValue() != codeInsightSettings.ADD_IMPORTS_ON_PASTE;
isModified |= !Arrays.deepEquals(getExcludedPackages(), codeInsightSettings.EXCLUDED_PACKAGES);
@@ -52,7 +52,6 @@ import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.profile.codeInspection.InspectionProjectProfileManager;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.impl.PsiClassImplUtil;
import com.intellij.psi.impl.PsiManagerEx;
@@ -641,7 +640,7 @@ public class PostHighlightingPass extends TextEditorHighlightingPass {
}
private boolean timeToOptimizeImports() {
if (!CodeStyleSettingsManager.getSettings(myProject).OPTIMIZE_IMPORTS_ON_THE_FLY) return false;
if (!com.intellij.codeInsight.CodeInsightSettings.getInstance().OPTIMIZE_IMPORTS_ON_THE_FLY) return false;
DaemonCodeAnalyzerImpl codeAnalyzer = (DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(myProject);
PsiFile file = PsiDocumentManager.getInstance(myProject).getPsiFile(myDocument);
@@ -38,7 +38,6 @@ import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiReference;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.statistics.JavaStatisticsManager;
import com.intellij.psi.statistics.StatisticsManager;
import com.intellij.psi.util.proximity.PsiProximityComparator;
@@ -212,7 +211,7 @@ public class AddImportAction implements PriorityQuestionAction {
try{
bindReference(ref, targetClass);
if (CodeStyleSettingsManager.getSettings(myProject).OPTIMIZE_IMPORTS_ON_THE_FLY) {
if (com.intellij.codeInsight.CodeInsightSettings.getInstance().OPTIMIZE_IMPORTS_ON_THE_FLY) {
Document document = myEditor.getDocument();
PsiFile psiFile = PsiDocumentManager.getInstance(myProject).getPsiFile(document);
new OptimizeImportsProcessor(myProject, psiFile).runWithoutProgress();
@@ -15,6 +15,7 @@
*/
package com.intellij.codeInsight.daemon.impl.quickfix;
import com.intellij.codeInsight.CodeInsightSettings;
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer;
import com.intellij.codeInsight.daemon.QuickFixBundle;
import com.intellij.codeInsight.intention.IntentionAction;
@@ -22,7 +23,6 @@ import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiJavaFile;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import org.jetbrains.annotations.NotNull;
public class EnableOptimizeImportsOnTheFlyFix implements IntentionAction{
@@ -39,12 +39,12 @@ public class EnableOptimizeImportsOnTheFlyFix implements IntentionAction{
public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) {
return file.getManager().isInProject(file)
&& file instanceof PsiJavaFile
&& !CodeStyleSettingsManager.getSettings(project).OPTIMIZE_IMPORTS_ON_THE_FLY
&& !com.intellij.codeInsight.CodeInsightSettings.getInstance().OPTIMIZE_IMPORTS_ON_THE_FLY
;
}
public void invoke(@NotNull Project project, Editor editor, PsiFile file) {
CodeStyleSettingsManager.getSettings(project).OPTIMIZE_IMPORTS_ON_THE_FLY = true;
CodeInsightSettings.getInstance().OPTIMIZE_IMPORTS_ON_THE_FLY = true;
DaemonCodeAnalyzer.getInstance(project).restart();
}
@@ -28,7 +28,6 @@ import com.intellij.codeInsight.hint.QuestionAction;
import com.intellij.codeInsight.hint.HintManager;
import com.intellij.codeInspection.HintAction;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.search.PsiShortNamesCache;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.openapi.project.Project;
@@ -131,7 +130,7 @@ public abstract class ImportClassFixBase<T extends PsiElement & PsiReference> im
DaemonCodeAnalyzerImpl codeAnalyzer = (DaemonCodeAnalyzerImpl)DaemonCodeAnalyzer.getInstance(project);
if (classes.length == 1
&& CodeStyleSettingsManager.getSettings(project).ADD_UNAMBIGIOUS_IMPORTS_ON_THE_FLY
&& com.intellij.codeInsight.CodeInsightSettings.getInstance().ADD_UNAMBIGIOUS_IMPORTS_ON_THE_FLY
&& (allowCaretNearRef || !isCaretNearRef(editor, myRef))
&& !JspPsiUtil.isInJspFile(psiFile)
&& codeAnalyzer.canChangeFileSilently(psiFile)
@@ -136,7 +136,7 @@ public class CodeStyleSettings implements Cloneable, JDOMExternalizable {
public void copyFrom(CodeStyleSettings from) {
copyPublicFields(from, this);
this.copyCustomSettingsFrom(from);
copyCustomSettingsFrom(from);
}
private static void copyPublicFields(Object from, Object to) {
@@ -747,8 +747,6 @@ public class CodeStyleSettings implements Cloneable, JDOMExternalizable {
public int NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND = 3;
public final PackageEntryTable PACKAGES_TO_USE_IMPORT_ON_DEMAND = new PackageEntryTable();
public final PackageEntryTable IMPORT_LAYOUT_TABLE = new PackageEntryTable();
public boolean OPTIMIZE_IMPORTS_ON_THE_FLY = false;
public boolean ADD_UNAMBIGIOUS_IMPORTS_ON_THE_FLY = false;
//----------------- ORDER OF MEMBERS ------------------
@@ -124,6 +124,9 @@ public class CodeInsightSettings implements PersistentStateComponent<Element>, C
public boolean HIGHLIGHT_IDENTIFIER_UNDER_CARET = false;
public boolean OPTIMIZE_IMPORTS_ON_THE_FLY = false;
public boolean ADD_UNAMBIGIOUS_IMPORTS_ON_THE_FLY = false;
@Property(surroundWithTag = false)
@AbstractCollection(
surroundWithTag = false,
@@ -105,6 +105,7 @@ public class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzer implements JDOMEx
private final PassExecutorService myPassExecutorService;
private static final Key<List<HighlightInfo>> HIGHLIGHTS_TO_REMOVE_KEY = Key.create("HIGHLIGHTS_TO_REMOVE");
public DaemonCodeAnalyzerImpl(Project project, DaemonCodeAnalyzerSettings daemonCodeAnalyzerSettings, EditorTracker editorTracker) {
myProject = project;
@@ -615,4 +616,5 @@ public class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzer implements JDOMEx
public static List<HighlightInfo> getFileLevelHighlights(Project project,PsiFile file ) {
return UpdateHighlightersUtil.getFileLeveleHighlights(project, file);
}
}