2014-12-18 3 views
0

Я попал в проблему с вложением меню и PersistedState. У меня не было проблем перед удалением флага -clearPersistedState из аргументов VM.Eclipse E4 - вклад в меню и PersistedState

Теперь приложение имеет странное поведение, вклад в меню начинает накапливать запись меню каждый раз, когда выполняется код.

Вот это виновный фрагмент кода, заключенный в Процессор:

MDirectMenuItem menuItem = MMenuFactory.INSTANCE.createDirectMenuItem(); 
    menuItem.setLabel("Another Exit"); 
    menuItem.setContributionURI("bundleclass://" 
      + "com.telespazio.optsat.wizard/" 
      + ExitHandlerWithCheck.class.getName()); 
    if (!menu.getChildren().contains(menuItem)) 
     menu.getChildren().add(menuItem); 

ответ

1

Пункты меню добавляются в модели приложения будут сохранены, так что вы должны проверить, если они уже существуют в меню. contains Проверьте, что вы в настоящее время этого не делаете.

Вам нужно проверить на совпадение метки (или вклад URI или идентификатор), что-то вроде:

List<MMenuElement> children = menu.getChildren(); 

boolean gotExisting = false; 

for (MMenuElement child : children) 
{ 
    if ("Another Exit".equals(child.getLabel()) 
    { 
     gotExisting = true; 
     break; 
    } 
} 

if (!gotExisting) 
{ 
    ... add to menu 
} 
+0

Спасибо, как раз для моего собственного любопытства, делает подход не расчистка Persistent Государство создает другое странное поведение? Я хотел сказать, что я должен ожидать после удаления флага? – unclejohn00

+0

Были проблемы с фрагментами, но они, возможно, были разрешены к настоящему времени. –

+0

Вы имеете в виду, что были некоторые ошибки? В принципе, я думаю, что флаг -clearPersistedState автоматически добавлен в мою конфигурацию самим Eclipse, потому что мне было интересно, что ... – unclejohn00

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