ErrorOptionsProvider extension reworked to create new instance each time when Settings dialog is opened

This commit is contained in:
nik
2010-09-02 10:50:32 +04:00
parent 995188f58c
commit ef91f020cf
5 changed files with 38 additions and 10 deletions
@@ -17,11 +17,13 @@
package com.intellij.application.options.editor;
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzerSettings;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.options.AbstractConfigurableEP;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.profile.codeInspection.ui.ErrorOptionsProvider;
import com.intellij.profile.codeInspection.ui.ErrorOptionsProviderEP;
import javax.swing.*;
import java.util.List;
public class ErrorHighlightingPanel {
private JTextField myAutoreparseDelayField;
@@ -30,9 +32,11 @@ public class ErrorHighlightingPanel {
private JPanel myPanel;
private JPanel myErrorsPanel;
private JCheckBox myNextErrorGoesToErrorsFirst;
private final List<ErrorOptionsProvider> myExtensions;
public ErrorHighlightingPanel() {
for (ErrorOptionsProvider optionsProvider : Extensions.getExtensions(ErrorOptionsProvider.EP_NAME)) {
myExtensions = AbstractConfigurableEP.createConfigurables(ErrorOptionsProviderEP.EP_NAME);
for (ErrorOptionsProvider optionsProvider : myExtensions) {
myErrorsPanel.add(optionsProvider.createComponent());
}
}
@@ -44,7 +48,7 @@ public class ErrorHighlightingPanel {
myMarkMinHeight.setText(Integer.toString(settings.ERROR_STRIPE_MARK_MIN_HEIGHT));
myNextErrorGoesToErrorsFirst.setSelected(settings.NEXT_ERROR_ACTION_GOES_TO_ERRORS_FIRST);
for (ErrorOptionsProvider optionsProvider : Extensions.getExtensions(ErrorOptionsProvider.EP_NAME)) {
for (ErrorOptionsProvider optionsProvider : myExtensions) {
optionsProvider.reset();
}
}
@@ -59,7 +63,7 @@ public class ErrorHighlightingPanel {
settings.NEXT_ERROR_ACTION_GOES_TO_ERRORS_FIRST = myNextErrorGoesToErrorsFirst.isSelected();
for (ErrorOptionsProvider optionsProvider : Extensions.getExtensions(ErrorOptionsProvider.EP_NAME)) {
for (ErrorOptionsProvider optionsProvider : myExtensions) {
optionsProvider.apply();
}
}
@@ -78,7 +82,7 @@ public class ErrorHighlightingPanel {
isModified |= getErrorStripeMarkMinHeight() != settings.ERROR_STRIPE_MARK_MIN_HEIGHT;
isModified |= myNextErrorGoesToErrorsFirst.isSelected() != settings.NEXT_ERROR_ACTION_GOES_TO_ERRORS_FIRST;
for (ErrorOptionsProvider optionsProvider : Extensions.getExtensions(ErrorOptionsProvider.EP_NAME)) {
for (ErrorOptionsProvider optionsProvider : myExtensions) {
isModified |= optionsProvider.isModified();
}
if (isModified) return true;
@@ -87,7 +91,7 @@ public class ErrorHighlightingPanel {
public void disposeUIResources() {
for (ErrorOptionsProvider optionsProvider : Extensions.getExtensions(ErrorOptionsProvider.EP_NAME)) {
for (ErrorOptionsProvider optionsProvider : myExtensions) {
optionsProvider.disposeUIResources();
}
}
@@ -20,9 +20,7 @@
*/
package com.intellij.profile.codeInspection.ui;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.options.UnnamedConfigurable;
public interface ErrorOptionsProvider extends UnnamedConfigurable {
ExtensionPointName<ErrorOptionsProvider> EP_NAME = ExtensionPointName.create("com.intellij.errorOptionsProvider");
}
@@ -0,0 +1,26 @@
/*
* Copyright 2000-2010 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.profile.codeInspection.ui;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.options.AbstractConfigurableEP;
/**
* @author nik
*/
public class ErrorOptionsProviderEP extends AbstractConfigurableEP<ErrorOptionsProvider> {
public static final ExtensionPointName<ErrorOptionsProviderEP> EP_NAME = ExtensionPointName.create("com.intellij.errorOptionsProvider");
}
@@ -1,5 +1,5 @@
<extensionPoints>
<extensionPoint name="errorOptionsProvider" interface="com.intellij.profile.codeInspection.ui.ErrorOptionsProvider"/>
<extensionPoint name="errorOptionsProvider" beanClass="com.intellij.profile.codeInspection.ui.ErrorOptionsProviderEP"/>
<extensionPoint name="codeFoldingOptionsProvider" beanClass="com.intellij.application.options.editor.CodeFoldingOptionsProviderEP"/>
<extensionPoint name="autoImportOptionsProvider" beanClass="com.intellij.application.options.editor.AutoImportOptionsProviderEP"/>
<extensionPoint name="moduleService" beanClass="com.intellij.openapi.components.ServiceDescriptor"/>
+1 -1
View File
@@ -186,7 +186,7 @@
<overrideImplementsAnnotationsHandler implementation="com.intellij.codeInsight.generation.OverrideImplementsAnnotationsHandlerImpl"/>
<applicationService serviceInterface="com.intellij.openapi.module.ModuleTypeManager"
serviceImplementation="com.intellij.openapi.module.impl.JavaAwareModuleTypeManagerImpl"/>
<errorOptionsProvider implementation="com.intellij.profile.codeInspection.ui.JavaErrorOptionsProvider"/>
<errorOptionsProvider instance="com.intellij.profile.codeInspection.ui.JavaErrorOptionsProvider"/>
<autoImportOptionsProvider instance="com.intellij.application.options.editor.JavaAutoImportOptions"/>
<codeFoldingOptionsProvider instance="com.intellij.application.options.editor.JavaCodeFoldingOptionsProvider"/>