Мне нравится использовать историю навигации, предоставленную Eclipse, в моем приложении RCP. К сожалению, эта функция плохо документирована. На самом деле я нашел только эту запись в Вики :http://wiki.eclipse.org/FAQ_How_do_I_hook_my_editor_to_the_Back_and_Forward_buttons%3F
. В ней упоминается, что каждый редактор может быть отмечен в истории навигации без указания местоположения. Это именно то, что я хочу.
Независимо от того, поддерживает ли конкретный редактор историю переходов, markLocation будет работать. Если редактор не реализует INavigationLocationProvider, будет добавлена запись истории, позволяющая пользователю вернуться к этому редактору, но без возврата в какое-либо конкретное место.
Я добавил следующие строки кода в свое приложение, чтобы добавлять элемент навигации каждый раз, когда открывается новый редактор.
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorPart editor = page.openEditor( input, MyEditor.ID );
page.getNavigationHistory().markLocation( editor );
Моя проблема в том, что код не работает. Значки панели инструментов для команд org.eclipse.ui.navigate.backwardHistory
и org.eclipse.ui.navigate.forwardHistory
остаются серыми.