Как получить активное участие в определенном PartStack в Eclipse E4?
-
21-12-2019 - |
Вопрос
У меня есть кнопка, которая создает детали.Мне нужно получить активную часть, которая в настоящее время видима в стеке Part, и я храним его в качестве ключа для некоторого значения.Как я должен получить активную часть? Я использовал следующий код, но он получает все детали в PartStack.
MPart graphpart = partService
.createPart("com.abc.xyz.project.partDescriptor.1");
MPartStack stack = (MPartStack) modelService.find(
"com.abc.xyz.project.partstack.2", application);
for (int i = 0; i < stack.getChildren().size(); i++) {
if (stack.getChildren().get(i).isVisible()) {
System.out.println("values"
+ ((MPart) stack.getChildren().get(i)).getLabel());
application.getTransientData().put(
((MPart) stack.getChildren().get(i)).getLabel(),
selectedFiles);
}
}
. Решение
от генеракодицетагкода вы можете получить его контейнер непосредственно с:
final MElementContainer<MUIElement> container = part.getParent();
.
(это будет генеракодицетагкод)
Вы можете получить стеки в настоящее время выбранные ребенка с:
MUIElement selected = container.getSelectedElement();
. Другие советы
Использование родителя части и его выбранный элемент также работал для меня.Partservice.get ActivePart () не работал, потому что в нашем приложении у нас есть несколько стоптов деталей, и мне нужна часть из части части, который не был в фокусе в этот момент. Мне также пришлось бросить Muielement к MPART, потому что мне нужно было вернуть MPART, это не было проблемой, поскольку MPART простирается от мюэлемента. Вот мой код:
Я нашел ответ.Это работает сейчас.
for (int i = 0; i < stack.getChildren().size(); i++) {
if (partService.isPartVisible((MPart) stack.getChildren().get(i))) {
System.out.println("Storage of values"
+ ((MPart) stack.getChildren().get(i)).getLabel());
application.getTransientData().put(
((MPart) stack.getChildren().get(i)).getLabel(),
selectedFiles);
}
}
.
Мы должны использовать использование деталей для проверки определенного стека или нет.
Это довольно просто с Eclipse e4:
-
введите epartservice
-
Затем добирайтесь от активной части активной части.
ИГЕР - это образец моего освежала.
public class RefreshHandler {
@Inject
EModelService modelService;
@Inject
MWindow window;
@Inject
IEventBroker broker;
@Inject
EPartService partService;
@Execute
public void execute() {
System.out.println(this.getClass().getSimpleName() + " called");
MPart activePart = partService.getActivePart();
if(activePart != null) {
System.out.println("--->" + activePart.getElementId());
}
}
@CanExecute
public boolean canExecute() {
MPerspective activePerspective = modelService.getActivePerspective(window);
if (activePerspective != null && activePerspective.getElementId()
.equals(IApplicationUIElementID.PERSPECTIVE_WORKINGSTORE_ID)) {
return true;
}
return false;
}
}
.