Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Eclipse Scout » Dynamically generating menus
Dynamically generating menus [message #1128050] Mon, 07 October 2013 09:27 Go to next message
Eclipse UserFriend
I would like to create a dynamic number of menus based on the result of a lookup call.

In the example below, getTable().setMenus doesn't exist.

The alternative which I had thought possible was to use getMenus and and setMenus on the page instead of its table (and there, setMenus does exist) but it doesn't seem to have an effect. Any idea why this is not straight forward?

  @Override
  protected void execInitPage() throws ProcessingException {

    ArrayList<IMenu> menus = new ArrayList<>();
    menus.addAll(Arrays.asList(getTable().getMenus()));

    SomeLookupCall call = new SomeLookupCall();
    call.setText("A7* - ");
    LookupRow[] rows = null;
    try {
      rows = call.getDataByText();
    }
    catch (ProcessingException e) {
      // do nothing
    }
    if (rows != null) {
      for (LookupRow row : rows) {
        final String s = row.getText();
        IMenu menu = new AbstractMenu() {
          @Override
          public String getText() {
            return s;
          }
          @Override
          protected void execAction() throws ProcessingException {
            doSomethingAwesomeWith(s);
          }
        };
        menus.add(menu);
      }
      getTable().setMenus(menus.toArray(new IMenu[0]));
    }
  }

Re: Dynamically generating menus [message #1128407 is a reply to message #1128050] Mon, 07 October 2013 17:05 Go to previous messageGo to next message
Eclipse UserFriend
You can do this by overriding the
protected void injectActionNodesInternal(List<IMenu> nodeList)
method. Just add the menus you want into the nodeList.

Re: Dynamically generating menus [message #1129299 is a reply to message #1128407] Tue, 08 October 2013 13:49 Go to previous messageGo to next message
Eclipse UserFriend
This is great, thanks.
Re: Dynamically generating menus [message #1545849 is a reply to message #1129299] Sun, 04 January 2015 15:23 Go to previous message
Eclipse UserFriend
I just discovered that for the Luna release, any dynamically generated sub-menus should override getConfiguredMenuTypes() and specify the same values as the container menu they are being added to.

e.g. You have a multi-select menu called "Send to ->" which contains a list of recipients loaded from a favourite contacts table page.
Send to -> Harry
           Joe
           Fred
Because the "Send to" menu's getConfiguredMenuTypes() includes TreeMenuType.MultiSelection, so must all sub-menus being added to it. If not, they will simply not appear, and nor will the parent menu. This is somewhat tricky to debug.
Previous Topic:fine-grained access control
Next Topic:Mars version: Make 'bean based TableData' the new default for table fields.
Goto Forum:
  


Current Time: Tue Feb 18 20:53:23 GMT 2025

Powered by FUDForum. Page generated in 0.02747 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top