package cn.ieclipse.smartim.actions; import cn.ieclipse.smartim.console.IMChatConsole; import com.intellij.ide.actions.GotoActionBase; import com.intellij.ide.util.gotoByName.ChooseByNameModel; import com.intellij.ide.util.gotoByName.ChooseByNamePopup; import com.intellij.ide.util.gotoByName.GotoFileModel; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; import icons.SmartIcons; import java.io.File; /** * Created by Jamling on 2018/2/27. */ public class SendProjectFileAction2 extends GotoActionBase implements DumbAware { private IMChatConsole console; public SendProjectFileAction2(IMChatConsole console) { this.console = console; getTemplatePresentation().setIcon(SmartIcons.projectFile); getTemplatePresentation().setText("发送工程中的文件"); } @Override protected void gotoActionPerformed(AnActionEvent anActionEvent) { Project project = anActionEvent.getData(CommonDataKeys.PROJECT); ChooseByNameModel model = new GotoFileModel(project); showNavigationPopup(anActionEvent, model, new Callback(), false); } private class Callback extends GotoActionCallback<String> { @Override public void elementChosen(ChooseByNamePopup chooseByNamePopup, Object o) { if (o != null && o instanceof PsiFile) { PsiFile file = (PsiFile)o; VirtualFile vf = file.getVirtualFile(); if (vf != null) { File f = new File(vf.getCanonicalPath()); if (f.exists()) { console.sendFile(f.getAbsolutePath()); } else { console.send(vf.getCanonicalPath()); } } } } } }