Как получить активное участие в определенном PartStack в Eclipse E4?

StackOverflow https://stackoverflow.com//questions/24017374

  •  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:

  1. введите epartservice

  2. Затем добирайтесь от активной части активной части.

  3. ИГЕР - это образец моего освежала.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top