Динамическое создание детали при нажатии на последнюю деталь (вкладку) в eclipse e4

1

Я создал две части в частичной загрузке. Все части используют тот же вклад uri. Мне нужно, чтобы третья часть говорила "Добавить новую часть" (или вкладку), когда она нажата, она должна динамически создавать новую часть и устраиваться после первых двух частей, а затем снова часть "Добавить новую часть" должна появиться на конец. Поэтому всякий раз, когда нажимается "Добавить новую часть", она должна создавать новую часть. Для части "Добавить новую часть" добавлен следующий код.

MPart part = partService.createPart("com.abc.xyz.project.partDescriptor.DynamicPart");
MPartStack stack = (MPartStack)modelService.find("com.abc.xyz.project.partstack.2", application);
     stack.getChildren().add(part);
            part.setLabel("New Dynamic Part");
    part.setVisible(true);
    part.setCloseable(true);
    partService.showPart(part, PartState.ACTIVATE);

Может ли кто-нибудь предложить мне некоторые идеи?

заранее спасибо

Теги:
e4

2 ответа

2

Создайте "Добавить новую деталь" динамически, как в примере (пример для входной части):

MPartStack stack = (MPartStack) modelService.find("your.part.stack.id", application);
inputPart = MBasicFactory.INSTANCE.createInputPart();
inputPart.setContributionURI("bundleclass://your.plugin/your.class");
inputPart.setCloseable(isCloseable);
stack.getChildren().add(inputPart);
inputPart.setLabel("Add new part");

"bundleclass://your.plugin/your.class" - это ссылка на ваш класс для содержания вашей части. Это похоже на поле "URI класса" в редакторе фрагментов. Приведенный выше код добавляет новую вкладку в стек части, но не активирует часть, поэтому метод @Postconstruct в классе контента не вызывается. Когда пользователь нажимает на вкладку, вызывается метод @Postconstruct. Там вы можете снова создать новую часть.

  • 0
    Но это создает часть динамически только один раз. Я хочу создавать деталь динамически каждый раз при нажатии на вкладку. Это означает, что при нажатии на вкладку «Добавить новую деталь» количество деталей в стакане должно увеличиваться еще на 1 деталь.
  • 0
    Как я уже упоминал, если вы вставите этот код в метод @Postconstruct, вы будете получать новую вкладку каждый раз, когда пользователь нажимает на ранее созданную вкладку.
Показать ещё 3 комментария
0

Создайте дескриптор части в модели приложения, описывающей часть, которую вы хотите добавить.

Используйте EPartService для создания части:

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

Добавьте созданную часть в MPartStack определенную в вашей модели приложения, вы можете найти стек, используя EModelService

MPartStack stack = (MPartStack)modelService.find(stack id, application);

stack.getChildren().add(part);

Убедитесь, что вы Multiple параметр " Multiple в определении описания части, если вы хотите создать несколько частей из описания.

  • 0
    В PartDescriptor я должен добавить часть, которую я создал, или класс, который создает часть динамически? Какие свойства PartDescriptor я должен настроить?
  • 0
    Дескриптор детали настроен так же, как и деталь, за исключением того, что вы поместили его в раздел дескрипторов детали модели приложения. Это полное описание части, которую вы хотите создать динамически.
Показать ещё 3 комментария

Ещё вопросы

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