:: Forum >>

How can I make Context Menu in version 2.0 b2?

i found this code at http://www.activewidgets.com/javascript.forum.1933.17/how-can-i-make-context.html
//set the action to handle the contextmenu
function oncontextmenu(event)
{
event.cancelBubble = true;
event.returnValue = false;
this.action("contextmenu");
}
// assign the event handler to the cell template prototype
Active.Templates.Text.prototype.setEvent("oncontextmenu", oncontextmenu);

// create action handler for the right click context menu
grid.setAction("contextmenu", function(src){ showmenu(event,getMenuHeader()+menu);return false;});


but v2 has removed get/setAction methods

How can I make Context Menu in version 2.0?
or
How can I customize Event?
xiaohong
Saturday, December 10, 2005
First, do you know how to make your own AW objects?

If so, I suggest that you create a List object, populate it with your specific menu items, set the height to the number of rows * the row height. Then set the X Y coordinates to where your mouse is. Set an event handeler to handel the item clicks that will do the work of the menu. Then render it to the page. I provided these instructions because you are going to learn a lot more about the controls by creating this yourself then you will from me writing the control for you. With 2.0 this is a very easy control to create, I did it in about an hour and made it generic so that I pass in an array for the menu items and an array of Javascript strings to execute when menu items are clicked.
Jim Hunter
Monday, December 12, 2005
Jim -

Would you mind to please publish what you did "as is" ? Learning by example is also a good way to learn.

Philippe Marzin
Monday, December 12, 2005
Jim
thank you very much,I know how to create a menu by a div or table...,my problem is how I know the right button clicked?
//in version 1.0 this code will catch right button clicked event
var row = new Active.Templates.Row;
row.setEvent("oncontextmenu", function(){this.action("myAction")});
obj.setTemplate("row", row);
obj.setAction("myAction", function(){alert('Hello')});
xiaohong
Tuesday, December 13, 2005
This will work:

obj.setEvent("oncontextmenu", "yourfunction(); return false");

I didn't work out the details of knowing which object that you want to attach the event to, I would think it would be the row object. If you want to attach it to the row use obj.getRowTemplate().setEvent.... but I would think you would want to attach it to the grid and access the selected row property to know what the current;y selected row was without changing it via the right click. Just my thoughts...
Jim Hunter
Tuesday, December 13, 2005
I use the following to capture the right-click on the grid:

jobgrid.onRowMouseUp = function(event, index){
if (event.button != 2) return;
writeContextMenu(index);
showContextMenu(event);
};

Here, event.button == 2 for a right-click, index is the index of the row that was clicked.
LostInSpace
Wednesday, December 14, 2005
Jim ,your thoughts is right, i want to access the selected row and do something with it. thank you.
I'v tryed
obj.setEvent("oncontextmenu", "yourfunction(); return false");
and
jobgrid.onRowMouseUp = function(event, index){
if (event.button != 2) return;
writeContextMenu(index);
showContextMenu(event);
};


they all worked.
LostInSpace,and thank you too
xiaohong
Wednesday, December 14, 2005
Has anyone tried to do a context menu triggered off of a Ctrl-Right-Click? I think I am going to need to do it but have not yet tried it. Alex, do you have any properties that would give us keystate? Might be a good addition to the grid if we can come up with a way to do it.
Jim Hunter (www.FriendsOfAW.com)
Friday, March 10, 2006
Turned out it is very simple. There is a boolean that you can check to see if the Ctrl key is pressed. This seems to work in IE/FF/Mozilla so I guess borwsers are supporting this. There are 3 different booleans that you can check to see if modifier keys are pressed:

event.ctrlKey
event.shiftKey
event.altKey


to use these in your context menu, make this simple change to the above example:

obj.setEvent("oncontextmenu", "if (event.ctrlKey) {yourfunction();} return false");
Jim Hunter (www.FriendsOfAW.com)
Friday, March 10, 2006

This topic is archived.


Back to support forum

Forum search