From 1d855020f6f07b7376d1943624ad51e55fa6a1be Mon Sep 17 00:00:00 2001 From: irengrig Date: Tue, 17 Jan 2012 14:56:08 +0400 Subject: [PATCH] OC-2778 Perforce commands do not work; reviewed by amakeev --- .../vcs/impl/ModuleDefaultVcsRootPolicy.java | 7 ------ .../intellij/openapi/vcs/changes/Scopes.java | 24 +++++++++++++++++-- .../VcsDirectoryConfigurationPanel.java | 4 +++- .../VcsMappingConfigurationDialog.java | 24 ++----------------- .../vcs/impl/DefaultVcsRootPolicy.java | 21 ++++++++++++++++ 5 files changed, 48 insertions(+), 32 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/openapi/vcs/impl/ModuleDefaultVcsRootPolicy.java b/platform/lang-impl/src/com/intellij/openapi/vcs/impl/ModuleDefaultVcsRootPolicy.java index c4fb6b7d7843..3601d54c8485 100644 --- a/platform/lang-impl/src/com/intellij/openapi/vcs/impl/ModuleDefaultVcsRootPolicy.java +++ b/platform/lang-impl/src/com/intellij/openapi/vcs/impl/ModuleDefaultVcsRootPolicy.java @@ -160,12 +160,5 @@ public class ModuleDefaultVcsRootPolicy extends DefaultVcsRootPolicy { builder.addDirtyFile(new VcsRoot(vcs, myBaseDir)); } } - - final VcsRoot[] vcsRoots = plVcsManager.getAllVcsRoots(); - for (VcsRoot root : vcsRoots) { - //if (! root.path.equals(baseDir)) { - builder.addDirtyDirRecursively(root); - //} - } } } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/Scopes.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/Scopes.java index 568d9f8b1830..8cfbb9a0a86a 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/Scopes.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/Scopes.java @@ -16,9 +16,10 @@ package com.intellij.openapi.vcs.changes; import com.intellij.openapi.project.Project; -import com.intellij.openapi.vcs.AbstractVcs; -import com.intellij.openapi.vcs.FilePath; +import com.intellij.openapi.vcs.*; import com.intellij.openapi.vcs.impl.DefaultVcsRootPolicy; +import com.intellij.openapi.vfs.LocalFileSystem; +import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import java.util.*; @@ -40,6 +41,25 @@ public class Scopes { myScopes.clear(); myEverythingDirty = true; final DirtBuilder builder = new DirtBuilder(myGuess); + final ProjectLevelVcsManager vcsManager = ProjectLevelVcsManager.getInstance(myProject); + final List mappings = vcsManager.getDirectoryMappings(); + + final LocalFileSystem lfs = LocalFileSystem.getInstance(); + for (VcsDirectoryMapping mapping : mappings) { + if (mapping.isDefaultMapping()) { + DefaultVcsRootPolicy.getInstance(myProject).markDefaultRootsDirty(builder, myGuess); + } else { + if (mapping.getVcs() != null) { + final String vcsName = mapping.getVcs(); + final AbstractVcs vcs = vcsManager.findVcsByName(vcsName); + final VirtualFile file = lfs.findFileByPath(mapping.getDirectory()); + if (file != null) { + builder.addDirtyDirRecursively(new VcsRoot(vcs, file)); + } + } + } + } + DefaultVcsRootPolicy.getInstance(myProject).markDefaultRootsDirty(builder, myGuess); takeDirt(builder); } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsDirectoryConfigurationPanel.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsDirectoryConfigurationPanel.java index ff3fcbb08794..d1fc70a345d4 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsDirectoryConfigurationPanel.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsDirectoryConfigurationPanel.java @@ -23,6 +23,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vcs.*; +import com.intellij.openapi.vcs.impl.DefaultVcsRootPolicy; import com.intellij.openapi.vcs.impl.VcsDescriptor; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.*; @@ -165,7 +166,8 @@ public class VcsDirectoryConfigurationPanel extends PanelWithButtons implements public VcsDirectoryConfigurationPanel(final Project project) { myProject = project; myVcsConfiguration = VcsConfiguration.getInstance(myProject); - myProjectMessage = "" + StringUtil.escapeXml(VcsDirectoryMapping.PROJECT_CONSTANT) + " - " + VcsMappingConfigurationDialog.getProjectMessage(myProject).replace('\n', ' ') + ""; + myProjectMessage = "" + StringUtil.escapeXml(VcsDirectoryMapping.PROJECT_CONSTANT) + " - " + + DefaultVcsRootPolicy.getInstance(myProject).getProjectConfigurationMessage(myProject).replace('\n', ' ') + ""; myIsDisabled = myProject.isDefault(); myVcsManager = ProjectLevelVcsManager.getInstance(project); final VcsDescriptor[] vcsDescriptors = myVcsManager.getAllVcss(); diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsMappingConfigurationDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsMappingConfigurationDialog.java index 7eccd34dd07e..3a06bebec303 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsMappingConfigurationDialog.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/configurable/VcsMappingConfigurationDialog.java @@ -16,19 +16,18 @@ package com.intellij.openapi.vcs.configurable; -import com.intellij.openapi.components.StorageScheme; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.UnnamedConfigurable; import com.intellij.openapi.project.Project; -import com.intellij.openapi.project.ex.ProjectEx; import com.intellij.openapi.ui.*; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vcs.AbstractVcs; import com.intellij.openapi.vcs.ProjectLevelVcsManager; import com.intellij.openapi.vcs.VcsBundle; import com.intellij.openapi.vcs.VcsDirectoryMapping; +import com.intellij.openapi.vcs.impl.DefaultVcsRootPolicy; import com.intellij.openapi.vcs.impl.VcsDescriptor; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.components.JBLabel; @@ -168,27 +167,8 @@ public class VcsMappingConfigurationDialog extends DialogWrapper { myDirectoryRadioButton.setSelected(true); } - public static String getProjectMessage(final Project project) { - final StorageScheme storageScheme = ((ProjectEx) project).getStateStore().getStorageScheme(); - boolean isDirectoryBased = StorageScheme.DIRECTORY_BASED.equals(storageScheme); - final String[] parts = new String[] {"Content roots of all modules", "all immediate descendants of project base directory", - ".idea directory contents"}; - final StringBuilder sb = new StringBuilder(parts[0]); - if (isDirectoryBased) { - sb.append(", "); - } else { - sb.append(", and "); - } - sb.append(parts[1]); - if (isDirectoryBased) { - sb.append(", and "); - sb.append(parts[2]); - } - return sb.toString(); - } - public void initProjectMessage() { - myProjectButtonComment.setText("" + getProjectMessage(myProject) + ""); + myProjectButtonComment.setText("" + DefaultVcsRootPolicy.getInstance(myProject).getProjectConfigurationMessage(myProject) + ""); } private class MyBrowseFolderListener extends ComponentWithBrowseButton.BrowseFolderActionListener { diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/DefaultVcsRootPolicy.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/DefaultVcsRootPolicy.java index 32ae467c1fa0..2be72ffccb42 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/DefaultVcsRootPolicy.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/impl/DefaultVcsRootPolicy.java @@ -16,7 +16,9 @@ package com.intellij.openapi.vcs.impl; import com.intellij.lifecycle.PeriodicalTasksCloser; +import com.intellij.openapi.components.StorageScheme; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ex.ProjectEx; import com.intellij.openapi.vcs.changes.DirtBuilder; import com.intellij.openapi.vcs.changes.VcsGuess; import com.intellij.openapi.vcs.impl.projectlevelman.NewMappings; @@ -45,4 +47,23 @@ public abstract class DefaultVcsRootPolicy { public abstract VirtualFile getVcsRootFor(final VirtualFile file); public abstract void markDefaultRootsDirty(final DirtBuilder builder, VcsGuess vcsGuess); + + public String getProjectConfigurationMessage(final Project project) { + final StorageScheme storageScheme = ((ProjectEx) project).getStateStore().getStorageScheme(); + boolean isDirectoryBased = StorageScheme.DIRECTORY_BASED.equals(storageScheme); + final String[] parts = new String[] {"Content roots of all modules", "all immediate descendants of project base directory", + ".idea directory contents"}; + final StringBuilder sb = new StringBuilder(parts[0]); + if (isDirectoryBased) { + sb.append(", "); + } else { + sb.append(", and "); + } + sb.append(parts[1]); + if (isDirectoryBased) { + sb.append(", and "); + sb.append(parts[2]); + } + return sb.toString(); + } }