2015-12-01 3 views
0

Я создал собственное представление затмения и пытается добавить ссылку во всплывающем меню. Я могу добавить ссылку, но она неактивна. Интересно, как я могу активировать ссылку. Я просто хочу, чтобы можно было щелкнуть ссылку и запустить run(). DeleteAction - это класс, который я хочу вызвать. SegmentReferencesView - это представление, которое я создал. Будем очень благодарны за помощь.Ссылка org.eclipse.ui.popupMenus выделена серым цветом

Это из plugin.xml:

<extension point="org.eclipse.ui.popupMenus">  
    <viewerContribution  
     id="se.test.views.categories.segmentreferences.ui.views" 
     targetID="se.test.views.categories.segmentreferences.ui.views.SegmentReferencesView"> 
    <action 
      class="se.test.views.categories.segmentreferences.ui.views.DeleteAction" 
      enablesFor="1" 
      icon="icons/Delete.gif" 
      id="se.test.views.categories.segmentreferences.ui.views.DeleteReferenceAction" 
      label="Do action" 
      menubarPath="additions-ext"> 
    </action> 
    </viewerContribution> 

Это класс Java:

public class DeleteAction implements IViewActionDelegate { 

    @Override 
    public void init(org.eclipse.ui.IViewPart view) { 
     super.init(view);  
    }; 

    @Override 
    public void run(IAction action) {  
    } 
} 
+0

У вас есть ровно один элемент, выбранный в окне? Вы определили «поставщик выбора» для представления? –

+0

Да У меня есть один элемент, выбранный, когда я нажимаю на него правой кнопкой. Я не определил поставщика выбора. Вы знаете, как это сделать? (Спасибо, что убрали мой код. Первый раз на Stackowerflow.) – ElMonko

+0

Что, на ваш взгляд? Вы используете что-то вроде TreeViewer или TableViewer? –

ответ

0

Ваше мнение необходимо установить вид сайта 'Provider Selection'. Это используется системой меню, чтобы узнать, что выбрано. Если вы используете TableViewer или TreeViewer вы можете просто сделать:

getSite().setSelectionProvider(viewer); 

в коде представления сразу после того, как вы создали viewer (который должен быть TableViewer или TreeViewer).

+0

Где я могу получить зрителя? – ElMonko

+0

Вы сказали, что используете «TableViewer» - это то, что вы используете. –

+0

Код, который я разместил, это код, который у меня есть, плюс код для SegmentReferencesView и класс Activator, который расширяет AbstractUIPlugin. Как вы думаете, я мог бы каким-то образом получить TableViewer из метода init()? – ElMonko

0

Мне удалось найти ссылку на эту работу, расширив org.eclipse.core.commands.AbstractHandler в классе DeleteAction. Я не знаю, лучший ли это для этого, но сейчас он работает.

public class DeleteAction extends AbstractHandler implements IViewActionDelegate { 

    @Override 
    public void init(org.eclipse.ui.IViewPart view) { 
    // Not used 
    } 

    @Override 
    public void run(IAction action) {  
     System.out.println("run"); //$NON-NLS-1$ 
    } 

    @Override 
    public void selectionChanged(IAction action, ISelection selection) { 
     // Not used 
    } 

    @Override 
    public Object execute(ExecutionEvent event) throws ExecutionException { 
     return null; 
    } 

}

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