将 IntelliJ 插件放在状态栏中
Placing IntelliJ plugin in status bar
我刚刚开始使用 IntelliJ IDEA 的插件 SDK。但是我已经在第一步中遇到了一些麻烦。
我想在下方状态栏中 Git 操作旁边放置一个操作。
我怎样才能把那个动作放在那里?
这种UI叫做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));
}
});
结果如下:
我刚刚开始使用 IntelliJ IDEA 的插件 SDK。但是我已经在第一步中遇到了一些麻烦。
我想在下方状态栏中 Git 操作旁边放置一个操作。
我怎样才能把那个动作放在那里?
这种UI叫做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));
}
});
结果如下: