Есть ли способ запускать класс каждый раз, когда страница редактора получает фокус, что-то вроде сообщения с подсказкой, когда источник класса изменился за пределами затмения?Может ли плагин редактор или расширение сделать эту работу?
FAQ " Как узнать, какой вид или редактор выбран? " может помочь вам позвонить в ваш класс, когда редактор активен (то есть, когда вы можете проверить, есть ли у него фокус), с использованием IPartService:
IPartService
В службу обработки деталей могут быть добавлены два типа слушателей:
IPartListener
IPartListener2
Вы всегда должны использовать этот второй, поскольку он может обрабатывать события смены деталей на деталях, которые еще не были созданы, поскольку они скрыты в стеке за другой деталью . Этот слушатель также сообщит вам, когда деталь становится видимой или скрытой или когда изменяется ввод редактора:
IWorkbenchPage page = ...; //the active part IWorkbenchPart active = page.getActivePart(); //adding a listener IPartListener2 pl = new IPartListener2() { public void partActivated(IWorkbenchPartReference ref) System.out.println("Active: "+ref.getTitle()); } ... other listener methods ... }; page.addPartListener(pl);
Примечание: IWorkbenchPageреализует IPartService напрямую. Вы также можете получить доступ к услуге активации с помощью , используя IWorkbenchWindow.getPartService().
IWorkbenchPage
IWorkbenchWindow.getPartService()
Я щелкаю по Панели инструментов или Кнопке, чтобы получить представление о том, какой вид или редактор в данный момент работают с RCP eclipse
//class:Current_Workbech extends AbstractHandler to execute() method public class Current_Workbech extends AbstractHandler{ @Override public Object execute(ExecutionEvent event) throws ExecutionException { IPartService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService(); //MessageDialog box open to get title which view or editor focus and current working MessageDialog.openInformation(HandlerUtil.getActiveWorkbenchWindow( event).getShell(), "Current Workbench Window", service.getActivePart().getTitle()+""); return null; } }