Java Eclipse插件自定义视图标记数

Java Eclipse插件自定义视图标记数,java,eclipse,eclipse-plugin,marker,Java,Eclipse,Eclipse Plugin,Marker,我创建了一个新的Eclipse插件,它安装了一个新视图。 经过一些操作后,我用标记填充此视图 该视图仅显示前100个标记,如下图所示: 我怎样才能增加100个标记的限制 下面是我如何实现该视图的: plugin.xml: <extension id="code_presentation.marker" name="Code Presentation Markers" point="org.eclipse.core.resourc

我创建了一个新的Eclipse插件,它安装了一个新视图。 经过一些操作后,我用标记填充此视图

该视图仅显示前100个标记,如下图所示:

我怎样才能增加100个标记的限制

下面是我如何实现该视图的:

plugin.xml:

   <extension
         id="code_presentation.marker"
         name="Code Presentation Markers"
         point="org.eclipse.core.resources.markers">
      <persistent
            value="true">
      </persistent>
      <super
            type="org.eclipse.core.resources.textmarker">
      </super>
      <attribute
            name="owner">
      </attribute>
   </extension>
   <extension
         point="org.eclipse.ui.editors.annotationTypes">
      <type
            markerSeverity="0"
            markerType="code_presentation.marker"
            name="code_presentation.marker.type">

      </type>
   </extension>
  <extension
         point="org.eclipse.ui.editors.markerAnnotationSpecification">
      <specification
         annotationType="code_presentation.marker.type"
         colorPreferenceKey="code_presentation.marker.type.color"
         colorPreferenceValue="255,255,0"
         contributesToHeader="true"
         highlightPreferenceKey="code_presentation.marker.type.highlight"
         highlightPreferenceValue="false"
         includeOnPreferencePage="true"
         isGoToNextNavigationTargetKey="code_presentation.marker.type.nextnavigation"
         isGoToNextNavigationTarget="true"
         isGoToPreviousNavigationTargetKey="code_presentation.marker.type.previousnavigation"
         isGoToPreviousNavigationTarget = "true"
         icon="icons/Code_Presentation_Small.png"
         label="Qac error marker"
         overviewRulerPreferenceKey="code_presentation.marker.type.overview"
         overviewRulerPreferenceValue="true"
         presentationLayer="0"
         textPreferenceKey="code_presentation.marker.type.text"
         textPreferenceValue="false"
         textStylePreferenceValue="BOX"
         verticalRulerPreferenceKey="code_presentation.marker.type.ruler"
         verticalRulerPreferenceValue="true">
      </specification>
   </extension>
   <extension 
      point="org.eclipse.ui.views"> 
      <view 
         class="code_presentation.markersview.MyCustomMarkersView" 
         icon="icons/Code_Presentation_Small.png" 
         id="code_presentation.markersview.customMarker" 
         name="Code Presentation Markers"> 
      </view> 
   </extension>
   <extension 
      point="org.eclipse.ui.ide.markerSupport"> 
    <markerField 
      class="code_presentation.markersview.JustificationField" 
      id="code_presentation.markersview.Justificationfield" 
      name="Justification"> 
    </markerField>
    <markerContentGenerator 
      id="code_presentation.markersview.myCustomMarkerGenerator" 
      name="My Marker Generator"> 
       <markerTypeReference 
             id="code_presentation.marker"/>
       <markerFieldReference 
             id="org.eclipse.ui.ide.priorityField"/> 
       <markerFieldReference 
             id="org.eclipse.ui.ide.severityAndDescriptionField"/> 
       <markerFieldReference 
             id="org.eclipse.ui.ide.resourceField"/>
       <markerFieldReference 
             id="org.eclipse.ui.ide.locationField"/> 
       <markerFieldReference 
             id="code_presentation.markersview.justificationfield"/> 
    </markerContentGenerator>  
   </extension>


限制是在
org.eclipse.ui.internal.views.markers.MarkerContentGenerator
中设置的,但这是一个内部类,因此无法直接访问

唯一设置限制的是
org.eclipse.ui.internal.views.markers.FiltersConfigurationDialog
,它也是内部的

您可以通过添加命令id
org.eclipse.ui.ide.configureFilters
的菜单贡献来显示此过滤器配置对话框

这是Problems View plugin.xml菜单定义的一部分,它链接到过滤器菜单:



您应该能够为视图执行类似的操作。

限制在
org.eclipse.ui.internal.views.markers.MarkerContentGenerator中设置,但这是一个内部类,因此无法直接访问

唯一设置限制的是
org.eclipse.ui.internal.views.markers.FiltersConfigurationDialog
,它也是内部的

您可以通过添加命令id
org.eclipse.ui.ide.configureFilters
的菜单贡献来显示此过滤器配置对话框

这是Problems View plugin.xml菜单定义的一部分,它链接到过滤器菜单:



