2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com
.intellij
.openapi
.roots
.ui
.configuration
;
18 import com
.intellij
.openapi
.module
.Module
;
19 import com
.intellij
.openapi
.module
.ModuleComponent
;
20 import com
.intellij
.openapi
.module
.ModuleConfigurationEditor
;
21 import com
.intellij
.openapi
.options
.Configurable
;
22 import com
.intellij
.openapi
.options
.ConfigurationException
;
23 import com
.intellij
.openapi
.extensions
.ExtensionPointName
;
24 import com
.intellij
.openapi
.extensions
.Extensions
;
27 import java
.util
.ArrayList
;
29 public class ModuleLevelConfigurablesEditorProvider
implements ModuleConfigurationEditorProvider
, ModuleComponent
{
30 public static final ExtensionPointName
<Configurable
> MODULE_CONFIGURABLES
= ExtensionPointName
.create("com.intellij.moduleConfigurable");
32 private final Module myModule
;
34 public ModuleLevelConfigurablesEditorProvider(Module module
) {
38 public ModuleConfigurationEditor
[] createEditors(ModuleConfigurationState state
) {
39 ArrayList
<ModuleConfigurationEditor
> result
= new ArrayList
<ModuleConfigurationEditor
>();
40 Configurable
[] moduleConfigurables
= myModule
.getComponents(Configurable
.class);
41 for (final Configurable moduleConfigurable
: moduleConfigurables
) {
42 result
.add(new ConfigurableWrapper(moduleConfigurable
));
44 for(Configurable configurable
: Extensions
.getExtensions(MODULE_CONFIGURABLES
, myModule
)) {
45 result
.add(new ConfigurableWrapper(configurable
));
48 return result
.toArray(new ModuleConfigurationEditor
[result
.size()]);
51 public void projectOpened() {
54 public void projectClosed() {
57 public void moduleAdded() {
60 public String
getComponentName() {
61 return "ModuleLevelConfigurablesEditorProvider";
64 public void initComponent() { }
66 public void disposeComponent() {
69 private static class ConfigurableWrapper
implements ModuleConfigurationEditor
{
70 private final Configurable myModuleConfigurable
;
72 public ConfigurableWrapper(Configurable moduleConfigurable
) {
73 myModuleConfigurable
= moduleConfigurable
;
76 public void saveData() {
80 public void moduleStateChanged() {
83 public String
getDisplayName() {
84 return myModuleConfigurable
.getDisplayName();
87 public Icon
getIcon() {
88 return myModuleConfigurable
.getIcon();
91 public String
getHelpTopic() {
92 return myModuleConfigurable
.getHelpTopic();
95 public JComponent
createComponent() {
96 return myModuleConfigurable
.createComponent();
99 public boolean isModified() {
100 return myModuleConfigurable
.isModified();
103 public void apply() throws ConfigurationException
{
104 myModuleConfigurable
.apply();
107 public void reset() {
108 myModuleConfigurable
.reset();
111 public void disposeUIResources() {
112 myModuleConfigurable
.disposeUIResources();