package name.admitriev.jhelper.ui; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.LabeledComponent; import name.admitriev.jhelper.components.Configurator; import org.jdesktop.swingx.VerticalLayout; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; public class ConfigurationDialog extends DialogWrapper { private final JComponent component; private JTextField author; private FileSelector tasksDirectory; private FileSelector outputFile; private FileSelector runFile; private JCheckBox codeEliminationOn; private JCheckBox codeReformattingOn; public ConfigurationDialog(@NotNull Project project, Configurator.State configuration) { super(project); setTitle("JHelper configuration for " + project.getName()); author = new JTextField(configuration.getAuthor()); tasksDirectory = new FileSelector( project, configuration.getTasksDirectory(), RelativeFileChooserDescriptor.directoryChooser(project.getBaseDir()) ); outputFile = new FileSelector( project, configuration.getOutputFile(), RelativeFileChooserDescriptor.fileChooser(project.getBaseDir()) ); runFile = new FileSelector( project, configuration.getRunFile(), RelativeFileChooserDescriptor.fileChooser(project.getBaseDir()) ); codeEliminationOn = new JCheckBox("Eliminate code?", configuration.isCodeEliminationOn()); codeReformattingOn = new JCheckBox("Reformat code?", configuration.isCodeReformattingOn()); JPanel panel = new JPanel(new VerticalLayout()); panel.add(LabeledComponent.create(author, "Author")); panel.add(LabeledComponent.create(tasksDirectory, "Tasks directory")); panel.add(LabeledComponent.create(outputFile, "Output file")); panel.add(LabeledComponent.create(runFile, "Run File")); panel.add(codeEliminationOn); panel.add(codeReformattingOn); component = panel; init(); } @Nullable @Override protected JComponent createCenterPanel() { return component; } public Configurator.State getConfiguration() { return new Configurator.State( author.getText(), tasksDirectory.getText(), outputFile.getText(), runFile.getText(), codeEliminationOn.isSelected(), codeReformattingOn.isSelected() ); } }