Eclipse插件自定义视图标记数

时间:2014-02-25 11:27:09

标签: java eclipse eclipse-plugin marker

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

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

Eclipse Markers http://www.imageupload.co.uk/images/2014/02/27/Markers.png

如何增加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>

我有三个java文件,如下图所示:

First File Code. http://www.imageupload.co.uk/images/2014/02/27/Untitled1z3Sd6.png

Second File Code. http://www.imageupload.co.uk/images/2014/02/27/Untitled2.png

Third File Code. http://www.imageupload.co.uk/images/2014/02/27/Untitled3.png

2 个答案:

答案 0 :(得分:3)

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

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

您可以通过为命令ID org.eclipse.ui.ide.configureFilters添加菜单项来显示此过滤器配置对话框。

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

<extension
     point="org.eclipse.ui.menus">
   <menuContribution
        locationURI="menu:org.eclipse.ui.views.ProblemView">
     <command
           commandId="org.eclipse.ui.ide.configureFilters"
           mnemonic="%command.configureFilters.mnemonic"
           style="push">
     </command>
  </menuContribution>
</extension>

你应该可以为你的观点做类似的事情。

答案 1 :(得分:1)

ExtendedMarkersView从PreferenceStore获取限制数。你必须改变价值。

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

    IDEWorkbenchPlugin.getDefault().getPreferenceStore().setValue(
            IDEInternalPreferences.USE_MARKER_LIMITS, false);

如果更改MarkerView的限制,请按如下方式编写代码:

    IDEWorkbenchPlugin.getDefault().getPreferenceStore()
            .setValue(IDEInternalPreferences.MARKER_LIMITS_VALUE, 200);

注意:

更改PreferenceStore的值时,将更改MarkerView的所有限制。 如果您不想更改它,则必须自行覆盖ExtendedMarkersView#getStatusMessage。

编辑:

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

Add Required Plug-ins