您应该能够为视图执行类似的操作。

ExtendedMarkersView从PreferenceStore获取限制数。您必须更改该值

如果禁用MarkerView的限制,请编写如下代码:

    IDEWorkbenchPlugin.getDefault().getPreferenceStore().setValue(
            IDEInternalPreferences.USE_MARKER_LIMITS, false);
    IDEWorkbenchPlugin.getDefault().getPreferenceStore()
            .setValue(IDEInternalPreferences.MARKER_LIMITS_VALUE, 200);
如果更改MarkerView的限制,请编写如下代码:

    IDEWorkbenchPlugin.getDefault().getPreferenceStore().setValue(
            IDEInternalPreferences.USE_MARKER_LIMITS, false);
    IDEWorkbenchPlugin.getDefault().getPreferenceStore()
            .setValue(IDEInternalPreferences.MARKER_LIMITS_VALUE, 200);
注意: 当您更改PreferenceStore的值时,MarkerView的所有限制都将更改。 如果不想更改它,则必须自己重写ExtendedMarkersView#getStatusMessage

编辑:

在使用
IDEWorkbenchPlugin
之前,将
org.eclipse.ui.ide
包添加到
plugin.xml
中所需的插件中


ExtendedMarkersView从PreferenceStore获取限制数量。您必须更改该值

如果禁用MarkerView的限制,请编写如下代码:

    IDEWorkbenchPlugin.getDefault().getPreferenceStore().setValue(
            IDEInternalPreferences.USE_MARKER_LIMITS, false);
    IDEWorkbenchPlugin.getDefault().getPreferenceStore()
            .setValue(IDEInternalPreferences.MARKER_LIMITS_VALUE, 200);
如果更改MarkerView的限制,请编写如下代码:

    IDEWorkbenchPlugin.getDefault().getPreferenceStore().setValue(
            IDEInternalPreferences.USE_MARKER_LIMITS, false);
    IDEWorkbenchPlugin.getDefault().getPreferenceStore()
            .setValue(IDEInternalPreferences.MARKER_LIMITS_VALUE, 200);
注意: 当您更改PreferenceStore的值时,MarkerView的所有限制都将更改。 如果不想更改它,则必须自己重写ExtendedMarkersView#getStatusMessage

编辑:

在使用
IDEWorkbenchPlugin
之前,将
org.eclipse.ui.ide
包添加到
plugin.xml
中所需的插件中



我们需要更多的信息。这是你写的观点吗?它是基于一些现有的观点吗?顶部的一行表示你有一个过滤器处于活动状态,它限制了内容。我已经更新了评论。如果有任何多余或必要的步骤,请告诉我。或者如果有更简单的方法来实现同样的目标。谢谢:)对不起,我更新了问题*而不是“评论”:我们需要更多的信息。这是你写的观点吗?它是基于一些现有的观点吗?顶部的一行表示你有一个过滤器处于活动状态,它限制了内容。我已经更新了评论。如果有任何多余或必要的步骤,请告诉我。或者如果有更简单的方法来实现同样的目标。谢谢:)对不起,我更新了问题*而不是“评论”:我已经理解了你的前两段。请您详细说明如何实现第三个目标?我是Eclipse插件开发的新手。我已经更新了问题图片链接,因为它们没有显示在我这边。我还是不明白你的建议。我已经把你的代码放在我的XML中,我没有注意到任何变化。我已经理解了你的前两段。请您详细说明如何实现第三个目标?我是Eclipse插件开发的新手。我已经更新了问题图片链接,因为它们没有显示在我这边。我还是不明白你的建议。我已经把你的代码放在我的XML中,我没有注意到任何更改。我已经更新了问题图片链接,因为它们没有显示在我的侧边。我到底应该在哪里调用该函数?我在构造函数中调用了它,但它无法识别
IDEWorkbenchPlugin
。您可以从或方法调用它。我尝试了此操作,但无法识别
IDEWorkbenchPlugin
。这就是为什么我问:)也许你没有在
plugin.xml
中添加所需的插件。我编辑了答案。在E4中,另一种方法是将XML属性markerLimitEnabled=“false”添加到Application.e4xmi文件中persistedState->memento值的根“view”XML元素中。这样做的好处是只影响你的标记视图。我已经更新了问题图像链接,因为它们没有显示在我的侧边。我到底应该在哪里调用该函数?我在构造函数中调用了它,但它无法识别
IDEWorkbenchPlugin
。您可以从或方法调用它。我尝试了此操作,但无法识别
IDEWorkbenchPlugin
。这就是为什么我问:)也许你没有在
plugin.xml
中添加所需的插件。我编辑了答案。在E4中,另一种方法是将XML属性markerLimitEnabled=“false”添加到Application.e4xmi文件中persistedState->memento值的根“view”XML元素中。这样做的优点是只影响标记视图。