Now I can officially say that, I joined to AJAX Control Toolkit team which I'm very proud of. A number of new challenges and things to learn are waiting for me now. I'm so excited.
First thing I'm going to take is ContextMenu Extender. Kirti put short requirements list on her blog, I will allow myself to copy that post here. Two copies may increase possibility of feedback.
One of our new contributors (that's me) has volunteered to author a new control which will behave like a context menu. It will prevent the default browser menu from showing up when you right click and show you a custom menu and provide you with richer, more relevant functionality. We would have to essentially override the contextmenu event and show a popup. The new context menu could easily use the existing FloatingBehavior support in the Toolkit to show a custom menu control.
Name of the control: ContextMenuExtender
TargetControl: Control
Properties: I am almost stealing this from the HoverMenu control in the Toolkit. The ContextMenu is the HoverMenu handling the contextmenu event instead of the mouseover/mouseout events. We could reuse most of the functionality in that control.
- TargetControlID: ID of the element, right clicking on which will cause the context menu to show
- PopupControlID: ID of the menu popup that will serve as the context menu
- Position: Position of the menu popup with respect to the target control. Any position supported by PopupBehavior?
- ContextMenuCssClass: Name of the css class that will be applied to the menu popup element.
Accessibility: When the target control is focusable the ContextMenu should be able to be activated using the keyboard alone so the extender needs to support keyboard eventson the target control as well. The popup panel should have the features expected of an accessible control like semantic html, alternate text, high contrast support, keyboard support and more. This would be a to-do for the website developer though and not the control author since the Extender consumes whatever Menu Control is passed to it.
International: Would there be any left-to-right/right-to-left concerns we should have if we are exposing the Position property? Users can make their page globally aware using that, correct?
Usability: This is something that end users who deploy this control should take into consideration. Right-clicking in a browser to expose non-browser menus is not something that users will discover intuitively. It should be considered that the control needs to communicate in some way that it has a contextmenu that is not the default browser one. It needs to be somehow advertised that there is more possible with the target control beyond just clicking and/or hovering over it. Talking about usability, what would be the Safari story? Would any Macintosh users like to chime in?
Any more feature requests, ideas?