split PsiVcsSelectionProvider into java and xml parts

This commit is contained in:
Dmitry Jemerov
2009-09-02 16:55:23 +04:00
parent 2c5a855e23
commit 37c8463315
4 changed files with 59 additions and 9 deletions
@@ -0,0 +1,70 @@
package com.intellij.vcsUtil;
import com.intellij.codeInsight.TargetElementUtilBase;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vcs.VcsBundle;
import com.intellij.openapi.vcs.actions.VcsContext;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import org.jetbrains.annotations.Nullable;
/**
* @author yole
*/
public class JavaVcsSelectionProvider implements VcsSelectionProvider {
@Nullable
public VcsSelection getSelection(final VcsContext context) {
final Editor editor = context.getEditor();
if (editor == null) return null;
PsiElement psiElement = TargetElementUtilBase.findTargetElement(editor, TargetElementUtilBase.ELEMENT_NAME_ACCEPTED);
if (psiElement == null) {
return null;
}
if (!psiElement.isValid()) {
return null;
}
if (psiElement instanceof PsiCompiledElement) {
return null;
}
final String actionName;
if (psiElement instanceof PsiClass) {
actionName = VcsBundle.message("action.name.show.history.for.class");
}
else if (psiElement instanceof PsiField) {
actionName = VcsBundle.message("action.name.show.history.for.field");
}
else if (psiElement instanceof PsiMethod) {
actionName = VcsBundle.message("action.name.show.history.for.method");
}
else if (psiElement instanceof PsiCodeBlock) {
actionName = VcsBundle.message("action.name.show.history.for.code.block");
}
else if (psiElement instanceof PsiStatement) {
actionName = VcsBundle.message("action.name.show.history.for.statement");
}
else {
return null;
}
TextRange textRange = psiElement.getTextRange();
if (textRange == null) {
return null;
}
VirtualFile virtualFile = psiElement.getContainingFile().getVirtualFile();
if (virtualFile == null) {
return null;
}
if (!virtualFile.isValid()) {
return null;
}
Document document = FileDocumentManager.getInstance().getDocument(virtualFile);
return new VcsSelection(document, textRange, actionName);
}
}