Yep, that's right. Oops. You'll need to create a PropertyConduit
that ignores the parameter, as in:
public class MyPage {
public BeanModel getBeanModel() {
... model.add("mySynthetic", new PropertyConduit() {
public Object get(Object) { return whateverYouWantToDoHere(); }
....
});
}
}
And that's pretty ugly, to the point where BeanModel may need an
addSynthetic() method to help with this. I can imagine a helper that
implements PropertyConduit and a) updates the row property of a
container object (i.e., the page) then b) gets (or even sets) a
property of the page. What I have above is close to this but the
whole thing could be "automated" a bit.
I almost used the term "automagicated".
On 2/16/07, Ted Steen <[EMAIL PROTECTED]> wrote:
> _propertyConduitSource.create(this.getClass(), "mySyntheticProperty")
> results in a ClassCastException because (I think) the get-method in
> the PropertyConduit tries to cast the currRowObject to the page class
> (this.getClass()).
>
>
> 2007/2/16, Howard Lewis Ship <[EMAIL PROTECTED]>:
> > _propertyConduitSource.create(this.getClass(), "mySyntheticProperty")
> >
> > should work.
> >
> > On 2/16/07, Ted Steen <[EMAIL PROTECTED]> wrote:
> > > How could I create a synthetic property whose conduit is on the page?
> > > if I create the PropertyConduit I need to use the MyType as rootClass,
> > > otherwise I will get a ClassCastException, and from MyType I will not
> > > be able to access the properties on the page.
> > >
> > > 2007/2/16, Howard Lewis Ship <[EMAIL PROTECTED]>:
> > > > The Grid component has a row parameter, equivalent to the Loop
> > > > components value parameter (and the same as T4's contrib:Table's row
> > > > parameter). It is set as each row starts to render, to identify the
> > > > object that will be rendered. This is primarily so that custom cell
> > > > renderers will know what they are supposed to render, but you can
> > > > twist it around a few different ways with T5's Grid.
> > > >
> > > > Thus you could have:
> > > >
> > > > private MyType _row;
> > > >
> > > > public void setRow(MyType row) { _row = row; }
> > > >
> > > > public String getThatTrickyFormat()
> > > > {
> > > > return _row.getThatTrickyProperty().andDoSomethingToIt();
> > > > }
> > > >
> > > > You could then use the PropertyConduitSource service to create a
> > > > synthetic property whose conduit is the page's thatTrickyFormat
> > > > property ... or you could leave the conduit as null, and just provide
> > > > a cell renderer block tha accesses thatTrickyFormat property.
> > > >
> > > > On 2/16/07, Ted Steen <[EMAIL PROTECTED]> wrote:
> > > > > One thing I am struggling with now is cells with values calculated
> > > > > from the current row.
> > > > > For the most part the value of a cell is just
> > > > > currRowObject.some.value, but sometimes one need to go by some
> > > > > service, eg. myService.getSomeValue(currRowObject).
> > > > >
> > > > > I construct my own BeanModel "bm"
> > > > > then I do
> > > > >
> > > > > bm.add("category", new PropertyConduit() {
> > > > > .
> > > > > .
> > > > > .
> > > > > public Object get(Object instance) {
> > > > > EntryDTO entry = (EntryDTO)instance;
> > > > > return entryService.getCategory(entry);
> > > > > }
> > > > > .
> > > > > .
> > > > > .
> > > > >
}).label(messages.get("category")).order(10).editorType("categorycell").sortable(true);
> > > > >
> > > > > It feels a little clumsy for all my non-primitives and also, how do I
> > > > > override how the rendering is done?
> > > > > If I use <t:parameter name="categoryCell">...</t:parameter> I cannot
> > > > > get the value of the cell from here (well I could invoke
> > > > > entryService.getCategory(...) once again...but)
> > > > > I could override toString() on all my DTOs, but that would force me to
> > > > > also inject the messages etc. into them and that would break my
> > > > > layered design.
> > > > >
> > > > > Any thoughts?
> > > > >
> > > > > 2007/2/15, Howard Lewis Ship <[EMAIL PROTECTED]>:
> > > > > > Fast is nice! Glad it worked.
> > > > > >
> > > > > > Grid represents a number of simplifications over T4's contrib:Table.
> > > > > > We'll see over time if any of the simplficiations is overly drastic,
> > > > > > but I think it will do nicely. Not to insult OGNL, but removing all
> > > > > > that OGNL/reflection/synchronization overhead makes a big
difference.
> > > > > > On my MacBook Pro, I see action requests lasting about 2ms and
render
> > > > > > requests (for complex Grid pages) lasting 25 - 35 ms (seems like the
> > > > > > millisecond clock on Mac OS is more accurate than under Windows).
> > > > > >
> > > > > > This still underlies the need for more performance testing of
Tapestry
> > > > > > (4 + 5), something that typically requires a reasonable and stable
> > > > > > lab in order to be meaningful.
> > > > > >
> > > > > > On 2/15/07, Ted Steen <[EMAIL PROTECTED]> wrote:
> > > > > > > Made my changes, updated svn.
> > > > > > > Now it works like a charm!
> > > > > > >
> > > > > > > And damn! that Grid component is fast!
> > > > > > >
> > > > > > > Thank you Howard!
> > > > > > >
> > > > > > >
> > > > > > > 2007/2/15, Howard Lewis Ship <[EMAIL PROTECTED]>:
> > > > > > > > To do this, you need to construct the BeanModel yourself, by
injecting
> > > > > > > > the BeanModelSource service.
> > > > > > > >
> > > > > > > > You can then add a new column, say "trashcan".
> > > > > > > >
> > > > > > > > model.add("trashcan", null).order(1000).label("Delete ?");
> > > > > > > >
> > > > > > > > You can then provide a parameter:
> > > > > > > >
> > > > > > > > <t:comp type="Grid" ...>
> > > > > > > > <t:parameter name="trashcanCell">
> > > > > > > > ...
> > > > > > > > </t:parameter>
> > > > > > > > </t:comp>
> > > > > > > >
> > > > > > > > Alas, I forgot to add that version of model.add() where you can
pass
> > > > > > > > in the PropertyConduit.
> > > > > > > >
> > > > > > > > So you'll have to wait for me to make a couple of changes ...
> > > > > > > >
> > > > > > > > On 2/15/07, Ted Steen <[EMAIL PROTECTED]> wrote:
> > > > > > > > > Hi!
> > > > > > > > >
> > > > > > > > > I'm trying out the new Grid component and I am having some
troubles
> > > > > > > > > with the flexibility of the row's apperence.
> > > > > > > > > My model is very different from the view (eg. there should be
a little
> > > > > > > > > trashcan accociated with some of the rows in order to be able
to
> > > > > > > > > delete that row etc.)
> > > > > > > > > Are there any plans on letting us customise our own rows?
maybe a
> > > > > > > > > parameter "row" that takes a block or similar?...
> > > > > > > > >
> > > > > > > > > /Ted
> > > > > > > > >
> > > > > > > > >
---------------------------------------------------------------------
> > > > > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > Howard M. Lewis Ship
> > > > > > > > TWD Consulting, Inc.
> > > > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > > > Creator and PMC Chair, Apache Tapestry
> > > > > > > > Creator, Apache HiveMind
> > > > > > > >
> > > > > > > > Professional Tapestry training, mentoring, support
> > > > > > > > and project work. http://howardlewisship.com
> > > > > > > >
> > > > > > > >
---------------------------------------------------------------------
> > > > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > /ted
> > > > > > >
> > > > > > >
---------------------------------------------------------------------
> > > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Howard M. Lewis Ship
> > > > > > TWD Consulting, Inc.
> > > > > > Independent J2EE / Open-Source Java Consultant
> > > > > > Creator and PMC Chair, Apache Tapestry
> > > > > > Creator, Apache HiveMind
> > > > > >
> > > > > > Professional Tapestry training, mentoring, support
> > > > > > and project work. http://howardlewisship.com
> > > > > >
> > > > > >
---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > > /ted
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > Howard M. Lewis Ship
> > > > TWD Consulting, Inc.
> > > > Independent J2EE / Open-Source Java Consultant
> > > > Creator and PMC Chair, Apache Tapestry
> > > > Creator, Apache HiveMind
> > > >
> > > > Professional Tapestry training, mentoring, support
> > > > and project work. http://howardlewisship.com
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > >
> > > >
> > >
> > >
> > > --
> > > /ted
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
> >
> > --
> > Howard M. Lewis Ship
> > TWD Consulting, Inc.
> > Independent J2EE / Open-Source Java Consultant
> > Creator and PMC Chair, Apache Tapestry
> > Creator, Apache HiveMind
> >
> > Professional Tapestry training, mentoring, support
> > and project work. http://howardlewisship.com
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
> --
> /ted
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
--
Howard M. Lewis Ship
TWD Consulting, Inc.
Independent J2EE / Open-Source Java Consultant
Creator and PMC Chair, Apache Tapestry
Creator, Apache HiveMind
Professional Tapestry training, mentoring, support
and project work. http://howardlewisship.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]