1 package com
.intellij
.psi
.impl
.file
;
3 import com
.intellij
.openapi
.diagnostic
.Logger
;
4 import com
.intellij
.openapi
.editor
.Document
;
5 import com
.intellij
.openapi
.fileEditor
.FileDocumentManager
;
6 import com
.intellij
.openapi
.vfs
.VirtualFile
;
7 import com
.intellij
.psi
.PsiFile
;
8 import com
.intellij
.psi
.PsiManager
;
9 import com
.intellij
.psi
.impl
.PsiManagerImpl
;
10 import com
.intellij
.util
.IncorrectOperationException
;
12 import java
.io
.IOException
;
13 import java
.util
.ArrayList
;
14 import java
.util
.List
;
16 public class PsiFileImplUtil
{
17 private static final Logger LOG
= Logger
.getInstance("#com.intellij.psi.impl.file.PsiFileImplUtil");
19 public static PsiFile
setName(final PsiFile file
, String newName
) throws IncorrectOperationException
{
20 VirtualFile vFile
= file
.getViewProvider().getVirtualFile();
21 PsiManagerImpl manager
= (PsiManagerImpl
)file
.getManager();
24 final FileDocumentManager fdm
= FileDocumentManager
.getInstance();
25 final Document doc
= fdm
.getCachedDocument(vFile
);
27 fdm
.saveDocument(doc
);
30 vFile
.rename(manager
, newName
);
33 throw new IncorrectOperationException(e
.toString(),e
);
36 return file
.getViewProvider().isPhysical() ? manager
.findFile(vFile
) : file
;
39 public static void checkSetName(PsiFile file
, String name
) throws IncorrectOperationException
{
40 VirtualFile vFile
= file
.getVirtualFile();
41 VirtualFile parentFile
= vFile
.getParent();
42 if (parentFile
== null) return;
43 VirtualFile child
= parentFile
.findChild(name
);
44 if (child
!= null && !child
.equals(vFile
)){
45 throw new IncorrectOperationException("File " + child
.getPresentableUrl() + " already exists.");
49 public static void doDelete(final PsiFile file
) throws IncorrectOperationException
{
50 final PsiManagerImpl manager
= (PsiManagerImpl
)file
.getManager();
52 final VirtualFile vFile
= file
.getVirtualFile();
54 vFile
.delete(manager
);
57 throw new IncorrectOperationException(e
.toString(),e
);
61 public static PsiFile
[] getPsiFilesByVirtualFiles(VirtualFile
[] files
, PsiManager manager
) {
62 List
<PsiFile
> psiFiles
= new ArrayList
<PsiFile
>();
63 for (VirtualFile file
: files
) {
64 PsiFile psiFile
= manager
.findFile(file
);
65 if (psiFile
!= null) {
66 psiFiles
.add(psiFile
);
69 return psiFiles
.toArray(new PsiFile
[psiFiles
.size()]);
72 public static PsiFile
[] getPsiFilesByVirtualFiles(List
<VirtualFile
> files
, PsiManager manager
) {
73 List
<PsiFile
> psiFiles
= new ArrayList
<PsiFile
>();
75 for (VirtualFile file
: files
) {
76 PsiFile psiFile
= manager
.findFile(file
);
77 if (psiFile
!= null) {
78 psiFiles
.add(psiFile
);
81 return psiFiles
.toArray(new PsiFile
[psiFiles
.size()]);