ExcludedFileIndex -> FileIndexFacade; use it in PsiClassImplUtil
[idea/community.git] / plugins / svn4idea / src / org / jetbrains / idea / svn / StatusWalkerPartnerImpl.java
1 /*
2  * Copyright 2000-2009 JetBrains s.r.o.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 package org.jetbrains.idea.svn;
17
18 import com.intellij.lifecycle.PeriodicalTasksCloser;
19 import com.intellij.openapi.progress.ProgressIndicator;
20 import com.intellij.openapi.roots.FileIndexFacade;
21 import com.intellij.openapi.vcs.changes.ChangeListManager;
22 import com.intellij.openapi.vfs.VirtualFile;
23 import org.tmatesoft.svn.core.SVNCancelException;
24 import org.tmatesoft.svn.core.SVNException;
25 import org.tmatesoft.svn.core.wc.ISVNEventHandler;
26 import org.tmatesoft.svn.core.wc.ISVNStatusFileProvider;
27 import org.tmatesoft.svn.core.wc.SVNEvent;
28 import org.tmatesoft.svn.core.wc.SVNStatusClient;
29
30 public class StatusWalkerPartnerImpl implements StatusWalkerPartner {
31   private final SvnVcs myVcs;
32   private final ChangeListManager myClManager;
33   private final FileIndexFacade myExcludedFileIndex;
34   private final ProgressIndicator myIndicator;
35   private ISVNStatusFileProvider myFileProvider;
36
37   public StatusWalkerPartnerImpl(final SvnVcs vcs, final ProgressIndicator pi) {
38     myVcs = vcs;
39     myClManager = ChangeListManager.getInstance(myVcs.getProject());
40     myExcludedFileIndex = PeriodicalTasksCloser.getInstance().safeGetService(myVcs.getProject(), FileIndexFacade.class);
41     myIndicator = pi;
42   }
43
44   public void setFileProvider(final ISVNStatusFileProvider fileProvider) {
45     myFileProvider = fileProvider;
46   }
47
48   public SVNStatusClient createStatusClient() {
49     final SVNStatusClient result = myVcs.createStatusClient();
50     result.setFilesProvider(myFileProvider);
51     result.setEventHandler(new ISVNEventHandler() {
52       public void handleEvent(SVNEvent event, double progress) throws SVNException {
53         //
54       }
55
56       public void checkCancelled() throws SVNCancelException {
57         if (myIndicator != null) {
58           myIndicator.checkCanceled();
59         }
60       }
61     });
62     return result;
63   }
64
65   public void checkCanceled() {
66     if (myIndicator != null) {
67       myIndicator.checkCanceled();
68     }
69   }
70
71   public boolean isExcluded(VirtualFile vFile) {
72     return myExcludedFileIndex.isExcludedFile(vFile);
73   }
74
75   public boolean isIgnoredIdeaLevel(VirtualFile vFile) {
76     return myClManager.isIgnoredFile(vFile);
77   }
78 }