代码之家  ›  专栏  ›  技术社区  ›  Robert Strauch

在状态栏中放置IntelliJ插件

  •  1
  • Robert Strauch  · 技术社区  · 7 年前

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

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

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

    Screenshot showing desired position

    1 回复  |  直到 7 年前
        1
  •  3
  •   Feedforward    7 年前

    这种类型的UI称为 EditorBasedWidget . 如果你想探索它在 git4idea 插件,我可以建议你从 GitBranchWidget DvcsStatusWidget 班级。

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

    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();
        }
    }
    

    我的演示文稿.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