My intention is to have this running from a “New” button on my activities form.
When I select it, it runs “myMethod” three times and pops up the menu. I thought it would only run the method after selection of a menutype. What have I done wrong?
Also I don’t understand what menu[2].setMe… line does. Can someone explain?
Thank you.
var menu = new Array(//if you assign this array to a global its reusable
plugins.popupmenu.createMenuItem('Task',myMethod),
plugins.popupmenu.createMenuItem(''RFI',myMethod),
plugins.popupmenu.createMenuItem('Note',mylMethod)
)
// To transfer the right element and formname triggers you have to set them as arguments
menu[2].setMethodArguments(new Array(application.getMethodTriggerElementName(), application.getMethodTriggerFormName()));
var elem = elements[application.getMethodTriggerElementName()]
if (elem != null)
{
plugins.popupmenu.showPopupMenu(elem, menu);
//or you can set the coordinates : plugins.popupmenu.showPopupMenu(10, 10, menu);
}
It is connected to the onAction event for a button. When I select this button myMethod runs “5” times (at the moment myMethod pops a warning dialog) and then shows the popup menu. When I then select an option on the popup menu nothing happens.
function btn_popup() {
var menu = new Array(//if you assign this array to a global its reusable
plugins.popupmenu.createMenuItem('Task',myMethod),
plugins.popupmenu.createMenuItem('Note',myMethod),
plugins.popupmenu.createMenuItem('Email',myMethod),
plugins.popupmenu.createMenuItem('RFI', myMethod),
plugins.popupmenu.createMenuItem('Letter', myMethod)
)
// To trnsfer the right element and formname triggers you have to set them as arguments
menu[2].setMethodArguments(new Array(application.getMethodTriggerElementName(), application.getMethodTriggerFormName()));
var elem = elements[application.getMethodTriggerElementName()]
if (elem != null)
{
plugins.popupmenu.showPopupMenu(elem, menu);
//or you can set the coordinates : plugins.popupmenu.showPopupMenu(10, 10, menu);
}
}
Ok, I was curious about this one so I grabbed your code and tried it out for myself, just substituting “myMethod” with one of my own. I don’t know why your method is running 5 times because it isn’t doing that for me. Since it is working fine for me, I don’t think it is because of the menu triggering accidentally. My best guess is that you have this method attached to some other events. So I would check that out. Also, as Rob mentioned with the arguments, you are passing argument s for the Trigger Element and Trigger Form Name to myMethod when you click Email but on no others. If you wanted arguments passed for each one you would need to do something like the following. Again, your code seems to be working fine for me.
Perfect. That solution showed me the problem that wasn’t apparent in the post. When you build your menu you are actually calling the method instead of just creating a reference to it.
Currently when you create a menu item you do this:
plugins.popupmenu.createMenuItem(‘Letter’,globals.clicked())
It should look be this:
plugins.popupmenu.createMenuItem(‘Letter’,globals.clicked)
Notice that the only change is that I removed the parentheses after globals.clicked. Writing globals.clicked is a reference to the method so it can be called later, writing globals.clicked() will actually call it.
Did I mention I love Brisbane and if you want to ship me out there for a week or two my bags are nearly packed?
Sorry, no room left. The secret is out and we can’t stop em all from coming over!
Final question regarding the formatting, refer attached, Each menu option has a left margin (Why) and does html rendering always look so icky?
J
I had the same issue with the left margin and found that it was being caused by the Java LAF I was using. If you change the Look and Feel of the client to a different LAF you will probably see this go away.