You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "dragan.sahpaskix@gmail.com" <dr...@gmail.com> on 2011/03/30 22:12:23 UTC

[GSOC 2011] Right Click Menu

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: dragan.sahpaskix@gmail.com
 <dr...@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:* *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

Re: [GSOC 2011] Right Click Menu

Posted by "dragan.sahpaskix@gmail.com" <dr...@gmail.com>.
OK thanks,
Thanks great.

I'll write your name in the proposal.

Cheers,
Dragan Sahpaski

On Fri, Apr 8, 2011 at 10:16 AM, Kalle Korhonen
<ka...@gmail.com>wrote:

> Dragan, good work on the proposal. We've been shuffling the potential
> mentors behind the scenes (one mentor can only have one student) and
> looks like I'd be mentoring you. I'm registered as a mentor on the
> gsoc site and my id there is kaosko.
>
> Kalle
>
>
> On Thu, Apr 7, 2011 at 1:10 PM, dragan.sahpaskix@gmail.com
> <dr...@gmail.com> 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: dragan.sahpaskix@gmail.com
> >
> > 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, dragan.sahpaskix@gmail.com <
> > dragan.sahpaskix@gmail.com> 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: 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. 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, dragan.sahpaskix@gmail.com <
> >> dragan.sahpaskix@gmail.com> 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, dragan.sahpaskix@gmail.com <
> >>> dragan.sahpaskix@gmail.com> 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: dragan.sahpaskix@gmail.com
> >>>>  <dr...@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:* *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
> >>>>
> >>>>
> >>>
> >>
> >
>

Re: [GSOC 2011] Right Click Menu

Posted by Kalle Korhonen <ka...@gmail.com>.
Dragan, good work on the proposal. We've been shuffling the potential
mentors behind the scenes (one mentor can only have one student) and
looks like I'd be mentoring you. I'm registered as a mentor on the
gsoc site and my id there is kaosko.

Kalle


On Thu, Apr 7, 2011 at 1:10 PM, dragan.sahpaskix@gmail.com
<dr...@gmail.com> 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: dragan.sahpaskix@gmail.com
>
> 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, dragan.sahpaskix@gmail.com <
> dragan.sahpaskix@gmail.com> 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: 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. 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, dragan.sahpaskix@gmail.com <
>> dragan.sahpaskix@gmail.com> 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, dragan.sahpaskix@gmail.com <
>>> dragan.sahpaskix@gmail.com> 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: dragan.sahpaskix@gmail.com
>>>>  <dr...@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:* *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
>>>>
>>>>
>>>
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org


Re: [GSOC 2011] Right Click Menu

Posted by "dragan.sahpaskix@gmail.com" <dr...@gmail.com>.
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, dragan.sahpaskix@gmail.com <
dragan.sahpaskix@gmail.com> 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: dragan.sahpaskix@gmail.com
>
> 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, dragan.sahpaskix@gmail.com <
> dragan.sahpaskix@gmail.com> 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: 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. 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, dragan.sahpaskix@gmail.com <
>> dragan.sahpaskix@gmail.com> 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, dragan.sahpaskix@gmail.com <
>>> dragan.sahpaskix@gmail.com> 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: dragan.sahpaskix@gmail.com
>>>>  <dr...@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:* *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
>>>>
>>>>
>>>
>>
>

Re: [GSOC 2011] Right Click Menu

Posted by "dragan.sahpaskix@gmail.com" <dr...@gmail.com>.
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: dragan.sahpaskix@gmail.com

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, dragan.sahpaskix@gmail.com <
dragan.sahpaskix@gmail.com> 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: 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. 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, dragan.sahpaskix@gmail.com <
> dragan.sahpaskix@gmail.com> 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, dragan.sahpaskix@gmail.com <
>> dragan.sahpaskix@gmail.com> 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: dragan.sahpaskix@gmail.com
>>>  <dr...@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:* *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
>>>
>>>
>>
>

Re: [GSOC 2011] Right Click Menu

Posted by "dragan.sahpaskix@gmail.com" <dr...@gmail.com>.
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: 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. 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, dragan.sahpaskix@gmail.com <
dragan.sahpaskix@gmail.com> 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, dragan.sahpaskix@gmail.com <
> dragan.sahpaskix@gmail.com> 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: dragan.sahpaskix@gmail.com
>>  <dr...@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:* *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
>>
>>
>

Re: [GSOC 2011] Right Click Menu

Posted by "dragan.sahpaskix@gmail.com" <dr...@gmail.com>.
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, dragan.sahpaskix@gmail.com <
dragan.sahpaskix@gmail.com> 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: dragan.sahpaskix@gmail.com
>  <dr...@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:* *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
>
>