VCS: option to turn off background checks for "changed on server"
[fedora-idea.git] / platform / vcs-impl / src / com / intellij / openapi / vcs / configurable / VcsBackgroundOperationsConfigurationPanel.java
blobd791cb36510266870d7bc9e649473c915c1d5ad0
1 package com.intellij.openapi.vcs.configurable;
3 import com.intellij.openapi.options.Configurable;
4 import com.intellij.openapi.options.ConfigurationException;
5 import com.intellij.openapi.project.Project;
6 import com.intellij.openapi.vcs.VcsConfiguration;
7 import com.intellij.openapi.vcs.VcsShowOptionsSettingImpl;
8 import com.intellij.openapi.vcs.changes.RemoteRevisionsCache;
9 import org.jetbrains.annotations.Nls;
11 import javax.swing.*;
12 import java.util.LinkedHashMap;
13 import java.util.Map;
15 public class VcsBackgroundOperationsConfigurationPanel implements Configurable {
17 private JPanel myPanel;
19 private final Project myProject;
20 Map<VcsShowOptionsSettingImpl, JCheckBox> myPromptOptions = new LinkedHashMap<VcsShowOptionsSettingImpl, JCheckBox>();
21 private JCheckBox myCbUpdateInBackground;
22 private JCheckBox myCbCommitInBackground;
23 private JCheckBox myCbEditInBackground;
24 private JCheckBox myCbAddRemoveInBackground;
25 private JCheckBox myCbCheckoutInBackground;
26 private JCheckBox myPerformRevertInBackgroundCheckBox;
27 private JCheckBox myTrackChangedOnServer;
29 public VcsBackgroundOperationsConfigurationPanel(final Project project) {
31 myProject = project;
35 public void apply() throws ConfigurationException {
37 VcsConfiguration settings = VcsConfiguration.getInstance(myProject);
39 settings.PERFORM_COMMIT_IN_BACKGROUND = myCbCommitInBackground.isSelected();
40 settings.PERFORM_UPDATE_IN_BACKGROUND = myCbUpdateInBackground.isSelected();
41 settings.PERFORM_CHECKOUT_IN_BACKGROUND = myCbCheckoutInBackground.isSelected();
42 settings.PERFORM_EDIT_IN_BACKGROUND = myCbEditInBackground.isSelected();
43 settings.PERFORM_ADD_REMOVE_IN_BACKGROUND = myCbAddRemoveInBackground.isSelected();
44 settings.PERFORM_ROLLBACK_IN_BACKGROUND = myPerformRevertInBackgroundCheckBox.isSelected();
45 if ((! settings.CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND) && myTrackChangedOnServer.isSelected()) {
46 RemoteRevisionsCache.getInstance(myProject).startRefreshInBackground();
48 settings.CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND = myTrackChangedOnServer.isSelected();
50 for (VcsShowOptionsSettingImpl setting : myPromptOptions.keySet()) {
51 setting.setValue(myPromptOptions.get(setting).isSelected());
56 public boolean isModified() {
58 VcsConfiguration settings = VcsConfiguration.getInstance(myProject);
59 if (settings.PERFORM_COMMIT_IN_BACKGROUND != myCbCommitInBackground.isSelected()) {
60 return true;
63 if (settings.PERFORM_UPDATE_IN_BACKGROUND != myCbUpdateInBackground.isSelected()) {
64 return true;
67 if (settings.PERFORM_CHECKOUT_IN_BACKGROUND != myCbCheckoutInBackground.isSelected()) {
68 return true;
71 if (settings.PERFORM_EDIT_IN_BACKGROUND != myCbEditInBackground.isSelected()) {
72 return true;
74 if (settings.PERFORM_ADD_REMOVE_IN_BACKGROUND != myCbAddRemoveInBackground.isSelected()) {
75 return true;
77 if (settings.PERFORM_ROLLBACK_IN_BACKGROUND != myPerformRevertInBackgroundCheckBox.isSelected()) {
78 return true;
80 if (settings.CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND != myTrackChangedOnServer.isSelected()) {
81 return true;
84 return false;
87 public void reset() {
88 VcsConfiguration settings = VcsConfiguration.getInstance(myProject);
89 myCbCommitInBackground.setSelected(settings.PERFORM_COMMIT_IN_BACKGROUND);
90 myCbUpdateInBackground.setSelected(settings.PERFORM_UPDATE_IN_BACKGROUND);
91 myCbCheckoutInBackground.setSelected(settings.PERFORM_CHECKOUT_IN_BACKGROUND);
92 myCbEditInBackground.setSelected(settings.PERFORM_EDIT_IN_BACKGROUND);
93 myCbAddRemoveInBackground.setSelected(settings.PERFORM_ADD_REMOVE_IN_BACKGROUND);
94 myPerformRevertInBackgroundCheckBox.setSelected(settings.PERFORM_ROLLBACK_IN_BACKGROUND);
95 myTrackChangedOnServer.setSelected(settings.CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND);
96 for (VcsShowOptionsSettingImpl setting : myPromptOptions.keySet()) {
97 myPromptOptions.get(setting).setSelected(setting.getValue());
101 public JComponent getPanel() {
102 return myPanel;
105 @Nls
106 public String getDisplayName() {
107 return "Background";
110 public Icon getIcon() {
111 return null;
114 public String getHelpTopic() {
115 return "project.propVCSSupport.Background";
118 public JComponent createComponent() {
119 return getPanel();
122 public void disposeUIResources() {