package zielu.gittoolbox.ui.config; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.SearchableConfigurable; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import zielu.gittoolbox.GitToolBoxConfig; import zielu.gittoolbox.ResBundle; public class GtConfigurable extends GtConfigurableBase<GtForm, GitToolBoxConfig> implements SearchableConfigurable { @Nls @Override public String getDisplayName() { return ResBundle.getString("configurable.app.displayName"); } @Nullable @Override public String getHelpTopic() { return null; } @Override protected GtForm createForm() { return new GtForm(); } @Override protected GitToolBoxConfig getConfig() { return GitToolBoxConfig.getInstance(); } @Override protected void setFormState(GtForm form, GitToolBoxConfig config) { form.setPresenter(config.getPresenter()); form.setShowGitStatus(config.showStatusWidget); form.setShowProjectViewStatus(config.showProjectViewStatus); form.setShowProjectViewLocationPath(config.showProjectViewLocationPath); form.setShowProjectViewStatusBeforeLocation(config.showProjectViewStatusBeforeLocation); form.setBehindTrackerEnabled(config.behindTracker); form.setProjectViewStatusColorEnabled(config.projectViewStatusCustomColor); form.setProjectViewStatusColor(config.getProjectViewStatusColor()); form.setProjectViewStatusBold(config.projectViewStatusBold); form.setProjectViewStatusItalic(config.projectViewStatusItalic); form.afterStateSet(); } @Override protected boolean checkModified(GtForm form, GitToolBoxConfig config) { boolean modified = config.isPresenterChanged(form.getPresenter()); modified = modified || config.isShowStatusWidgetChanged(form.getShowGitStatus()); modified = modified || config.isShowProjectViewStatusChanged(form.getShowProjectViewStatus()); modified = modified || config.isShowProjectViewLocationPathChanged(form.getShowProjectViewLocationPath()); modified = modified || config.isShowProjectViewStatusBeforeLocationChanged(form.getShowProjectViewStatusBeforeLocation()); modified = modified || config.isBehindTrackerChanged(form.getBehindTrackerEnabled()); modified = modified || config.isProjectViewStatusColorChanged(form.getProjectViewStatusColor()); modified = modified || config.isProjectViewStatusCustomColorChanged(form.getProjectViewStatusColorEnabled()); modified = modified || config.isProjectViewStatusBoldChanged(form.getProjectViewStatusBold()); modified = modified || config.isProjectViewStatusItalicChanged(form.getProjectViewStatusItalic()); return modified; } @Override protected void doApply(GtForm form, GitToolBoxConfig config) throws ConfigurationException { config.setPresenter(form.getPresenter()); config.showStatusWidget = form.getShowGitStatus(); config.showProjectViewStatus = form.getShowProjectViewStatus(); config.showProjectViewLocationPath = form.getShowProjectViewLocationPath(); config.showProjectViewStatusBeforeLocation = form.getShowProjectViewStatusBeforeLocation(); config.behindTracker = form.getBehindTrackerEnabled(); config.projectViewStatusCustomColor = form.getProjectViewStatusColorEnabled(); config.setProjectViewStatusColor(form.getProjectViewStatusColor()); config.projectViewStatusBold = form.getProjectViewStatusBold(); config.projectViewStatusItalic = form.getProjectViewStatusItalic(); config.fireChanged(); } @NotNull @Override public String getId() { return "zielu.gittoolbox.app.config"; } @Nullable @Override public Runnable enableSearch(String option) { return null; } }