package krasa.grepconsole.stats.action; import org.jetbrains.annotations.NotNull; import com.intellij.execution.impl.ConsoleViewImpl; import com.intellij.execution.ui.ConsoleView; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.wm.StatusBar; import com.intellij.openapi.wm.WindowManager; import krasa.grepconsole.action.OpenConsoleSettingsAction; import krasa.grepconsole.filter.GrepHighlightFilter; import krasa.grepconsole.filter.support.GrepProcessor; import krasa.grepconsole.gui.SettingsContext; import krasa.grepconsole.plugin.ServiceManager; import krasa.grepconsole.stats.GrepConsoleStatusBarWidget; import krasa.grepconsole.stats.StatisticsManager; public class ShowHideStatisticsStatusBarPanelAction extends DumbAwareAction { private final ConsoleView console; public ShowHideStatisticsStatusBarPanelAction(ConsoleView console) { this.console = console; } @Override public void actionPerformed(AnActionEvent anActionEvent) { GrepConsoleStatusBarWidget statusBarPanel = StatisticsManager.getStatusBarPanel( (com.intellij.execution.impl.ConsoleViewImpl) console); if (statusBarPanel == null) { GrepHighlightFilter highlightFilter = ServiceManager.getInstance().getHighlightFilter(console); if (highlightFilter == null) { return; } if (!hasStatusBarItems(highlightFilter)) { new OpenConsoleSettingsAction(console).actionPerformed(getEventProject(anActionEvent), SettingsContext.STATUS_BAR); } if (!hasStatusBarItems(highlightFilter)) { return; } StatisticsManager.createStatusBarPanel((ConsoleViewImpl) console, highlightFilter); } else { final StatusBar statusBar = WindowManager.getInstance().getIdeFrame( getEventProject(anActionEvent)).getStatusBar(); statusBar.removeWidget(statusBarPanel.ID()); } } public boolean hasStatusBarItems(@NotNull GrepHighlightFilter highlightFilter) { boolean showCountInStatusBar = false; for (GrepProcessor grepProcessor : highlightFilter.getGrepProcessors()) { showCountInStatusBar = grepProcessor.getGrepExpressionItem().isShowCountInStatusBar(); if (showCountInStatusBar) { break; } } return showCountInStatusBar; } @Override public void update(AnActionEvent e) { super.update(e); if (console instanceof ConsoleViewImpl) { GrepConsoleStatusBarWidget statusBarPanel = StatisticsManager.getStatusBarPanel( (com.intellij.execution.impl.ConsoleViewImpl) console); if (statusBarPanel != null) { e.getPresentation().setText("Hide Grep Console Statistics in StatusBar"); } if (statusBarPanel == null) { e.getPresentation().setText("Show Grep Console Statistics in StatusBar"); } } else { e.getPresentation().setVisible(false); } } }