Размещение плагина IntelliJ в строке состояния - PullRequest
0 голосов
/ 09 ноября 2018

Я только начинаю играть с плагином SDK для IntelliJ IDEA. Однако у меня уже есть некоторые проблемы с первым шагом.

Я бы хотел разместить действие в нижней строке состояния рядом с действиями Git.

Как я могу разместить это действие там?

Screenshot showing desired position

1 Ответ

0 голосов
/ 10 ноября 2018

Этот тип пользовательского интерфейса называется 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();
    }
}

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

...