请问eclipse的plugin.xml编辑视图是怎么实现的?

时间:2021-08-08 23:05:37
下面还有Overview Dependencies Runtime Extensions等tab可以选择,且数据源自多个文件。

8 个解决方案

#1


0.专业说法叫编辑器,不叫视图。编辑器和视图有严格的区别

1. MultipageEditor
由于它又用了Forms,所以实际继承的是FormEditor,FormEditor继承自MuiltiPageEditor
2. 多个文件其实是自己实现的,双击文件打开传入编辑器的就只有一个,由于plugin.xml和MANIFEST.MF文件是固定的,所以编辑器可以通过其中一个文件检查另外一个是否存在。

#2


org.eclipse.ui.editors里面是不是不支持定义多个editor的

   <extension point="org.eclipse.ui.editors">
      <?gmfgen generated="true"?>
      <editor
         id="com.huawei.hacontrol.hostmanager.HostManagerEditorID"
         name="主机管理"
         icon="icons/MindmapDiagramFile.gif"
         extensions="mindmap_diagram"
         default="true"
         class="com.huawei.hacontrol.hostmanager.HostManageEditor"
         matchingStrategy="com.huawei.hacontrol.part.MindmapMatchingStrategy"
         contributorClass="com.huawei.hacontrol.part.MindmapDiagramActionBarContributor">
      </editor>
      <editor
         id="com.huawei.hacontrol.part.MindmapDiagramEditorID"
         name="HA监控"
         icon="icons/MindmapDiagramFile.gif"
         extensions="mindmap_diagram"
         default="true"
         class="com.huawei.hacontrol.part.MindmapDiagramEditor"
         matchingStrategy="com.huawei.hacontrol.part.MindmapMatchingStrategy"
         contributorClass="com.huawei.hacontrol.part.MindmapDiagramActionBarContributor">
      </editor>
   </extension>

#3


支持的,但是你的编辑器 
extensions="mindmap_diagram" default="true"
每个都一样的话,就同时只能有一个是作为.mindmap_diagram文件的默认编辑器,其他的都只能通过右键-->Open With来打开
建议注册不同的扩展名

#4


谢谢,这个问题已经搞定了,是ID写错了。
还有一个问题咨询一下。我的eclipse里面的create new visual classes点了后,为什么SWT、JFace、RCP、Form、Swing的下一层全部是灰的呢?不能使用,是不是什么插件没有安装。

#5


灰的?没遇到过这种情况。

应该不是插件没装的问题,插件没装的话,根本就不会有这个向导

#6


我现在要操作同一个文件,但是需要在不同view来显示。
IEditorPart EditorPart = page.openEditor(new URIEditorInput(fileURI), editorDescriptor.getId(), true, 1);
最后一个参数用1,问题是只能出一个视图,如果用0,对应的调用不到所有的MindmapDocumentProvider的createElementInfo方法,这里的info不等于null了。
请大狭指导一下方向,应该如何处理?不胜感激。


public final void connect(Object element) throws CoreException {
ElementInfo info= (ElementInfo) fElementInfoMap.get(element);
if (info == null) {

info=  createElementInfo(element);
if (info == null)
info= new ElementInfo(null);

info.fElement= element;

addUnchangedElementListeners(element, info);

fElementInfoMap.put(element, info);
if (fElementInfoMap.size() == 1)
connected();
}
++ info.fCount;
}

#7


MindmapDocumentProvider是GMF样例生成的,com.huawei.hacontrol.part.MindmapDiagramEditor类也是GMF样例,类com.huawei.hacontrol.hostmanager.HostManageEditor是我自己的。

#8


但是需要在不同view来显示。
说错了。需要在不同的edit中显示。一个edit(MindmapDiagramEditor)继承于DiagramDocumentEditor,一个edit(HostManageEditor)继承于FormEditor。这两个edit共同基于同一个文件。在edit左边是树,双击不同的节点显示不同的edit。

#1


0.专业说法叫编辑器,不叫视图。编辑器和视图有严格的区别

1. MultipageEditor
由于它又用了Forms,所以实际继承的是FormEditor,FormEditor继承自MuiltiPageEditor
2. 多个文件其实是自己实现的,双击文件打开传入编辑器的就只有一个,由于plugin.xml和MANIFEST.MF文件是固定的,所以编辑器可以通过其中一个文件检查另外一个是否存在。

#2


org.eclipse.ui.editors里面是不是不支持定义多个editor的

   <extension point="org.eclipse.ui.editors">
      <?gmfgen generated="true"?>
      <editor
         id="com.huawei.hacontrol.hostmanager.HostManagerEditorID"
         name="主机管理"
         icon="icons/MindmapDiagramFile.gif"
         extensions="mindmap_diagram"
         default="true"
         class="com.huawei.hacontrol.hostmanager.HostManageEditor"
         matchingStrategy="com.huawei.hacontrol.part.MindmapMatchingStrategy"
         contributorClass="com.huawei.hacontrol.part.MindmapDiagramActionBarContributor">
      </editor>
      <editor
         id="com.huawei.hacontrol.part.MindmapDiagramEditorID"
         name="HA监控"
         icon="icons/MindmapDiagramFile.gif"
         extensions="mindmap_diagram"
         default="true"
         class="com.huawei.hacontrol.part.MindmapDiagramEditor"
         matchingStrategy="com.huawei.hacontrol.part.MindmapMatchingStrategy"
         contributorClass="com.huawei.hacontrol.part.MindmapDiagramActionBarContributor">
      </editor>
   </extension>

#3


支持的,但是你的编辑器 
extensions="mindmap_diagram" default="true"
每个都一样的话,就同时只能有一个是作为.mindmap_diagram文件的默认编辑器,其他的都只能通过右键-->Open With来打开
建议注册不同的扩展名

#4


谢谢,这个问题已经搞定了,是ID写错了。
还有一个问题咨询一下。我的eclipse里面的create new visual classes点了后,为什么SWT、JFace、RCP、Form、Swing的下一层全部是灰的呢?不能使用,是不是什么插件没有安装。

#5


灰的?没遇到过这种情况。

应该不是插件没装的问题,插件没装的话,根本就不会有这个向导

#6


我现在要操作同一个文件,但是需要在不同view来显示。
IEditorPart EditorPart = page.openEditor(new URIEditorInput(fileURI), editorDescriptor.getId(), true, 1);
最后一个参数用1,问题是只能出一个视图,如果用0,对应的调用不到所有的MindmapDocumentProvider的createElementInfo方法,这里的info不等于null了。
请大狭指导一下方向,应该如何处理?不胜感激。


public final void connect(Object element) throws CoreException {
ElementInfo info= (ElementInfo) fElementInfoMap.get(element);
if (info == null) {

info=  createElementInfo(element);
if (info == null)
info= new ElementInfo(null);

info.fElement= element;

addUnchangedElementListeners(element, info);

fElementInfoMap.put(element, info);
if (fElementInfoMap.size() == 1)
connected();
}
++ info.fCount;
}

#7


MindmapDocumentProvider是GMF样例生成的,com.huawei.hacontrol.part.MindmapDiagramEditor类也是GMF样例,类com.huawei.hacontrol.hostmanager.HostManageEditor是我自己的。

#8


但是需要在不同view来显示。
说错了。需要在不同的edit中显示。一个edit(MindmapDiagramEditor)继承于DiagramDocumentEditor,一个edit(HostManageEditor)继承于FormEditor。这两个edit共同基于同一个文件。在edit左边是树,双击不同的节点显示不同的edit。