在 Eclipse 状态栏中有没有办法包含一个新的状态字段(比如文件的行定界符)?

In Eclipse statusbar is there a way to include a new statusfield (say the file's line delimiters )?

我正在使用自定义文本编辑器编写一个 eclipse 插件。我使用的状态栏贡献者是默认的。显示的这些字段是

我相信他们是因为 org.eclipse.ui.part.EditorActionBarContributor

中的以下内容
/**
 * The status fields to be set to the editor
 * @since 3.0
 */
private final static StatusFieldDef[] STATUS_FIELD_DEFS= {
    new StatusFieldDef(ITextEditorActionConstants.STATUS_CATEGORY_FIND_FIELD, null, false, EditorMessages.Editor_FindIncremental_reverse_name.length() + 15),
    new StatusFieldDef(ITextEditorActionConstants.STATUS_CATEGORY_ELEMENT_STATE, null, true, StatusLineContributionItem.DEFAULT_WIDTH_IN_CHARS + 1),
    new StatusFieldDef(ITextEditorActionConstants.STATUS_CATEGORY_INPUT_MODE, ITextEditorActionDefinitionIds.TOGGLE_OVERWRITE, true, StatusLineContributionItem.DEFAULT_WIDTH_IN_CHARS),
    new StatusFieldDef(ITextEditorActionConstants.STATUS_CATEGORY_INPUT_POSITION, ITextEditorActionConstants.GOTO_LINE, true, StatusLineContributionItem.DEFAULT_WIDTH_IN_CHARS)
};

我的问题是如何为 linedelimiter 类型添加一个新的状态字段

您应该定义自己的编辑器操作栏贡献者,它扩展 BasicTextEditorActionContributor 以获得标准状态字段。

覆盖 contributeToStatusLine 并为您的额外项目添加新的状态行贡献项目:

@Override
public void contributeToStatusLine(IStatusLineManager statusLineManager) {
  super.contributeToStatusLine(statusLineManager);

  statusLineManager.add(item);
}

其中 item 是一个 StatusLineContributionItem,您应该在操作栏贡献者构造器中创建它:

item = new StatusLineContributionItem("id", true, width in characters);

setActiveEditor 方法中,您应该为项目设置操作并告诉编辑器状态字段:

@Override
public void setActiveEditor(IEditorPart part) {

  // TODO check this is your editor

  item.setActionHandler(... get action handler from editor...);

  ITextEditorExtension extension = (ITextEditorExtension)part;
  extension.setStatusField(item, "id");
}

在扩展 TextEditor 的主编辑器代码中,您可以调用

IStatusField statusField = getStatusField("id");

statusField.setText("text");
statusField.setImage(image);