Eclipse自定义标记视图

时间:2012-09-20 11:18:08

标签: eclipse-pde eclipse-plugin

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

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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我做过类似的事情。首先在plugin.xml中定义一个View,相应的类必须扩展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”创建项目特定标记。