Hi, Here is a revised version of the proposal. I'm submitting it on melange. If anyone has some suggestions for the remaining 2 and something days please reply.
Proposal Title: Right Click Menu component for Apache Tapestry5 java web application framework Student Name: Dragan Shahpaski Student E-mail: [email protected] 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. Right Click Menu component 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. The menu component will have a context (as a param) based which it cah will provide different menu options. It should also provide the capability of showing images (icons) with text as a menu option, or whatever markup the user provides. This can be done with a block parameter as in the t5 grid ex <p:label1/> <p:label2/> etc. I will try to provide the client side part of the menu to be independent of any javascript frameworks. The drawbacks and benefits of the approach will be discussed with the community and a decision will be made in the first few weeks (see the schedule). 2. Integration with t5 grid 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. Ajax behavior for the menu's options 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). The behaviour can be triggered using a standard t5 event link triggering an event and a zone update. The menu options can be provided as a block. 4. Standalone t5 component Create the component as a standalone t5 component if needed (optional and may be discussed with the community). 5. Documentation Create detailed documentation about the component (or mixin) that should go in a wiki or the t5 site (to be disused with the community), demo examples of most common and advanced usage scenarios with source code. Maybe one short video tutorial used for promo or preview of the component. Project time line: April 26 - May 23: Basic implementation Make basic implementation of the mixin and discuss with the community the need for the solution to be independent of the javascript framework. Get feedback from the community for the first demo implementation. May 23: Official start May 23 - June 10: Complete the RightClickMenu mixin and provide a basic demo to be viewed online. Provide several usage scenarios in the demo. Considering advanced use cases with applications demanding many menus and how they can be best configured in the app. The component should have various possible configuration options powerful enough to be configured from a central place or by reading info from a DB for example. June 11 - June 30: Integration with t5 grid. Create a proof of concept demo and try to minimize changes in the t5 grid. It is possible that some interventions in the t5 grid code will be needed and try to provide as pure solution as possible. It would be ideal if none of the t5 grid code is changed. July 1 - July 15: Complete the Ajax behavior for the menu's options Try to discuss all the possible usage scenarios with custom event triggering form the menu itself and providing a context in the ajax event. In parallel discuss and think weather a standalone t5 component is needed for the t5 menu for cases where we don’t have a t5 component to use a mixin on. July 15: Mid-term evaluations July 15- July 31: Provide a standalone t5 component (if decided). Refactor the code and make unit and integration tests to make it production ready. August 1 - August 15: Documentation Code should be complete and comited. Write final documentation with examples and create a video tutorial of the different usage scenarios. August 15: Suggested pencils down August 22: Firm pencils down Deliverables: 1. RightClickMenu mixin 2. RightClickMenu integration with t5 grid 3. RightClickMenu ajax behaviour (part of the component 4. Standalone RightClickMenu t5 component 5. Documentation for various advanced applications, Examples and Video tutorial. Additional Information: I am able to commit to this project alone as my standalone activity for the summer. Cheers, Dragan Sahpaski On Wed, Mar 30, 2011 at 10:13 PM, [email protected] < [email protected]> wrote: > Sorry I forgot the link to the wiki: > http://wiki.apache.org/tapestry/gsoc2011-RightClickMenu > <http://wiki.apache.org/tapestry/gsoc2011-RightClickMenu> > Cheers, > Dragan Sahpaski > > > > On Wed, Mar 30, 2011 at 10:12 PM, [email protected] < > [email protected]> wrote: > >> Hi, >> Please see this first version of the proposal about a t5 Right Click Menu >> component in the wiki: >> Please tell me your opinions and guidelines about the proposal so that I >> can correct it on time (deadline is April 8). >> >> I also include the proposal here: >> >> Proposal Title: *Right Click Menu component for Apache Tapestry5 java web >> application framework* >> **Student Name: Dragan Shahpaski >> Student E-mail: [email protected] >> <[email protected]>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:* *The first goal* (or deliverable) will be >> providing 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. >> >> *The second goal* is to provide integration with the all 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. >> >> *The third goal* is to 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). >> >> *The fourth goal* is to provide the component as a standalone t5 >> component if needed (optional and may be discussed with the community). >> >> *The fifth goal* is to provide 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. >> Cheers, >> Dragan Sahpaski >> >> >
