package krasa.grepconsole.stats; import javax.swing.*; import krasa.grepconsole.filter.GrepHighlightFilter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import com.intellij.execution.impl.ConsoleViewImpl; import com.intellij.execution.ui.ConsoleView; import com.intellij.openapi.project.Project; import com.intellij.openapi.wm.CustomStatusBarWidget; import com.intellij.openapi.wm.IdeFrame; import com.intellij.openapi.wm.StatusBar; import com.intellij.openapi.wm.WindowManager; public class GrepConsoleStatusBarWidget implements CustomStatusBarWidget { private final String id; private final Project project; protected StatisticsStatusBarPanel statisticsPanel; public GrepConsoleStatusBarWidget(ConsoleViewImpl console, GrepHighlightFilter lastGrepHighlightFilter) { statisticsPanel = new StatisticsStatusBarPanel(console, lastGrepHighlightFilter) { @Override protected void hideStatusBar() { dispose(); } }; id = createId(console); project = console.getProject(); } public static String createId(ConsoleView console) { return "GrepConsole" + Integer.toHexString(console.hashCode()); } @Override public JComponent getComponent() { return statisticsPanel; } @NotNull @Override public String ID() { return id; } @Nullable @Override public WidgetPresentation getPresentation(@NotNull PlatformType platformType) { return null; } @Override public void install(@NotNull StatusBar statusBar) { } public StatisticsStatusBarPanel getStatisticsPanel() { return statisticsPanel; } @Override public void dispose() { IdeFrame ideFrame = WindowManager.getInstance().getIdeFrame(project); if (ideFrame != null) { final StatusBar statusBar = ideFrame.getStatusBar(); statusBar.removeWidget(ID()); statusBar.getComponent().revalidate(); } if (statisticsPanel != null) { statisticsPanel.cancelTimer(); statisticsPanel = null; } } }