【问题标题】:Eclipse Custom Marker ViewEclipse 自定义标记视图
【发布时间】:2012-09-20 11:18:08
【问题描述】:

我正在尝试创建自定义标记视图。在此视图中,我只想将资源限制/过滤到选定项目。此项目名称将动态提供。

例如,在项目浏览器的上下文菜单中,用户可以选择打开自定义标记视图。

如果用户从 project1 中选择自定义标记视图,该视图应该只显示 project1 的标记。

有什么建议吗?

【问题讨论】:

    标签: eclipse-pde eclipse-plugin


    【解决方案1】:

    我做过类似的事情。首先在您的 plugin.xml 中定义一个视图,相应的类必须扩展 MarkerSupportView。像这样的:

    public class MarkerView extends MarkerSupportView {
    
    public MarkerView() {
        super("com.example.markerEventContentGenerator"); //$NON-NLS-1$
    
    }
    }
    

    然后您需要定义新视图中的列以及必须显示的标记类型。这是 plugin.xml 中的一个示例。

     <extension
       point="org.eclipse.ui.ide.markerSupport">
    <markerContentGenerator
          id="com.example.markerEventContentGenerator"
          name="Custom Marker View">
        <markerTypeReference 
         id="com.example.myMarker"/>
    </markerContentGenerator>
    <markerField
          class="com.example.fields.NameMarkerField"
          id="com.example.field.name"
          name="Name">
    </markerField>
    </extension>
    

    NameMarkerField 类必须扩展 MarkerField。另一个虚拟示例:

    public class AnnotationNameMarkerField extends MarkerField {
    
    public AnnotationNameMarkerField() {
        super();
    }
    
    @Override
    public String getValue(final MarkerItem item) {
        return "Dummy Name";
    }
    
    /*
     * (non-Javadoc)
     *
     * @see
     * org.eclipse.ui.views.markers.MarkerField#getDefaultColumnWidth(org.eclipse
     * .swt.widgets.Control)
     */
    @Override
    public int getDefaultColumnWidth(final Control control) {
        return 400;
    }
    }
    

    现在您必须决定如何使用 id="com.example.myMarker" 创建项目特定标记。

    【讨论】:

    • 谢谢。我只是不知道应该在哪里定义MarkerView?什么时候创建的?
    • MarkerView 是普通视图。您需要在插件中创建它并将其注册为 plugin.xml 作为扩展点:org.eclipse.ui.view。然后您将能够在 Show View Dialog 上看到 View (Window --> Show View --> Other View...)
    • &lt;markerField 的 ID 应该是什么? I see 有像 id="org.eclipse.ui.ide.resourceField" 这样的标准 ID。我应该选择哪一个?他们还说我必须使用markerFieldReference 而不是markerFieldReference 并在markerContentGenerator 中执行它,而不是它的兄弟。
    • 据我所知,resourceField 将显示在问题视图中。这就是我使用自定义 ID 的原因。你需要尝试一下。请让我知道是否是这种情况..
    • 好的,您可以通过page.showView("view id")显示视图。此视图 ID 对应于&lt;extension point="org.eclipse.ui.views"&gt; 中的 plugin.xml 中指定的 ID。您可以通过IMarker marker = aResource.createMarker("marker type id"); marker.setAttribute("your column id", value); 添加标记。标记类型是 xml markerContentGenerator 部分中指定的类型,&lt;markerTypeReference id="marker type id"/&gt;。 Eclipse 的典型问题是文档过于零碎。将各个部分联系在一起需要时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 2011-07-18
    • 2014-01-03
    • 1970-01-01
    相关资源
    最近更新 更多