将IntelliJ插件放置在状态栏中

时间:2018-11-09 17:03:24

标签: intellij-idea intellij-plugin

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

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

如何在该处放置该动作?

Screenshot showing desired position

1 个答案:

答案 0 :(得分:2)

这种类型的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));
    }
});

结果如下:

enter image description here