Intellij idea 在状态栏中放置IntelliJ插件

Intellij idea 在状态栏中放置IntelliJ插件,intellij-idea,intellij-plugin,Intellij Idea,Intellij Plugin,我刚刚开始玩IntelliJ IDEA的插件SDK。然而,我已经有一些麻烦的第一步 我想在较低的状态栏中,Git操作旁边放置一个操作 我怎样才能在那里采取行动 这种类型的用户界面称为EditorBasedWidget。如果您想探索它在git4idea插件中的工作原理,我建议您从GitBranchWidget和DvcsStatusWidget类开始 下面是最简单示例的代码: MyWidget.java public class MyWidget extends EditorBasedWidget

我刚刚开始玩IntelliJ IDEA的插件SDK。然而,我已经有一些麻烦的第一步

我想在较低的状态栏中,Git操作旁边放置一个操作

我怎样才能在那里采取行动


这种类型的用户界面称为
EditorBasedWidget
。如果您想探索它在
git4idea
插件中的工作原理,我建议您从
GitBranchWidget
DvcsStatusWidget
类开始

下面是最简单示例的代码:

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();
    }
}
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;
    }
}
MyPresentation.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();
    }
}
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;
    }
}
结果如下:


看看现有的是如何实现的?实际上,我正在尝试。查看了“git4idea”插件的源代码。然而,我很难理解他们是如何把插件放在那里的。