2015-03-25 6 views
0

У меня есть редактор MyEditor, который расширяет AbstractDecoratedTextEditor. В eclipse я могу открыть много файлов MyEditor. Каждый файл представляет собой экземпляр MyEditor. Когда я нажимаю на вкладке, чтобы изменить файл, мне нужно выполнить те же действия экземпляра (файла), который откроется. То есть, мне нужно добавить слушателя в MyEditor, чтобы узнать, когда экземпляр (файл) стал активным.Добавление активного прослушивателя в AbstractDecoratedTextEditor

ответ

1

Вы можете использовать org.eclipse.ui.IPartListener, чтобы прослушать изменения деталей.

IPartService partService = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService(); 

partService.addPartListener(listener); 

Метод слушателя

public void partActivated(IWorkbenchPart part) 

будет вызываться, когда часть активирована, так что вы проверить здесь для вашего редактора.

Ваш редактор является экземпляром IWorkbenchPart, так что вы в `partActivated вы можете просто использовать

if (part instanceof MyEditor) 
{ 
    MyEditor editor = (MyEditor)part; 

    ... check which file this editor is editing 
    ... and do action if it is the required file 

} 
+0

Im пытается addPartListener по методу initializeEditor из AbstractDecoratedTextEditor. Но когда какой-то файл становится активным, все файлы запускают partActivated. Например, если у меня есть 4 файла в MyEditor и 1 файл становится активным, partActivated выполнялся 4 раза, по одному на файл. Я делаю что-то неправильно? Thx – computered

+1

Если у вас есть четыре редактора, которые открывают все прослушивания со своим собственным IPartListener, вы получите четыре вызова partActivated. Если вам нужен только один звонок, вам нужно организовать, чтобы слушатель добавлялся только один раз. –

+0

Если я добавлю только прослушиватель file1.txt и откройте его в MyEditor, partActivated был выполнен в file1.txt. Но если я открываю file2.txt и file3.txt без прослушивателя в MyEditor, всегда выполняется исполнитель файла file1.txt, даже если файл1.txt не был активирован. Возможно, мне нужно добавить слушателя для всех, но нужно проверить внутри partActivated, если файл действительно активен. Но как? Thx – computered

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