package sk.sorien.pimpleplugin.ui;
import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import sk.sorien.pimpleplugin.Configuration;
import sk.sorien.pimpleplugin.ProjectComponent;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
/**
* @author Stanislav Turza
*/
public class ConfigurationForm implements Configurable {
private JCheckBox pluginEnabled;
private JPanel basePanel;
private JButton containerDumpSearchButton;
private JTextField containerDumpFileName;
private final Configuration configuration;
private Project project;
public ConfigurationForm(@NotNull final Project project) {
configuration = Configuration.getInstance(project);
this.project = project;
containerDumpSearchButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("Pimple Definition File", "json"));
fileChooser.setCurrentDirectory(new File(project.getBasePath()));
int returnValue = fileChooser.showOpenDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
containerDumpFileName.setText(fileChooser.getSelectedFile().getAbsolutePath());
}
}
});
}
@Nls
@Override
public String getDisplayName() {
return "Silex Plugin";
}
@Nullable
@Override
public String getHelpTopic() {
return null;
}
@Nullable
@Override
public JComponent createComponent() {
return basePanel;
}
@Override
public boolean isModified() {
return pluginEnabled.isSelected() != configuration.pluginEnabled || !containerDumpFileName.getText().equals(configuration.containerDefinitionFileName);
}
@Override
public void apply() throws ConfigurationException {
configuration.pluginEnabled = pluginEnabled.isSelected();
configuration.containerDefinitionFileName = containerDumpFileName.getText();
ProjectComponent.configChanged(this.project);
}
@Override
public void reset() {
pluginEnabled.setSelected(configuration.pluginEnabled);
containerDumpFileName.setText(configuration.containerDefinitionFileName);
}
@Override
public void disposeUIResources() {
}
}