| package com.intellij.ide.actions; |
| |
| import com.intellij.ide.util.PlatformPackageUtil; |
| import com.intellij.openapi.actionSystem.AnActionEvent; |
| import com.intellij.openapi.actionSystem.CommonDataKeys; |
| import com.intellij.openapi.actionSystem.DataContext; |
| import com.intellij.openapi.project.DumbAwareAction; |
| import com.intellij.openapi.project.Project; |
| import com.intellij.openapi.vfs.VirtualFile; |
| import com.intellij.psi.PsiElement; |
| import com.intellij.psi.PsiManager; |
| import com.intellij.refactoring.copy.CopyHandler; |
| |
| public class SaveAsAction extends DumbAwareAction { |
| |
| @Override |
| public void update(AnActionEvent e) { |
| final DataContext dataContext = e.getDataContext(); |
| final Project project = CommonDataKeys.PROJECT.getData(dataContext); |
| final VirtualFile virtualFile = CommonDataKeys.VIRTUAL_FILE.getData(dataContext); |
| e.getPresentation().setEnabled(project!=null && virtualFile!=null); |
| } |
| |
| @Override |
| public void actionPerformed(AnActionEvent e) { |
| final DataContext dataContext = e.getDataContext(); |
| final Project project = CommonDataKeys.PROJECT.getData(dataContext); |
| final VirtualFile virtualFile = CommonDataKeys.VIRTUAL_FILE.getData(dataContext); |
| @SuppressWarnings({"ConstantConditions"}) final PsiElement element = PsiManager.getInstance(project).findFile(virtualFile); |
| if(element==null) return; |
| CopyHandler.doCopy(new PsiElement[] {element.getContainingFile()}, PlatformPackageUtil.getDirectory(element)); |
| } |
| } |