将 IntelliJ 插件放在状态栏中

Placing IntelliJ plugin in status bar

我刚刚开始使用 IntelliJ IDEA 的插件 SDK。但是我已经在第一步中遇到了一些麻烦。

我想在下方状态栏中 Git 操作旁边放置一个操作。

我怎样才能把那个动作放在那里?

这种UI叫做EditorBasedWidget。如果您想探索它在 git4idea 插件中的工作原理,我建议您从 GitBranchWidgetDvcsStatusWidget 类.

开始

这是最简单示例的代码:

MyWidget.java

public class MyWidget extends EditorBasedWidget {
    public MyWidget(@NotNull Project project) {
        super(project);
    }

    @NotNull
    @Override
    public String ID() {
        return "MyWidget";
    }

    @Nullable
    @Override
    public WidgetPresentation getPresentation(@NotNull PlatformType type) {
        return new MyPresentation();
    }
}

MyPresentation.java

public class MyPresentation implements StatusBarWidget.MultipleTextValuesPresentation {
    @Nullable("null means the widget is unable to show the popup")
    @Override
    public ListPopup getPopupStep() {
        return null;
    }

    @Nullable
    @Override
    public String getSelectedValue() {
        return "Selected value";
    }

    @NotNull
    @Override
    public String getMaxValue() {
        return "Max value";
    }

    @Nullable
    @Override
    public String getTooltipText() {
        return "Tooltip text";
    }

    @Nullable
    @Override
    public Consumer<MouseEvent> getClickConsumer() {
        return null;
    }
}

某处,例如 ProjectComponent

ApplicationManager.getApplication().invokeLater(() -> {
    StatusBar statusBar = WindowManager.getInstance().getStatusBar(myProject);
    if (statusBar != null) {
       statusBar.addWidget(new MyWidget(myProject));
    }
});

结果如下: