Как получить активную часть в конкретном стакане в eclipse e4?

1

У меня есть кнопка, которая создает части. Мне нужно получить активную часть, которая в настоящее время отображается в стеке элементов, и я сохраняю ее как ключ для некоторого значения. Как мне принять активное участие? Я использовал следующий код, но он получает все части в детали.

            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);
                }
            }
Теги:
eclipse-rcp
e4

3 ответа

3
Лучший ответ

Из MPart вы можете получить свой контейнер напрямую:

final MElementContainer<MUIElement> container = part.getParent();

(это будет MPartStack)

Затем вы можете получить стеки, выбранные в данный момент, с помощью:

MUIElement selected = container.getSelectedElement();
2

Использование родителя части и ее выбранного элемента также сработало для меня. partService.getActivePart() не работает, потому что в нашем приложении у нас есть несколько стеков частей, и мне нужна была часть из стека частей, которая в данный момент не была сосредоточена. Я также должен был включить MUIElement в MPart, потому что мне нужно было вернуть MPart, это не было проблемой, поскольку MPart распространяется от MUIElement. Здесь мой код: Изображение 174551

0

Я нашел ответ. Теперь работает.

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);
            }
        }

Мы должны использовать функцию обслуживания для проверки определенного стека, видимого или нет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню