package limitedwip.watchdog.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.watchdog.components.WatchdogComponent;
import org.jetbrains.annotations.NotNull;
import java.awt.*;
import java.awt.event.MouseEvent;
public class WatchdogStatusBarWidget implements StatusBarWidget {
private static final String textPrefix = "Change size: ";
private String text = "";
@Override public void install(@NotNull StatusBar statusBar) {
}
@Override public void dispose() {
}
public void showChangeSize(String linesInChange, int maxLinesInChange) {
text = textPrefix + linesInChange + "/" + maxLinesInChange;
}
public void showInitialText(int maxLinesInChange) {
text = textPrefix + "-/" + maxLinesInChange;
}
@Override public WidgetPresentation getPresentation(@NotNull PlatformType type) {
return new TextPresentation() {
@NotNull @Override public String getText() {
return text;
}
@NotNull @Deprecated public String getMaxPossibleText() {
return "";
}
@Override public String getTooltipText() {
return "Shows amount of changed lines in current change list vs change size limit.";
}
@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;
WatchdogComponent watchdogComponent = project.getComponent(WatchdogComponent.class);
if (watchdogComponent == null) return;
watchdogComponent.toggleSkipNotificationsUntilCommit();
}
};
}
@Override public float getAlignment() {
return Component.CENTER_ALIGNMENT;
}
};
}
@NotNull @Override public String ID() {
return "LimitedWIP_" + this.getClass().getSimpleName();
}
}