package org.jetbrains.plugins.clojure.debugger.filters;
import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.ConfigurationException;
import org.jetbrains.annotations.Nls;
import org.jetbrains.plugins.clojure.ClojureBundle;
import org.jetbrains.plugins.clojure.ClojureIcons;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author ilyas
*/
public class ClojureDebuggerSettingsConfigurable implements Configurable {
private JCheckBox myIgnoreClojureMethods;
private JPanel myPanel;
private boolean isModified = false;
private final ClojureDebuggerSettings mySettings;
public ClojureDebuggerSettingsConfigurable(final ClojureDebuggerSettings settings) {
mySettings = settings;
final Boolean flag = settings.DEBUG_DISABLE_SPECIFIC_CLOJURE_METHODS;
myIgnoreClojureMethods.setSelected(flag == null || flag);
myIgnoreClojureMethods.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
isModified = mySettings.DEBUG_DISABLE_SPECIFIC_CLOJURE_METHODS != myIgnoreClojureMethods.isSelected();
}
});
}
@Nls
public String getDisplayName() {
return ClojureBundle.message("settings.clojure.debug.caption");
}
public Icon getIcon() {
return ClojureIcons.CLOJURE_ICON_16x16;
}
public String getHelpTopic() {
return null;
}
public JComponent createComponent() {
return myPanel;
}
public boolean isModified() {
return isModified;
}
public void apply() throws ConfigurationException {
if (isModified) {
mySettings.DEBUG_DISABLE_SPECIFIC_CLOJURE_METHODS = myIgnoreClojureMethods.isSelected();
}
isModified = false;
}
public void reset() {
final Boolean flag = mySettings.DEBUG_DISABLE_SPECIFIC_CLOJURE_METHODS;
myIgnoreClojureMethods.setSelected(flag == null || flag);
}
public void disposeUIResources() {
}}