package zielu.gittoolbox.ui.config;
import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.options.SearchableConfigurable;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import zielu.gittoolbox.GitToolBoxConfigForProject;
import zielu.gittoolbox.ResBundle;
public class GtProjectConfigurable extends GtConfigurableBase<GtPrjForm, GitToolBoxConfigForProject> implements SearchableConfigurable {
private final Project myProject;
public GtProjectConfigurable(@NotNull Project project) {
myProject = project;
}
@Nls
@Override
public String getDisplayName() {
return ResBundle.getString("configurable.prj.displayName");
}
@Nullable
@Override
public String getHelpTopic() {
return null;
}
@Override
protected GtPrjForm createForm() {
return new GtPrjForm();
}
@Override
protected GitToolBoxConfigForProject getConfig() {
return GitToolBoxConfigForProject.getInstance(myProject);
}
@Override
protected void setFormState(GtPrjForm form, GitToolBoxConfigForProject config) {
form.setAutoFetchEnabled(config.autoFetch);
form.setAutoFetchInterval(config.autoFetchIntervalMinutes);
}
@Override
protected boolean checkModified(GtPrjForm form, GitToolBoxConfigForProject config) {
boolean modified = config.isAutoFetchChanged(form.getAutoFetchEnabled());
modified = modified || config.isAutoFetchIntervalMinutesChanged(form.getAutoFetchInterval());
return modified;
}
@Override
protected void doApply(GtPrjForm form, GitToolBoxConfigForProject config) throws ConfigurationException {
config.autoFetch = form.getAutoFetchEnabled();
config.autoFetchIntervalMinutes = form.getAutoFetchInterval();
config.fireChanged(myProject);
}
@NotNull
@Override
public String getId() {
return "zielu.svntoolbox.prj.config";
}
@Nullable
@Override
public Runnable enableSearch(String option) {
return null;
}
}