diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/AdditionalMavenImportingSettings.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/AdditionalMavenImportingSettings.java new file mode 100644 index 000000000000..a9bb3f9ddbc6 --- /dev/null +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/AdditionalMavenImportingSettings.java @@ -0,0 +1,13 @@ +package org.jetbrains.idea.maven.project; + +import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.openapi.options.UnnamedConfigurable; +import com.intellij.openapi.project.Project; + +public interface AdditionalMavenImportingSettings { + + ExtensionPointName EP_NAME = + ExtensionPointName.create("org.jetbrains.idea.maven.additional.importing.settings"); + + UnnamedConfigurable createConfigurable(Project project); +} diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingConfigurable.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingConfigurable.java index f31a4f0b19f1..d237d20b257c 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingConfigurable.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingConfigurable.java @@ -17,38 +17,70 @@ package org.jetbrains.idea.maven.project; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.SearchableConfigurable; +import com.intellij.openapi.options.UnnamedConfigurable; +import com.intellij.openapi.project.Project; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import java.util.ArrayList; +import java.util.List; public class MavenImportingConfigurable implements SearchableConfigurable { private final MavenImportingSettings myImportingSettings; private final MavenImportingSettingsForm mySettingsForm = new MavenImportingSettingsForm(false); + private final List myAdditionalConfigurables; - public MavenImportingConfigurable(MavenImportingSettings importingSettings) { + public MavenImportingConfigurable(Project project, MavenImportingSettings importingSettings) { myImportingSettings = importingSettings; + + myAdditionalConfigurables = new ArrayList(); + for (final AdditionalMavenImportingSettings additionalSettings : AdditionalMavenImportingSettings.EP_NAME.getExtensions()) { + myAdditionalConfigurables.add(additionalSettings.createConfigurable(project)); + } } public JComponent createComponent() { + final JPanel panel = mySettingsForm.getAdditionalSettingsPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + for (final UnnamedConfigurable additionalConfigurable : myAdditionalConfigurables) { + panel.add(additionalConfigurable.createComponent()); + } return mySettingsForm.createComponent(); } public void disposeUIResources() { + for (final UnnamedConfigurable additionalConfigurable : myAdditionalConfigurables) { + additionalConfigurable.disposeUIResources(); + } } public boolean isModified() { + for (final UnnamedConfigurable additionalConfigurable : myAdditionalConfigurables) { + if (additionalConfigurable.isModified()) { + return true; + } + } + return mySettingsForm.isModified(myImportingSettings); } public void apply() throws ConfigurationException { mySettingsForm.getData(myImportingSettings); + + for (final UnnamedConfigurable additionalConfigurable : myAdditionalConfigurables) { + additionalConfigurable.apply(); + } } public void reset() { mySettingsForm.setData(myImportingSettings); + + for (final UnnamedConfigurable additionalConfigurable : myAdditionalConfigurables) { + additionalConfigurable.reset(); + } } @Nls diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.form b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.form index e06e35a38d19..d00ad63de073 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.form +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.form @@ -1,6 +1,6 @@
- + @@ -10,7 +10,7 @@ - + @@ -165,9 +165,19 @@ + + + + + + + + + + diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.java index 4178aca2c998..b22fbe179706 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenImportingSettingsForm.java @@ -46,6 +46,8 @@ public class MavenImportingSettingsForm { private JCheckBox myDownloadSourcesCheckBox; private JCheckBox myDownloadDocsCheckBox; + private JPanel myAdditionalSettingsPanel; + public MavenImportingSettingsForm(boolean isImportStep) { if (!isImportStep) { mySearchRecursivelyCheckBox.setVisible(false); @@ -136,4 +138,8 @@ public class MavenImportingSettingsForm { public void updateData(WizardContext wizardContext) { myProjectFormatPanel.updateData(wizardContext); } + + public JPanel getAdditionalSettingsPanel() { + return myAdditionalSettingsPanel; + } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenSettings.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenSettings.java index f9b3479d70fb..bd2e48699545 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenSettings.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenSettings.java @@ -47,7 +47,7 @@ public class MavenSettings implements SearchableConfigurable.Parent { }; myChildren = new ArrayList(); - myChildren.add(new MavenImportingConfigurable(MavenProjectsManager.getInstance(myProject).getImportingSettings())); + myChildren.add(new MavenImportingConfigurable(myProject, MavenProjectsManager.getInstance(myProject).getImportingSettings())); myChildren.add(new MavenIgnoredFilesConfigurable(MavenProjectsManager.getInstance(myProject))); myChildren.add(new MavenRunnerConfigurable(myProject, false) { diff --git a/plugins/maven/src/main/resources/META-INF/plugin.xml b/plugins/maven/src/main/resources/META-INF/plugin.xml index fc51b0b761e6..b1ada2e25ba8 100644 --- a/plugins/maven/src/main/resources/META-INF/plugin.xml +++ b/plugins/maven/src/main/resources/META-INF/plugin.xml @@ -7,6 +7,7 @@ + diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenSettingsTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenSettingsTest.java index 8427614bab1e..b735c3043853 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenSettingsTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenSettingsTest.java @@ -66,7 +66,7 @@ public class MavenSettingsTest extends MavenTestCase { public void testImportingSettings() throws Exception { assertTrue(new MavenImportingSettings().equals(new MavenImportingSettings())); - MavenImportingConfigurable importingConfigurable = new MavenImportingConfigurable(new MavenImportingSettings()); + MavenImportingConfigurable importingConfigurable = new MavenImportingConfigurable(myProject, new MavenImportingSettings()); importingConfigurable.reset(); assertFalse(importingConfigurable.isModified()); }