package limitedwip.autorevert.ui; import com.intellij.ide.DataManager; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; import com.intellij.openapi.wm.StatusBar; import com.intellij.openapi.wm.StatusBarWidget; import com.intellij.util.Consumer; import limitedwip.autorevert.components.AutoRevertComponent; import limitedwip.common.PluginId; import org.jetbrains.annotations.NotNull; import java.awt.*; import java.awt.event.MouseEvent; public class AutoRevertStatusBarWidget implements StatusBarWidget { private static final String timeTillRevertText = "Auto-revert in "; private static final String startedText = "Auto-revert started"; private static final String stoppedText = "Auto-revert stopped"; private String text = ""; @Override public void install(@NotNull StatusBar statusBar) { } @Override public void dispose() { } public void showTime(String timeLeft) { text = timeTillRevertText + timeLeft; } public void showStartedText() { text = startedText; } public void showStoppedText() { text = stoppedText; } @Override public WidgetPresentation getPresentation(@NotNull PlatformType type) { return new TextPresentation() { @NotNull @Override public String getText() { return text; } @Deprecated @NotNull @Override public String getMaxPossibleText() { return ""; } @Override public String getTooltipText() { return "Click to start/stop auto-revert"; } @Override public Consumer<MouseEvent> getClickConsumer() { return new Consumer<MouseEvent>() { @Override public void consume(MouseEvent mouseEvent) { DataContext dataContext = DataManager.getInstance().getDataContext(mouseEvent.getComponent()); Project project = PlatformDataKeys.PROJECT.getData(dataContext); if (project == null) return; AutoRevertComponent autoRevertComponent = project.getComponent(AutoRevertComponent.class); if (autoRevertComponent == null) return; if (autoRevertComponent.isAutoRevertStarted()) { autoRevertComponent.stopAutoRevert(); } else { autoRevertComponent.startAutoRevert(); } } }; } @Override public float getAlignment() { return Component.CENTER_ALIGNMENT; } }; } @NotNull @Override public String ID() { return PluginId.value + "_" + this.getClass().getSimpleName(); } }