Неприятный способ: полагается, что реализация класса StatusLine не меняется, поэтому действуйте с осторожностью:
StatusLineManager.getControl () возвращает StatusLine (защищенный пакетом), однако он является подклассом составного, что означаетВы можете вызвать getChildren (), и один из этих детей будет CLabel, содержащим сообщение.
Это ужасно хакерский.
Более хороший способ, но больше работы:
Из документации StatusLineManager говорится, что клиенты могут создавать подклассы для предоставления различных макетов, поэтому, вероятно, вы можете создать подкласс этого класса и предоставить средства для представления последнего статуса.message.
Если вы создаете RCP, вы должны создать подкласс WorkbenchWindowAdvisor, у которого есть конструктор:
public WorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) ...
Из конструктора вы можете вызвать:
configurer.setPresentationFactory(factory);
Обратите внимание, из моих javadocs:
Deprecated. the presentation factory is now obtained via extension point and a preference on org.eclipse.ui specifying which one to use; see IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID
Так что вы можете вместо этого исследовать эту точку расширения.
фабричный объект должен быть вашим собственным подклассом AbstractPresentationFactory (или действительно WorkbenchPresentationFactory), переопределяя этометод:
public IStatusLineManager createStatusLineManager() {
return new StatusLineManager();
}
для возврата вашего собственного подкласса StatusLineManager.
ПРИМЕЧАНИЕ. Я использую Eclipse 3.4.2, поэтому дважды проверьте документы на предмет используемой вами версии.