2014-10-27 3 views
1

Каждый плагин может определить свой собственный контент (через PartDescriptor), который должен быть добавлен в определенное место в моей заявке (в PartStashContainer). Может быть всегда один Part из плагинов, видимых в этом PartStashContainer.Eclipse RCP - какой предпочтительный способ изменить часть?

Я не могу найти то, что является предпочтительным способом достижения этого. Должен ли я каким-то образом заменить видимый в настоящее время Part новым Part плагином? Или просто настройте как-то содержимое уже видимого Part (может быть, через setContributionUri?).

Я смотрел EPartService. Похоже, он может создать экземпляр Part в соответствии с PartDescriptor, но у него есть только некоторые способы сделать видимым Part. Мне нужно добавить новый Part в существующий PartStashContainer и, возможно, удалить старый Part.

ответ

2

Для этого можно использовать EPartService и EModelService.

Если у вас есть только один экземпляр части с определенным идентификатором, вы можете использовать «часть» в модели приложения в качестве дочернего элемента «PartStack» и просто пометить его как «не отображаемый». Если вы хотите создать несколько частей с одним и тем же идентификатором, вы можете использовать «PartDescriptor».

Если у вас есть «часть» в модели приложения с пометкой «не отображается» вы можете показать, как это:

partService.showPart("part id", PartState.ACTIVATE); 

Если вы хотите, чтобы создать часть из «PartDescriptor» и поместить его в использовании части стека:

@Inject 
MApplication app; 


MPart part = partService.createPart("part descriptor id"); 

MPartStack stack = modelService.find("part stack id", app); 

stack.getChildren().add(part); 

partService.showPart(part, PartState.ACTIVATE); 

Чтобы скрыть использование части:

MPart part = partService.findPart("part id"); 

partService.hidePart(part); 
+0

но как eclipse знает, где я хочу показать эту часть? (в PartStashContainer). Похоже, вы не передаете какую-либо информацию об этом для вызова showPart. – Krab

+0

К сожалению, добавлен пример PartDescriptor –

+0

Точно то, что я хотел знать! Но 'PartService.ACTIVATE' в вашем верхнем примере должен быть изменен на' PartState.ACTIVATE' –

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