package jetbrains.mps.vcs.integration; /*Generated by MPS */ import com.intellij.openapi.components.AbstractProjectComponent; import com.intellij.openapi.vcs.ProjectLevelVcsManager; import com.intellij.openapi.vcs.FileStatusManager; import com.intellij.openapi.vcs.changes.VcsDirtyScopeManager; import jetbrains.mps.project.MPSProject; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.openapi.vfs.VirtualFileEvent; import jetbrains.mps.ide.vfs.IdeaFileSystem; import com.intellij.openapi.vfs.VirtualFile; import jetbrains.mps.smodel.SModelFileTracker; import jetbrains.mps.ide.vfs.VirtualFileUtils; import com.intellij.openapi.vcs.merge.MergeProvider; import com.intellij.openapi.vcs.FileStatus; import com.intellij.openapi.vfs.VirtualFileAdapter; import com.intellij.openapi.vcs.AbstractVcs; public class GeneratedFileConflictResolving extends AbstractProjectComponent { private final ProjectLevelVcsManager myVcsManager; private final FileStatusManager myFileStatusManager; private final VcsDirtyScopeManager myDirtyScopeManager; private final MPSProject myMpsProject; private final GeneratedFileConflictResolving.MyFileListener myFileListener = new GeneratedFileConflictResolving.MyFileListener(); public GeneratedFileConflictResolving(Project project, MPSProject mpsProject, ProjectLevelVcsManager vcsManager, FileStatusManager fileStatusManager, VcsDirtyScopeManager dirtyScopeManager) { super(project); myVcsManager = vcsManager; myFileStatusManager = fileStatusManager; myDirtyScopeManager = dirtyScopeManager; myMpsProject = mpsProject; } @Override public void initComponent() { VirtualFileManager.getInstance().addVirtualFileListener(myFileListener); } @Override public void disposeComponent() { VirtualFileManager.getInstance().removeVirtualFileListener(myFileListener); } private void resolveIfNeeded(VirtualFileEvent e) { if (e.getRequestor() instanceof IdeaFileSystem) { VirtualFile file = e.getFile(); if (SModelFileTracker.getInstance(myMpsProject.getRepository()).findModel(VirtualFileUtils.toIFile(file)) != null) { return; } MergeProvider mergeProvider = check_tqtyvq_a0d0a0j(myVcsManager.getVcsFor(file)); if (mergeProvider != null) { FileStatus status = myFileStatusManager.getStatus(file); if (status == FileStatus.MERGED_WITH_CONFLICTS || status == FileStatus.MERGED_WITH_BOTH_CONFLICTS || status == FileStatus.MERGED_WITH_PROPERTY_CONFLICTS) { mergeProvider.conflictResolvedForFile(file); myDirtyScopeManager.fileDirty(file); } } } } private class MyFileListener extends VirtualFileAdapter { public MyFileListener() { } @Override public void contentsChanged(VirtualFileEvent event) { resolveIfNeeded(event); } @Override public void beforeFileDeletion(VirtualFileEvent event) { resolveIfNeeded(event); } } private static MergeProvider check_tqtyvq_a0d0a0j(AbstractVcs checkedDotOperand) { if (null != checkedDotOperand) { return checkedDotOperand.getMergeProvider(); } return null; } }