Proposal Title: Right Click Menu component for Apache Tapestry5 java web application framework

Student Name: Dragan Shahpaski

Student E-mail: dragan.sahpaskix@gmail.com

Organization/Project: The Apache Software Foundation / Tapestry 5

Assigned Mentor:

Proposal Abstract: This project will produce a generic and powerfull Right Click Menu (also known as Context Menu) component for Tapestry5. The Right Click Menu component is meant to be highly configurable ready for enterprise scenarios, can be used along tapestry5 existing components or as standalone component. The component is meant to be integrated within the tapestry5 framework or as a standalone library. As far as I know no such component is provided publicly yet.

Detailed Description:

  1. Create the Right Click Menu component as a mixin for t5 components. The menu options will contain pairs of labels and t5 links which are ordinary links or event links (able to update a zone for example), that will be configured with some kind of Right Click Menu model interface. The clicks will be processed as t5 events produced for example from an event link. Also it is intended that advanced usage scenarios for enterprise applications are considered like for example having all the options for all the menus in one application in a database and producing them in some generic manner.
  2. Provide integration with the mighty t5 grid component, so that we can have right click options in the grid cells and rows with possibly different options for each cell/row. This means that in a grid with 20 cells, 20 javascript instances of the client side component may exist. To avoid bloating the page with many instances of the component possibly not used at all, look at the third goal.
  3. Provide ajax behavior for the menu's options (label/link pairs) i.e. clicking the component will produce a waiting.. or similar menu that is refreshed with the actual menu contents with ajax update from the server. This can help cases of components with too many menus, like for example loops or grids (see the second goal).
  4. Create the component as a standalone t5 component if needed (optional and may be discussed with the community).
  5. Create detailed documentation about the component (or mixin), demo examples of most common and advanced usage scenarios and maybe one video tutorial.

Additional Information: I am able to commit to this project alone as my standalone activity for the summer.