Scout Eclipse расширяет меню

У меня есть один основной проект и еще один проект, который расширяет ядро. Я знаю, как расширить план и как добавить страницы в расширенный план, но мои проблемы — это меню.

Я хотел бы расширить меню в расширенном проекте.

Я нахожу пример в Интернете и думаю, что понимаю, но у меня это не работает.

Что у меня есть:

<extension
     name=""
     point="org.eclipse.scout.rt.extension.client.desktopExtensions">
  <desktopExtension
        class="com.sixt.leasing.pd.scout.client.ui.desktop.DesktopExtension"
        active="true">
  </desktopExtension>
</extension>
<extension
     point="org.eclipse.scout.rt.extension.client.menus">
  <menuContribution
        active="true"
        class="com.sixt.leasing.pd.scout.client.menu.JobRunnerMenu"
        order="22">
     <desktop
           class="com.sixt.leasing.core.scout.client.ui.desktop.Desktop">
     </desktop>
  </menuContribution>
</extension> 

внутри plugin.xml

и мой JobRunnerMenu выглядит так:

public class JobRunnerMenu extends AbstractExtensibleMenu {

  @Override
  protected String getConfiguredText() {

    return TEXTS.get("Job");
  }

  @Override
  protected void execAction() throws ProcessingException {

    // TODO  Auto-generated method stub.
    super.execAction();
  }

  @Override
  protected void execToggleAction(final boolean selected) throws ProcessingException {

    // TODO  Auto-generated method stub.
    super.execToggleAction(selected);
  }
}

Что мне не хватает? Почему это не работает?


person Marko Zadravec    schedule 21.09.2015    source источник


Ответы (3)


Связанная ветка форума: Multi Modul - Расширение меню


Я только что протестировал этот шаблон, и он работает так, как ожидалось.

Вот содержимое моего plugin.xml (в клиентском расширении):

<extension
    point="org.eclipse.scout.rt.extension.client.menus">
 <menuContribution
       active="true"
       class="myapp.extension.client.menu.MyMenu"
       order="22">
    <desktop
          class="myapp.client.ui.desktop.Desktop">
    </desktop>
 </menuContribution>
</extension>

Поскольку «menuContribution» определяет «рабочий стол» как контейнер, меню, которое вы добавите, добавляется к рабочему столу. Обычно эти меню являются меню верхнего уровня и содержат дочерние меню.

public class MyMenu extends AbstractExtensibleMenu {

  @Override
  protected String getConfiguredText() {
    return "My Menu";
  }

  public class MessageBoxTestMenu extends AbstractExtensibleMenu {

    @Override
    protected String getConfiguredText() {
      return "Test MessageBox";
    }

    @Override
    protected void execAction() throws ProcessingException {
      MessageBox.showOkMessage(null, "This is a test", null);
    }
  }
}

Результат:

Снимок экрана


  • Верны ли абсолютные имена классов в вашем XML?
  • Ваше расширение правильно запущено?
person Jmini    schedule 22.09.2015

Сделайте так, чтобы ваш рабочий стол расширял базовый класс AbstractExtensibleDesktop. Обычный класс AbstractDesktop не загружает расширения.

В этом случае точка останова в AbstractExtensibleDesktop#AbstractExtensibleDesktop должна стать хорошей отправной точкой для отладки.

person Patrick    schedule 21.09.2015

Прошу прощения, что ввел в заблуждение этим вопросом.

Приведенный выше код работает, моя проблема заключалась в том, что я не добавил клиента в файл продукта. Это приводит к тому, что клиент недоступен, поэтому расширение не может быть добавлено.

В любом случае спасибо за ответ, и да, AbstractExtensibleDesktop абсолютно необходим.

person Marko Zadravec    schedule 22.09.2015