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
>>>>
>>>>
>>>
>>
>

Reply via email to