Here is the public link from the GSOC site. http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/dragansah/1
Cheers, Dragan Sahpaski On Thu, Apr 7, 2011 at 10:10 PM, [email protected] < [email protected]> wrote: > Hi, > I made my proposal a bit more ambitious. I believe that 3 months is not a > short time and all the proposed functionalities can be implemented. This is > the final version and I will make no more changes. > > Cheers, > Dragan Sahpaski > > Proposal Title: Right Click Menu, grid enhancements and two optional > components for the 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 consistst of two parts. > > The first part 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. > > The second part will provide enhancements for the existing powerful t5 grid > component and two optional tasks from which one should be chosen. The grid > enhancements include bookmarkable URLs with sort parameters of the grid, > page number and number of items per page. > > The chosen optional task can be prototype (not production ready) but should > provide at least a motivating working example of most common usage. > > Detailed Description: > > Part 1: Right Click Menu component > > > 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. > > > Part 2: Grid component enhancements > > 1. Grid Sorting: Support url query parameters for sort keys (property ids > in the BeanModel). The links should also be bookmarkable and when we copy-> > paste a link in the address bar we should be able to see the correct grid > sorting. > > Example: If we have a List<Employe> and sort by employee.department you can > get a URL like: /employeeslist?sort=department&order=asc. > > 2. Pagination: Build a better pager that has the following links. > Previous, Next, Go to End, Go to Beginning. The links will be anchors with > the symbols: <, >, <<, >> but this will be customizable with a parameter. We > will also biuld the option to have the page number in the url like this: > /employeeslist?page=5. The link should be bookmarkable. > > There is a problem implementing the bookmark options when here are multiple > grids in one page. This behavior can be discussed with the community, if we > should support it with multiple grids or no. Multiple grids can have a > component id in the URL like this: > /employeeslist?empgrid.sort=department&department.sort=name > > 3.1. (Optional) Changing column order and visibility and saving this in a > db. > Create a mixin for the grid component or a new t5 component meant to be > used alongside the grid component, that lists all the columns in the grid > and allows them to be made visible/nonvisible and change their order. The > mixin/component would fire events to allow the user to persist the changes > in a DB, the HTTP session etc. > > OR > > 3.2 (Optional) Basic support for generalizing the SPI like functionality > for ajax updates > Provide a SPI like functionality with ajax updates. When an ajax update > occurs update the portion of the URL after # like when using named anchors. > The behaviour should support bookmarking and back button functionality > (history). IMO this is a challenging task but the idea is to start working > on it creating a general concept how it should be implemented in tapestry, > and then work on it by the end of GSOC or after that. I am very interested > in bringing the functionality to tapestry, even after GSOC. > > > > 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. Complete the Ajax behavior for > the menu's options. > 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. > > 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 1- July 5: Provide a standalone t5 component (if decided). > > Refactor the code and make unit and integration tests to make it production > ready. > > July 15: Mid-term evaluations > > July 5- July 20: Pagination and Grid Sorting > Implement pagination and grid sorting with parameters that go in the URL > and implement bookmarkable URLs. Decide if (Optional) Changing column > order and visibility and saving this in a db or (Optional) Basic support > for generalizing the SPI like functionality for ajax updates should be > worked on. > > July 21- August 10: Finish Pagination and Grid Sorting and work on One of > the optional proposed tasks. > Finish the Pagination and Grid Sorting 100% and start to work on (Optional) > Changing column order and visibility and saving this in a db or (Optional) > Basic support for generalizing the SPI like functionality for ajax. Finish > the optional assignment as much as possible and try to provide code for the > most common (or most simple) scenario of the chosen optional task. > > August 11 - August 22: Documentation > Code should be complete and committed for all the tasks and the one > optional assignment. > > 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: > Right Click Menu component (part 1) > 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. > > Grid component enhancements and SPI like functionality to Ajax updates > (part 2) > 1. Grid sorting parameters that go into the URL with bookmarkable links. > 2. Better pager with parameters that go into the URL with bookmarkable > links. > 3. (Optional) Changing column order and visibility and saving this in a db. > > 4. (Optional) Basic support for generalizing the SPI like functionality for > ajax updates > > > > > Additional Information: I am able to commit to this project alone as my > standalone activity for the summer. > > Cheers, > Dragan Sahpaski > > > > On Thu, Apr 7, 2011 at 1:43 AM, [email protected] < > [email protected]> wrote: > >> 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 >>>> >>>> >>> >> >
