Как вызвать контекстное меню для пустого выбора? - PullRequest
1 голос
/ 15 января 2012

Моя древовидная структура выглядит так, содержит три класса Index, Key, Value

Индекс1

 |
  -- Key1

 |
   -- Value1

index2

 |
  -- Key2

 |
   -- Value2

Я создаю контекстное меню для элемента указателя, в котором должно быть три действия (newKeyAction, newValueAction, removeAction)

и, щелкнув правой кнопкой мыши на пустом месте, должно появиться addAction.

Ответственный код:

 protected void fillContextMenu( IMenuManager manager )
 {
    ITreeSelection mySelection = (ITreeSelection) viewer.getSelection();
    if(mySelection.size() == 1)
        {   
        if(mySelection.getFirstElement() instanceof Index)
        {
            manager.add( newKeyAction );

            manager.add( newValueAction );

            manager.add( removeAction );

    }
       }
   else
   {
        manager.add( addAction);

   }

}

Все работает нормально, но addAction вызывается только один раз, когда treeViewer пуст, а затем, щелкнув правой кнопкой мыши пустое пространство, выбирается последний выбранный в дереве узел, и отображаются соответствующие действия.

Пожалуйста, дайте мне знать, где я иду не так.

1 Ответ

0 голосов
/ 16 января 2012

там после щелчка правой кнопкой мыши по пустому пространству выбирается последний выбранный в дереве узел и отображаются его соответствующие действия.

Это твоя проблема, и ты ничего не можешь с этим поделать. Просто невозможно очистить выделение таким образом. Вы должны найти другой способ сделать addAction доступным.

...