2016-05-28 1 views
0

Iam создает плагин eclipse с настраиваемым текстовым редактором. Используемая строка состояния contibutor iam является стандартной. и эти поля являются Standard Eclipse statusbarВ строке состояния 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

ответ

1

Вы должны определить вы владеете редактор, который расширяет BasicTextEditorActionContributor, чтобы получить стандартные поля статуса.

Override contributeToStatusLine и добавлять новые элементы в строке состояния взносов для дополнительных элементов:

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

    statusLineManager.add(item); 
} 

где item является StatusLineContributionItem, который вы должны создать в панели действий вкладчика construtor:

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); 
+0

он работал !!, большое спасибо. однако поле получает pdated только тогда, когда я вызываю метод для его обновления, когда файл gettng изменен. а не в то время, когда редактор получает фокус ... я пытаюсь это сделать. но любая помощь приветствуется. –

Смежные вопросы