package com.seventh7.mybatis.setting; import com.google.common.base.Joiner; import com.google.common.base.Splitter; import com.google.common.collect.Sets; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.SearchableConfigurable; import com.seventh7.mybatis.generate.GenerateModel; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.Nullable; import javax.swing.*; import static com.seventh7.mybatis.generate.StatementGenerator.DELETE_GENERATOR; import static com.seventh7.mybatis.generate.StatementGenerator.INSERT_GENERATOR; import static com.seventh7.mybatis.generate.StatementGenerator.SELECT_GENERATOR; import static com.seventh7.mybatis.generate.StatementGenerator.UPDATE_GENERATOR; /** * @author yanglin */ public class MybatisConfigurable implements SearchableConfigurable { private MybatisSetting mybatisSetting; private MybatisSettingForm mybatisSettingForm; private String separator = ";"; private Splitter splitter = Splitter.on(separator).omitEmptyStrings().trimResults(); private Joiner joiner = Joiner.on(separator); public MybatisConfigurable() { mybatisSetting = MybatisSetting.getInstance(); } @Override public String getId() { return "Mybatis"; } @Override public Runnable enableSearch(String option) { return null; } @Nls @Override public String getDisplayName() { return getId(); } @Nullable @Override public String getHelpTopic() { return getId(); } @Nullable @Override public JComponent createComponent() { if (null == mybatisSettingForm) { this.mybatisSettingForm = new MybatisSettingForm(); } return mybatisSettingForm.mainPanel; } @Override public boolean isModified() { return mybatisSetting.getStatementGenerateModel().getIdentifier() != mybatisSettingForm.modelComboBox.getSelectedIndex() || !joiner.join(INSERT_GENERATOR.getPatterns()).equals(mybatisSettingForm.insertPatternTextField.getText()) || !joiner.join(DELETE_GENERATOR.getPatterns()).equals(mybatisSettingForm.deletePatternTextField.getText()) || !joiner.join(UPDATE_GENERATOR.getPatterns()).equals(mybatisSettingForm.updatePatternTextField.getText()) || !joiner.join(SELECT_GENERATOR.getPatterns()).equals(mybatisSettingForm.selectPatternTextField.getText()); } @Override public void apply() throws ConfigurationException { mybatisSetting.setStatementGenerateModel(GenerateModel.getInstance(mybatisSettingForm.modelComboBox.getSelectedIndex())); INSERT_GENERATOR.setPatterns(Sets.newHashSet(splitter.split(mybatisSettingForm.insertPatternTextField.getText()))); DELETE_GENERATOR.setPatterns(Sets.newHashSet(splitter.split(mybatisSettingForm.deletePatternTextField.getText()))); UPDATE_GENERATOR.setPatterns(Sets.newHashSet(splitter.split(mybatisSettingForm.updatePatternTextField.getText()))); SELECT_GENERATOR.setPatterns(Sets.newHashSet(splitter.split(mybatisSettingForm.selectPatternTextField.getText()))); } @Override public void reset() { mybatisSettingForm.modelComboBox.setSelectedIndex(mybatisSetting.getStatementGenerateModel().getIdentifier()); mybatisSettingForm.insertPatternTextField.setText(joiner.join(INSERT_GENERATOR.getPatterns())); mybatisSettingForm.deletePatternTextField.setText(joiner.join(DELETE_GENERATOR.getPatterns())); mybatisSettingForm.updatePatternTextField.setText(joiner.join(UPDATE_GENERATOR.getPatterns())); mybatisSettingForm.selectPatternTextField.setText(joiner.join(SELECT_GENERATOR.getPatterns())); } @Override public void disposeUIResources() { mybatisSettingForm.mainPanel = null; } }