fix Configurables test, sorry
[fedora-idea.git] / platform / vcs-impl / src / com / intellij / openapi / vcs / configurable / VcsBackgroundOperationsConfigurationPanel.java
blobb3831f573cef3d3cc56cfde0a9c6d518c94f7384
1 /*
2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com.intellij.openapi.vcs.configurable;
18 import com.intellij.openapi.options.Configurable;
19 import com.intellij.openapi.options.ConfigurationException;
20 import com.intellij.openapi.project.Project;
21 import com.intellij.openapi.vcs.VcsConfiguration;
22 import com.intellij.openapi.vcs.VcsShowOptionsSettingImpl;
23 import com.intellij.openapi.vcs.changes.RemoteRevisionsCache;
24 import com.intellij.openapi.vcs.changes.committed.CacheSettingsPanel;
25 import org.jetbrains.annotations.Nls;
27 import javax.swing.*;
28 import java.awt.event.ActionEvent;
29 import java.awt.event.ActionListener;
30 import java.util.LinkedHashMap;
31 import java.util.Map;
33 public class VcsBackgroundOperationsConfigurationPanel implements Configurable {
35 private JPanel myPanel;
37 private final Project myProject;
38 Map<VcsShowOptionsSettingImpl, JCheckBox> myPromptOptions = new LinkedHashMap<VcsShowOptionsSettingImpl, JCheckBox>();
39 private JCheckBox myCbUpdateInBackground;
40 private JCheckBox myCbCommitInBackground;
41 private JCheckBox myCbEditInBackground;
42 private JCheckBox myCbAddRemoveInBackground;
43 private JCheckBox myCbCheckoutInBackground;
44 private JCheckBox myPerformRevertInBackgroundCheckBox;
45 private JCheckBox myTrackChangedOnServer;
46 private JCheckBox myEnableBackgroundProcesses;
47 private JComponent myCachePanel;
48 private JSpinner myChangedOnServerInterval;
49 private JPanel myBackgroundProcesses;
50 private JPanel myCachedCommittedChanges;
51 private CacheSettingsPanel myCacheSettingsPanel;
53 public VcsBackgroundOperationsConfigurationPanel(final Project project) {
54 myProject = project;
56 if (! myProject.isDefault()) {
57 myEnableBackgroundProcesses.addActionListener(new ActionListener() {
58 public void actionPerformed(ActionEvent e) {
59 final boolean backgroundEnabled = myEnableBackgroundProcesses.isSelected();
60 if (! backgroundEnabled) {
61 myCacheSettingsPanel.setEnableCaching(false);
62 myTrackChangedOnServer.setSelected(false);
64 myTrackChangedOnServer.setEnabled(backgroundEnabled);
65 myCacheSettingsPanel.setEnabled(backgroundEnabled);
67 });
68 myCacheSettingsPanel.initPanel(project);
69 myChangedOnServerInterval.setModel(new SpinnerNumberModel(5, 5, 48 * 10 * 60, 5));
71 myBackgroundProcesses.setVisible(! myProject.isDefault());
74 public void apply() throws ConfigurationException {
76 VcsConfiguration settings = VcsConfiguration.getInstance(myProject);
78 settings.PERFORM_COMMIT_IN_BACKGROUND = myCbCommitInBackground.isSelected();
79 settings.PERFORM_UPDATE_IN_BACKGROUND = myCbUpdateInBackground.isSelected();
80 settings.PERFORM_CHECKOUT_IN_BACKGROUND = myCbCheckoutInBackground.isSelected();
81 settings.PERFORM_EDIT_IN_BACKGROUND = myCbEditInBackground.isSelected();
82 settings.PERFORM_ADD_REMOVE_IN_BACKGROUND = myCbAddRemoveInBackground.isSelected();
83 settings.PERFORM_ROLLBACK_IN_BACKGROUND = myPerformRevertInBackgroundCheckBox.isSelected();
85 if (! myProject.isDefault()) {
86 if ((! settings.CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND) && myTrackChangedOnServer.isSelected()) {
87 RemoteRevisionsCache.getInstance(myProject).startRefreshInBackground();
89 settings.CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND = myTrackChangedOnServer.isSelected();
90 settings.CHANGED_ON_SERVER_INTERVAL = ((Number) myChangedOnServerInterval.getValue()).intValue();
91 settings.ENABLE_BACKGROUND_PROCESSES = myEnableBackgroundProcesses.isSelected();
93 myCacheSettingsPanel.apply();
96 for (VcsShowOptionsSettingImpl setting : myPromptOptions.keySet()) {
97 setting.setValue(myPromptOptions.get(setting).isSelected());
101 public boolean isModified() {
103 VcsConfiguration settings = VcsConfiguration.getInstance(myProject);
104 if (settings.PERFORM_COMMIT_IN_BACKGROUND != myCbCommitInBackground.isSelected()) {
105 return true;
108 if (settings.PERFORM_UPDATE_IN_BACKGROUND != myCbUpdateInBackground.isSelected()) {
109 return true;
112 if (settings.PERFORM_CHECKOUT_IN_BACKGROUND != myCbCheckoutInBackground.isSelected()) {
113 return true;
116 if (settings.PERFORM_EDIT_IN_BACKGROUND != myCbEditInBackground.isSelected()) {
117 return true;
119 if (settings.PERFORM_ADD_REMOVE_IN_BACKGROUND != myCbAddRemoveInBackground.isSelected()) {
120 return true;
122 if (settings.PERFORM_ROLLBACK_IN_BACKGROUND != myPerformRevertInBackgroundCheckBox.isSelected()) {
123 return true;
126 if (! myProject.isDefault()) {
127 if (settings.CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND != myTrackChangedOnServer.isSelected()) {
128 return true;
130 if (settings.ENABLE_BACKGROUND_PROCESSES != myEnableBackgroundProcesses.isSelected()) return true;
131 if (myCacheSettingsPanel.isModified()) return true;
132 if (settings.CHANGED_ON_SERVER_INTERVAL != ((Number) myChangedOnServerInterval.getValue()).intValue()) return true;
134 return false;
137 public void reset() {
138 VcsConfiguration settings = VcsConfiguration.getInstance(myProject);
139 myCbCommitInBackground.setSelected(settings.PERFORM_COMMIT_IN_BACKGROUND);
140 myCbUpdateInBackground.setSelected(settings.PERFORM_UPDATE_IN_BACKGROUND);
141 myCbCheckoutInBackground.setSelected(settings.PERFORM_CHECKOUT_IN_BACKGROUND);
142 myCbEditInBackground.setSelected(settings.PERFORM_EDIT_IN_BACKGROUND);
143 myCbAddRemoveInBackground.setSelected(settings.PERFORM_ADD_REMOVE_IN_BACKGROUND);
144 myPerformRevertInBackgroundCheckBox.setSelected(settings.PERFORM_ROLLBACK_IN_BACKGROUND);
145 for (VcsShowOptionsSettingImpl setting : myPromptOptions.keySet()) {
146 myPromptOptions.get(setting).setSelected(setting.getValue());
149 if (! myProject.isDefault()) {
150 myTrackChangedOnServer.setSelected(settings.CHECK_LOCALLY_CHANGED_CONFLICTS_IN_BACKGROUND);
151 myEnableBackgroundProcesses.setSelected(settings.ENABLE_BACKGROUND_PROCESSES);
152 myChangedOnServerInterval.setValue(settings.CHANGED_ON_SERVER_INTERVAL);
153 myCacheSettingsPanel.reset();
157 public JComponent getPanel() {
158 return myPanel;
161 @Nls
162 public String getDisplayName() {
163 return "Background";
166 public Icon getIcon() {
167 return null;
170 public String getHelpTopic() {
171 return "project.propVCSSupport.Background";
174 public JComponent createComponent() {
175 return getPanel();
178 public void disposeUIResources() {
181 private void createUIComponents() {
182 myCacheSettingsPanel = new CacheSettingsPanel();
183 myCachePanel = myCacheSettingsPanel.createComponent();