myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sylvain Vieujot <svieu...@apache.org>
Subject Re: [Myfaces-develop] New feature suggestion : Edit mode
Date Thu, 05 May 2005 02:34:05 GMT
I came up with this idea, as I come from a Notes/Domino background,
where you can have a document or document sections in edit mode or in
read mode.

Sure, you can do this with multiple fields (at least always 2), but this
quickly turns into a maintenance nightmare, with pages very hard to
read.

When you have pages with 50+ components that can be either in edit mode
or read mode, this becomes quite complex and generate bugs.
It's harder to test to, as you have to test all modes to be sure your
edit/output components are consistent.
So, the easiest place to solve this is into the components, as it makes
the application easier design and to maintain.

This is the same logic as the one that leads to the creation of the
enabledOnUserRole like attributes.

A small example to show how it can greatly simplify a real-life
example :

In a client form, I have a section with the accounting informations that
the account manager can view, but not edit, and that only the accounting
department can edit, it the client has some status.
So, the formula to know it a field in this section is editable is quite
complex.

If I use the components without this extension, I have roughly 48
components, and 32 of them have a complex rendered formula.
This is both inefficient, and hard to maintain.
Now, if I use the editable attribute, I only have 16 fields, which is a
great improvement maintenance wise.
If now I put all those fields in an x:panelGroup with the editable
attribute/formula, I still have those 16 fields (17 with the
x:panelGroup one), but the editable formula is writen just once.
In addition to this, this is just a section of the page. In my
application, just for the main client form, I have 6 sections. 4 of
which having custom editable settings.
So, for the all form, the difference is about 128 additional components,
and 124 additional render formulas.
This is definitely a real improvement, and the difference between a code
cluttered page, and a page that can be readable & maintainable.

Even if the concept can seem useless and just meant to add more
attributes and/or gadgets to the x: components, in large applications,
it has some real value.

Sylvain.

On Wed, 2005-05-04 at 15:32 -0400, Sean Schofield wrote:

> Martin has a good point about the panel group.  That does make it a
> bit more cumbersome (4 lines instead of 1.)  Although you could argue
> that the approach I suggested is still more transparent.
> 
> This is the approach I took with tree2.  To use standard JSF
> conventions to solve a problem whenever possible b/c this is the
> common framework that all JSF programmers will be familiar with.   So
> instead of rendering html links in the tree, just let the user specify
> whether they want one or not using h:commandLink and a facet.  So that
> is the argument for simplicity/flexability and the expense of a few
> extra lines.
> 
> Rolf's idea concerning a "dynamic renderer" sounds interesting,
> however.  Perhaps we could explore that a little more.  JSF of course
> allows you to specify which renderer to use for which component but
> that is done statically via the faces-config.xml, etc.  It might be
> interesting to have several different renderers for a piece of data
> that you could swap based on the results of a value binding
> expression.
> 
> So you could use the existing text component, create a custom tag and
> then create 1...n custom renderers.  This is probably what you would
> do anyways even if you didn't have the renderer be dynamic right?  The
> added step could be that you could determine how to render
> dynamically.
> 
> Another use case could be a list of values.  If the field should not
> be editable you could make the current selection displayed as plain
> text (instead of disabling the combo box.)
> 
> My 2 cents,  (US$ so less than 2 Euro Cents at the moment)
> 
> sean
> 
> On 5/4/05, Martin Marinschek <martin.marinschek@gmail.com> wrote:
> > of course - it's just the rendering that is different.
> > 
> > regards,
> > 
> > Martin
> > 
> > On 5/4/05, Rolf Kulemann <roku@apache.org> wrote:
> > > On Wed, 2005-05-04 at 18:44, Martin Marinschek wrote:
> > > > Well, MyFaces tries to remain in the Spec as much as possible in any
> > > > of the core classes and the core components - extended components have
> > > > far left the functionality described in the spec ;)
> > > >
> > > > so these attributes would of course only be implemented in the x:... components
> > >
> > > Yes, but I still think, that inputText and outputText semantics should
> > > not be mixed, whether in the x:* components or somewhere else. A
> > > inputText is and inputText and not a outputText, although a inputText
> > > can be non-editable, but is stays an inputText.
> > >
> > > Sorry for my blue-eyedness :)
> > >
> > > --
> > > Rolf Kulemann
> > >
> > >
> >

Mime
View raw message