如何在 Intellij Idea 插件中添加一个简单的选项卡
How to add a simple tab in Intellij Idea plugin
我正在为 Intellij Idea 创建一个简单的 class 图表插件。我现在正在努力在 IDE 中创建一个简单的选项卡。我将使用准备好的 JPanel 填充此选项卡,仅此而已。
我已经在 NetBeans 中做了同样的事情,我想找到与 NetBeans 中的 TopComponent 提供的行为相似的东西,但任何工作都会很酷。
答案如下:
创建 com.intellij.openapi.fileEditor.FileEditor
的实现。这是您的实际选项卡
创建 com.intellij.openapi.fileEditor.FileEditorProvider
的实现
accept()
定义您的编辑器打开的文件类型
create()
应该 returns 编辑器的正确实例
在 plugin.xml
中注册您的 FileEditoProvider
编辑:
public class YourEditor implements FileEditor {
private VirtualFile file;
public YourEditor(VirtualFile file) {
this.file = file;
}
@Override
public @NotNull JComponent getComponent() {
JPanel tabContent = new JPanel();
tabContent.add(new JButton("foo"));
return tabContent;
}
@Override
public @Nullable JComponent getPreferredFocusedComponent() {
return null;
}
@Override
public @Nls(capitalization = Nls.Capitalization.Title)
@NotNull String getName() {
return "name";
}
@Override
public void setState(@NotNull FileEditorState fileEditorState) {
}
@Override
public boolean isModified() {
return false;
}
@Override
public boolean isValid() {
return true;
}
@Override
public void addPropertyChangeListener(@NotNull PropertyChangeListener propertyChangeListener) {
}
@Override
public void removePropertyChangeListener(@NotNull PropertyChangeListener propertyChangeListener) {
}
@Override
public @Nullable FileEditorLocation getCurrentLocation() {
return null;
}
@Override
public void dispose() {
Disposer.dispose(this);
}
@Override
public <T> @Nullable T getUserData(@NotNull Key<T> key) {
return null;
}
@Override
public <T> void putUserData(@NotNull Key<T> key, @Nullable T t) {
}
@Override
public @Nullable VirtualFile getFile() {
return this.file;
}
}
提供商:
public class YourEditorProvider implements FileEditorProvider, DumbAware {
private static String EDITOR_TYPE_ID = "DiagramView";
@Override
public boolean accept(@NotNull Project project, @NotNull VirtualFile virtualFile) {
return true; //will accept all kind of files, must be specified
}
@Override
public @NotNull
FileEditor createEditor(@NotNull Project project, @NotNull VirtualFile virtualFile) {
return new YourEditor(virtualFile);
}
@Override
public @NotNull
@NonNls
String getEditorTypeId() {
return EDITOR_TYPE_ID;
}
@Override
public @NotNull
FileEditorPolicy getPolicy() {
return FileEditorPolicy.HIDE_DEFAULT_EDITOR;
}
}
最后将 FileEditorProvider 扩展名放入 pluxin.xml
:
<extensions defaultExtensionNs="com.intellij">
<fileEditorProvider implementation="classDiagramPainter.DiagramViewProvider"/>
</extensions>
我正在为 Intellij Idea 创建一个简单的 class 图表插件。我现在正在努力在 IDE 中创建一个简单的选项卡。我将使用准备好的 JPanel 填充此选项卡,仅此而已。 我已经在 NetBeans 中做了同样的事情,我想找到与 NetBeans 中的 TopComponent 提供的行为相似的东西,但任何工作都会很酷。
答案如下:
创建
com.intellij.openapi.fileEditor.FileEditor
的实现。这是您的实际选项卡创建
com.intellij.openapi.fileEditor.FileEditorProvider
的实现accept()
定义您的编辑器打开的文件类型create()
应该 returns 编辑器的正确实例在
中注册您的 FileEditoProviderplugin.xml
编辑:
public class YourEditor implements FileEditor {
private VirtualFile file;
public YourEditor(VirtualFile file) {
this.file = file;
}
@Override
public @NotNull JComponent getComponent() {
JPanel tabContent = new JPanel();
tabContent.add(new JButton("foo"));
return tabContent;
}
@Override
public @Nullable JComponent getPreferredFocusedComponent() {
return null;
}
@Override
public @Nls(capitalization = Nls.Capitalization.Title)
@NotNull String getName() {
return "name";
}
@Override
public void setState(@NotNull FileEditorState fileEditorState) {
}
@Override
public boolean isModified() {
return false;
}
@Override
public boolean isValid() {
return true;
}
@Override
public void addPropertyChangeListener(@NotNull PropertyChangeListener propertyChangeListener) {
}
@Override
public void removePropertyChangeListener(@NotNull PropertyChangeListener propertyChangeListener) {
}
@Override
public @Nullable FileEditorLocation getCurrentLocation() {
return null;
}
@Override
public void dispose() {
Disposer.dispose(this);
}
@Override
public <T> @Nullable T getUserData(@NotNull Key<T> key) {
return null;
}
@Override
public <T> void putUserData(@NotNull Key<T> key, @Nullable T t) {
}
@Override
public @Nullable VirtualFile getFile() {
return this.file;
}
}
提供商:
public class YourEditorProvider implements FileEditorProvider, DumbAware {
private static String EDITOR_TYPE_ID = "DiagramView";
@Override
public boolean accept(@NotNull Project project, @NotNull VirtualFile virtualFile) {
return true; //will accept all kind of files, must be specified
}
@Override
public @NotNull
FileEditor createEditor(@NotNull Project project, @NotNull VirtualFile virtualFile) {
return new YourEditor(virtualFile);
}
@Override
public @NotNull
@NonNls
String getEditorTypeId() {
return EDITOR_TYPE_ID;
}
@Override
public @NotNull
FileEditorPolicy getPolicy() {
return FileEditorPolicy.HIDE_DEFAULT_EDITOR;
}
}
最后将 FileEditorProvider 扩展名放入 pluxin.xml
:
<extensions defaultExtensionNs="com.intellij">
<fileEditorProvider implementation="classDiagramPainter.DiagramViewProvider"/>
</extensions>