package krasa.visualvm.action;
import javax.swing.*;
import com.intellij.execution.process.ProcessHandler;
import com.intellij.execution.runners.ProcessProxyFactory;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.Presentation;
public abstract class LauncherBasedAction extends AnAction {
protected final ProcessHandler myProcessHandler;
LauncherBasedAction(String text, String description, Icon icon, ProcessHandler processHandler) {
super(text, description, icon);
myProcessHandler = processHandler;
}
@Override
public void update(final AnActionEvent event) {
final Presentation presentation = event.getPresentation();
if (!isVisible()) {
presentation.setVisible(false);
presentation.setEnabled(false);
return;
}
presentation.setVisible(true);
presentation.setEnabled(!myProcessHandler.isProcessTerminated());
}
protected boolean isVisible() {
return ProcessProxyFactory.getInstance().getAttachedProxy(myProcessHandler) != null;
}
}