package com.antfortune.freeline.idea.actions;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.DataKeys;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.antfortune.freeline.idea.utils.DocumentUtil;
import javax.swing.*;
import java.io.File;
/**
* Created by pengwei on 16/9/11.
*/
public abstract class BaseAction extends AnAction {
protected Project currentProject;
protected File projectDir;
protected AnActionEvent anActionEvent;
public BaseAction(Icon icon) {
super(icon);
}
@Override
public final void actionPerformed(AnActionEvent anActionEvent) {
DocumentUtil.saveDocument();
this.anActionEvent = anActionEvent;
this.currentProject = DataKeys.PROJECT.getData(anActionEvent.getDataContext());
this.projectDir = new File(currentProject.getBasePath());
actionPerformed();
}
public abstract void actionPerformed();
/**
* 异步执行
*
* @param runnable
*/
protected void asyncTask(Runnable runnable) {
ApplicationManager.getApplication().executeOnPooledThread(runnable);
}
protected void invokeLater(Runnable runnable) {
ApplicationManager.getApplication().invokeLater(runnable);
}
}