package org.infernus.idea.checkstyle;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleServiceManager;
import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.ConfigurationException;
import org.infernus.idea.checkstyle.ui.CheckStyleModuleConfigPanel;
import org.infernus.idea.checkstyle.util.IDEAUtilities;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
public class CheckStyleModuleConfigurable implements Configurable {
private final Module module;
public CheckStyleModuleConfigurable(@NotNull final Module module) {
this.module = module;
}
private CheckStyleModuleConfigPanel configPanel;
public String getDisplayName() {
return IDEAUtilities.getResource("plugin.configuration-name", "CheckStyle Plugin");
}
public String getHelpTopic() {
return null;
}
public JComponent createComponent() {
if (configPanel == null) {
configPanel = new CheckStyleModuleConfigPanel();
}
reset();
return configPanel;
}
public boolean isModified() {
return configPanel != null && configPanel.isModified();
}
public void apply() throws ConfigurationException {
if (configPanel == null) {
return;
}
final CheckStyleModuleConfiguration configuration = getConfiguration();
configuration.setActiveConfiguration(configPanel.getActiveLocation());
configuration.setExcluded(configPanel.isExcluded());
reset();
}
private CheckStyleModuleConfiguration getConfiguration() {
return ModuleServiceManager.getService(module, CheckStyleModuleConfiguration.class);
}
public void reset() {
if (configPanel == null) {
return;
}
final CheckStyleModuleConfiguration configuration = getConfiguration();
configPanel.setConfigurationLocations(configuration.getConfigurationLocations());
if (configuration.isExcluded()) {
configPanel.setExcluded(true);
} else if (configuration.isUsingModuleConfiguration()) {
configPanel.setActiveLocation(configuration.getActiveConfiguration());
} else {
configPanel.setActiveLocation(null);
}
}
public void disposeUIResources() {
configPanel = null;
}
}