Java Intellij IDEA插件开发:无法获取IntentionAction的进度指示器
在我的自定义IntellIJ IDEA插件中运行自定义Java Intellij IDEA插件开发:无法获取IntentionAction的进度指示器,java,user-interface,intellij-idea,intellij-plugin,Java,User Interface,Intellij Idea,Intellij Plugin,在我的自定义IntellIJ IDEA插件中运行自定义IntentionAction时,我想显示一个进度条 但是,无论我做什么,它都不会显示。为了测试问题是否存在于意图操作,我将代码复制粘贴到操作的一个简单实现中。整个班级看起来都是这样的: public class HelloAction extends AnAction { public HelloAction() { super("Hello"); } public void actionP
IntentionAction
时,我想显示一个进度条
但是,无论我做什么,它都不会显示。为了测试问题是否存在于意图操作
,我将代码复制粘贴到操作
的一个简单实现中。整个班级看起来都是这样的:
public class HelloAction extends AnAction {
public HelloAction() {
super("Hello");
}
public void actionPerformed(AnActionEvent event) {
Project project = event.getData(CommonDataKeys.PROJECT);
ProgressManager.getInstance().run(new Task.Modal(project, "daf", false) {
public void run(ProgressIndicator indicator) {
indicator.setText("This is how you update the indicator");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {}
indicator.setFraction(0.5); // halfway done
try {
Thread.sleep(2000);
} catch (InterruptedException e) {}
}
});
Messages.showMessageDialog(project, "Hello world!", "Greeting", Messages.getInformationIcon());
}
}
而且它工作得很好。当我在IntentionAction
中使用相同的代码时,不会显示任何内容
public class GenerateIntentionAction extends PsiElementBaseIntentionAction implements IntentionAction {
...
public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException {
ProgressManager.getInstance().run(new Task.Modal(project, "daf", false) {
public void run(ProgressIndicator indicator) {
indicator.setText("This is how you update the indicator");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {}
indicator.setFraction(0.5); // halfway done
try {
Thread.sleep(2000);
} catch (InterruptedException e) {}
}
});
我尝试运行call
runwithprogressynchronously
而不是run
,尝试将任务
设置为模态和背景
,但均无效。我不知道有什么不对,除了ProgressIndicator
内部intentitionaction
始终是EmptyProgressIndicator
如果在WriteAction
内部调用了意图操作,则无法从那里显示模式UI。重写startInWriteAction
并返回false
可能会有所帮助