Ahhh I see now.

I think we'll have to come up with a different attribute name for that case.
Probably something like the familiar <namespace>:<Component Name> syntax?

Either way it will work the same way, but thank you for bringing it up so I
don't code myself into a corner for this. (other than whatever other corners
I may end up in, hopefully not eventually ending up mugged or beaten by java
streat thugs...)

On 8/27/06, andyhot <[EMAIL PROTECTED]> wrote:

Hate to slow you down Jesse, that's what I (also) fear i'm doing here ...

My question is: how will the author of @UserTable extend @CoolerTable ?

CoolerTable's class is org.apache.tapestry.contrib.table.components.Table
( CoolerTable only has template enhancments) so, if he writes

class UserTable extends org.apache.tapestry.contrib.table.components.Table

we wouldn't know if he's refering to CoolerTable or to Table

Jesse Kuhnert wrote:
> You didn't say what @CoolerTable has to do with @UserTable.
>
> If @UserTable extends @CoolerTable and @CoolerTable hasn't set
> inherit-specification to no AND @UserTable also hasn't set this to no
> then
> @UserTable would:
>
> -) Get all properties/assets/etc inherited from @CoolerTable and Table,
> except for those most directly overriden by the most immediate
> component in
> the chain. (Ie if @UserTable defines a different set of icon assets for
> instance...Even if @CoolerTable also defines them @UserTable would
> still win
> because that's how java inheritance works...Which is what I'd like to
> mimic
> as it will make the most sense for people.)
>
> What part were you worried about specifically?
>
> On 8/27/06, andyhot <[EMAIL PROTECTED]> wrote:
>>
>> What I fear of is this:
>>
>> we already have
>> @Table uses class org.apache.tapestry.contrib.table.components.Table
>>
>> Now, assume a library offers
>>
>> @CoolerTable also uses class
>> org.apache.tapestry.contrib.table.components.Table
>>
>> which has better html, perhaps additional assets, e.t.c.
>>
>>
>> What would now happen if user creates
>>
>> @UserTable uses class com.app.Table that extends
>> org.apache.tapestry.contrib.table.components.Table ?
>>
>> Which parameters/properties/assets would get copied?
>>
>>
>>
>>
>> Jesse Kuhnert wrote:
>> > But java only supports single inheritance.
>> >
>> > On 8/27/06, andyhot <[EMAIL PROTECTED]> wrote:
>> >>
>> >> Hmmm...
>> >>
>> >> I may be totally wrong, I just have the feeling that having
something
>> >> like
>> >> <component-specification inherits="TextField"
>> >> would be easier both for the users and to implement...
>> >>
>> >> Perhaps i'm also misunderstanding your approach but it seems to me
>> >> that knowing a component class doesn't really mean that one knows
>> >> which component we have in mind... component classes can be
shared...
>> >>
>> >>
>> >>
>> >> Jesse Kuhnert wrote:
>> >> > I've already created it, it's called "inherit-specification"...
>> >> >
>> >> > Description:
>> >> >
>> >> > If yes (the default), all elements contained in any superclass
>> >> components
>> >> > will be
>> >> >      directly inherited in this specification.(this includes
>> >> > parameters/properties/assets/etc..)
>> >> >
>> >> > No one should get their hopes up too much yet...(in case I'm
>> setting
>> >> > myself
>> >> > up for some unknown blocking reason for this not to be
possible...)
>> >> >
>> >> > On 8/27/06, andyhot <[EMAIL PROTECTED]> wrote:
>> >> >>
>> >> >> Are you thinking about a new 'inherits' or 'extends' attribute in
>> the
>> >> >> <component-specification> element ?
>> >> >>
>> >> >>
>> >> >> Jesse Kuhnert wrote:
>> >> >> > Ok...I'm giving the whole "inheritance" thing a go..We'll see
>> how
>> >> that
>> >> >> > works
>> >> >> > out ;)
>> >> >> >
>> >> >> > On 8/27/06, Pedro Viegas <[EMAIL PROTECTED]> wrote:
>> >> >> >>
>> >> >> >> Humm, so the inheritance is actually easyer that the inclusion
>> >> of an
>> >> >> >> external .xml... ok, the inheritance is the best solution by
>> >> far so
>> >> >> good
>> >> >> >> news!
>> >> >> >> Has for the .xml and so on... thanks for the tip. :-D
>> >> >> >>
>> >> >> >> On 8/28/06, Jesse Kuhnert <[EMAIL PROTECTED]> wrote:
>> >> >> >> >
>> >> >> >> > I don't think it needs to be as complicated as you think.
>> >> >> >> >
>> >> >> >> > There is a whole set of classes people don't normally see
>> that
>> >> >> >> encapsulate
>> >> >> >> > all of the information parsed from templates. It wouldn't be
>> >> very
>> >> >> hard
>> >> >> >> to
>> >> >> >> > walk up the class heirarchy and create a "union" view of a
>> >> >> template.
>> >> >> >> >
>> >> >> >> > As for filename extensions, it only takes a second or two
>> to go
>> >> >> into
>> >> >> >> > eclipse
>> >> >> >> > -> window -> preferences -> editor -> content types -> to
>> >> >> >> associated all
>> >> >> >> > *.jwc/*.page/*.application/etc.. with wtp xml..
>> >> >> >> >
>> >> >> >> > I've been using autocompleting xsd/dtd stuff with wtp for a
>> >> pretty
>> >> >> >> long
>> >> >> >> > time
>> >> >> >> > now and have found it mostly sufficient for my needs,
>> especially
>> >> >> when
>> >> >> >> > tapestry is able to dynamically see my changes made to them.
>> >> >> >> >
>> >> >> >> > On 8/27/06, Pedro Viegas <[EMAIL PROTECTED]> wrote:
>> >> >> >> > >
>> >> >> >> > > By the way... since we're diging into this...
>> >> >> >> > > Again from the wiki...
>> >> >> >> > >
>> >> >> >> > > *"Rename the template page from *.page to *.xml or
>> *.page.xml*
>> >> >> This
>> >> >> >> > > feature
>> >> >> >> > > would allow the IDE to provide some completion and
validate
>> >> the
>> >> >> >> > template"
>> >> >> >> > >
>> >> >> >> > > If we didn't break compatibility with the use of the
>> previous
>> >> >> >> excception
>> >> >> >> > > simply allowing the use of normal .xml exception this
would
>> by
>> >> >> just
>> >> >> >> > > trivial... and the IDE validation and autocompletion
>> would be
>> >> >> VERY
>> >> >> >> > > welcome!
>> >> >> >> > > Sorry, this was me trying to compensate Geoff's decision
>> >> somehow!
>> >> >> >> :-(
>> >> >> >> > >
>> >> >> >> > > What do you say?
>> >> >> >> > >
>> >> >> >> > > On 8/28/06, Pedro Viegas <[EMAIL PROTECTED]> wrote:
>> >> >> >> > > >
>> >> >> >> > > > Don't you sleep Jesse? :-D
>> >> >> >> > > > Another lightning fast response, thanks!
>> >> >> >> > > >
>> >> >> >> > > > Gathering the bullet item from the wiki...
>> >> >> >> > > > *
>> >> >> >> > > > *
>> >> >> >> > > >
>> >> >> >> > > > * "Default Page/JWC Files and/or Page/JWC Inheritance*
>> Often
>> >> >> there
>> >> >> >> is
>> >> >> >> > a
>> >> >> >> > > > need to use the exact same services/beans/etc one
>> multiple
>> >> >> pages.
>> >> >> >> The
>> >> >> >> > > > current solution is to add them to all the page/jwc
>> files.
>> >> >> There
>> >> >> >> > should
>> >> >> >> > > be a
>> >> >> >> > > > way to inherit another page/jwc file and/or simply
import
>> >> >> another
>> >> >> >> > > page/jwc
>> >> >> >> > > > file's settings. (Note that this is already possible
with
>> >> >> >> > annotations.)"
>> >> >> >> > > >
>> >> >> >> > > >
>> >> >> >> > > > Of course the simple class inheritance would be just
>> >> >> perfect. But
>> >> >> >> that
>> >> >> >> > > may
>> >> >> >> > > > be veeeery hard to implement at this point right? So
many
>> >> >> >> component
>> >> >> >> to
>> >> >> >> > > > refactor.
>> >> >> >> > > > One thing pops up in my mind like a very handy and not
so
>> >> >> hard to
>> >> >> >> > > > implement feature from the item above... "or simply
>> import
>> >> >> another
>> >> >> >> > > page/jwc
>> >> >> >> > > > file's settings". A new Tag to import another jwc/page
>> (or
>> >> >> another
>> >> >> >> > > extension
>> >> >> >> > > > since it would be a section of the specification and
>> not a
>> >> >> >> complete
>> >> >> >> > > one...
>> >> >> >> > > > say like .spec or something like that) would be relay
>> simple
>> >> >> >> right?
>> >> >> >> > And
>> >> >> >> > > that
>> >> >> >> > > > would be veeery handy!
>> >> >> >> > > > The "There should be a way to inherit another page/jwc
>> file"
>> >> >> would
>> >> >> >> > also
>> >> >> >> > > > not be a problem to other users if it were not the
>> default
>> >> >> >> behaviour
>> >> >> >> > > right?
>> >> >> >> > > > Something like...
>> >> >> >> > > >
>> >> >> >> > > > <component-specification
>> >> >> >> > > >     class="Some class..."
>> >> >> >> > > >     inherits="/org/apache/tapestry/form/Form.jwc">
>> >> >> >> > > > (...)
>> >> >> >> > > >
>> >> >> >> > > > ...would be heaven right now, even if it would still let
>> all
>> >> >> >> the not
>> >> >> >> > > > wanted page and jwc files endure a while longer! :-D
>> >> >> >> > > >
>> >> >> >> > > > So, if implementing these two little wishes...
>> >> >> >> > > >
>> >> >> >> > > >    1. Import a .spec or something else file into a
>> page/jwc
>> >> >> (for
>> >> >> >> > > >    recurring resources)
>> >> >> >> > > >    2. Inherit from another jwc/page
>> >> >> >> > > >
>> >> >> >> > > > ...are quick to do... please Jesse, feel absolutely free
>> >> to do
>> >> >> >> so! I
>> >> >> >> > for
>> >> >> >> > > > one think it would benefit much the complexity of
>> defining
>> >> >> >> > > components/pages,
>> >> >> >> > > > along with the move to annotations we are already able
to
>> do
>> >> >> since
>> >> >> >> > Tap4!
>> >> >> >> > > >
>> >> >> >> > > > Of course one should also think, if it is worth to keep
>> >> >> >> building on
>> >> >> >> > top
>> >> >> >> > > > the the page/jwc reality or simply eradicate it for good
>> and
>> >> >> >> build a
>> >> >> >> > > > different approach full annotations all way long? So
much
>> >> has
>> >> >> >> allready
>> >> >> >> > > been
>> >> >> >> > > > done in this direction! OK, I could not resist...
>> shame on
>> >> >> me, I
>> >> >> >> will
>> >> >> >> > > > quietly punish myself for that previous remark! :-D
>> >> >> >> > > >
>> >> >> >> > > > Regards,
>> >> >> >> > > >
>> >> >> >> > > > On 8/28/06, Jesse Kuhnert <[EMAIL PROTECTED]> wrote:
>> >> >> >> > > >
>> >> >> >> > > > > I think inherited jwc configurations are part of the
>> 4.1
>> >> >> >> wishlist.
>> >> >> >> > > > >
>> >> >> >> > > > > http://wiki.apache.org/tapestry/Tapestry41WishList
>> >> >> >> > > > >
>> >> >> >> > > > > Besides that, annotations are definitely the way to
>> go to
>> >> get
>> >> >> >> > > > > inheritance
>> >> >> >> > > > > today. I would love nothing more than to be able to
use
>> >> them
>> >> >> >> > > exclusively
>> >> >> >> > > > > -
>> >> >> >> > > > > but I don't think I'd be able to get away with it
>> yet...
>> >> >> >> > > > >
>> >> >> >> > > > > I don't think jwc inheritance should be very hard to
>> >> >> implement,
>> >> >> >> but
>> >> >> >> > I
>> >> >> >> > > > > worry
>> >> >> >> > > > > about what kind of unexpected behaviour would come
>> >> about as
>> >> a
>> >> >> >> result
>> >> >> >> > > of
>> >> >> >> > > > > doing this. (for people relying on it ~not~ happening)
>> >> >> >> > > > >
>> >> >> >> > > > > Maybe I should pause on my other things and tackle
this
>> >> >> really
>> >> >> >> > quick?
>> >> >> >> > > > > (besides bugs of course)
>> >> >> >> > > > >
>> >> >> >> > > > > On 8/27/06, Pedro Viegas <[EMAIL PROTECTED]> wrote:
>> >> >> >> > > > > >
>> >> >> >> > > > > > Hi all,
>> >> >> >> > > > > >
>> >> >> >> > > > > > Been creating a component lybrary that is composed
of
>> >> >> several
>> >> >> >> > > tapestry
>> >> >> >> > > > > > components with some add-ons or default
>> customizations
>> >> >> and a
>> >> >> >> bunch
>> >> >> >> > > of
>> >> >> >> > > > > new
>> >> >> >> > > > > > ones.
>> >> >> >> > > > > > Been having a very repeating anoyance in doing
>> this and
>> >> >> would
>> >> >> >> like
>> >> >> >> > > to
>> >> >> >> > > > > get
>> >> >> >> > > > > > opinions on how to do this the best way, or if
>> this is
>> >> >> really
>> >> >> >> > > > > something we
>> >> >> >> > > > > > sould think about for the Tapestry wish list.
>> >> >> >> > > > > >
>> >> >> >> > > > > > If we get say for instance the Form component and
>> >> want to
>> >> >> >> > basically
>> >> >> >> > > > > add a
>> >> >> >> > > > > > few funcionallity to it. Say a new parameter or two
>> with
>> >> >> some
>> >> >> >> work
>> >> >> >> > > in
>> >> >> >> > > > > the
>> >> >> >> > > > > > backstages (java class! :-D).
>> >> >> >> > > > > > The normal approuch would be to subclass the
>> >> >> >> > > > > > org.apache.tapestry.form.Formand build the .jwc
>> >> companion
>> >> >> >> file.
>> >> >> >> > > > > > This is the problem, it's very anoying to have to
>> copy
>> >> >> several
>> >> >> >> > > > > parameters
>> >> >> >> > > > > > and injection and other Form Component needed
>> recourses
>> >> >> >> that are
>> >> >> >> > > > > defined
>> >> >> >> > > > > > in
>> >> >> >> > > > > > the jwc to our own jwc.
>> >> >> >> > > > > > If for instance in Tap4.2 the component suffers an
>> >> >> >> enhancement,
>> >> >> >> or
>> >> >> >> > > > > even in
>> >> >> >> > > > > > the current Tap version a BUG is detected and
>> >> corrected in
>> >> >> the
>> >> >> >> jwc
>> >> >> >> > > > > file
>> >> >> >> > > > > > one
>> >> >> >> > > > > > has to correct it in our code as well. Basically
>> we're
>> >> >> >> subclassing
>> >> >> >> > > > > part of
>> >> >> >> > > > > > the code and copy-pasting another part of the
code...
>> >> >> the one
>> >> >> >> > witch
>> >> >> >> > > is
>> >> >> >> > > > > > done
>> >> >> >> > > > > > declarativly and not in the Java class.
>> >> >> >> > > > > >
>> >> >> >> > > > > > Is there a nother way of doing this better?
>> >> >> >> > > > > > Of couse I could build a component witch wraped the
>> >> >> tapestry
>> >> >> >> > > component
>> >> >> >> > > > > > inside it. That's what I have done at the moment,
but
>> it
>> >> >> looks
>> >> >> >> > like
>> >> >> >> > > an
>> >> >> >> > > > > > unnecessary "layer" for tapestry to run through when
>> >> >> rendering
>> >> >> >> the
>> >> >> >> > > > > page.
>> >> >> >> > > > > > One
>> >> >> >> > > > > > more layer of code to deel with in every AJAX
refresh
>> >> of a
>> >> >> >> form,
>> >> >> >> > and
>> >> >> >> > > > > so on
>> >> >> >> > > > > > and so on.
>> >> >> >> > > > > >
>> >> >> >> > > > > > Seems like the more I use the JWC files the more I
>> >> want to
>> >> >> >> take
>> >> >> >> > > every
>> >> >> >> > > > > bit
>> >> >> >> > > > > > of
>> >> >> >> > > > > > information from them. Anoying little things aren't
>> >> they?
>> >> >> >> > > > > > Long live the annotation in the Javaclass. (Witch I
>> >> >> think are
>> >> >> >> not
>> >> >> >> > > the
>> >> >> >> > > > > > answer
>> >> >> >> > > > > > here, are they?)
>> >> >> >> > > > > >
>> >> >> >> > > > > > Another painfull example is, for instance, if one
>> needed
>> >> to
>> >> >> >> build
>> >> >> >> > a
>> >> >> >> > > > > > component for example to accept number input.
>> Simply a
>> >> >> >> spin-off
>> >> >> >> of
>> >> >> >> > > the
>> >> >> >> > > > >
>> >> >> >> > > > > > TextField with the default translator to number.
>> Sonds
>> >> very
>> >> >> >> > simple,
>> >> >> >> > > a
>> >> >> >> > > > > > class
>> >> >> >> > > > > > that subclasses the
>> >> org.apache.tapestry.form.TextField and
>> >> >> >> a...
>> >> >> >> > jwc
>> >> >> >> > > > > > component that is a full copy-paste of the original
>> >> >> TextField
>> >> >> >> one
>> >> >> >> > > with
>> >> >> >> > > > > the
>> >> >> >> > > > > > changed translator. Very ugly is it not?
>> >> >> >> > > > > > When we're talking of simples parameter
>> definition, no
>> >> >> >> problem,
>> >> >> >> > it's
>> >> >> >> > > > > even
>> >> >> >> > > > > > nice to reduce to what we want the unneeded
parameter
>> >> list,
>> >> >> >> but
>> >> >> >> > when
>> >> >> >> > > > > we're
>> >> >> >> > > > > > talking of injections, beans, JS scripts, and so on,
>> >> >> well in
>> >> >> >> these
>> >> >> >> > > > > cases
>> >> >> >> > > > > > we're going deep in the heart of the component
>> >> >> implementation
>> >> >> >> and
>> >> >> >> > > are
>> >> >> >> > > > > > asking
>> >> >> >> > > > > > for refactors (new copy-paste) when new releases of
>> >> >> >> tapestry are
>> >> >> >> > > > > released.
>> >> >> >> > > > > >
>> >> >> >> > > > > > Any thoughts on this will be welcomed.
>> >> >> >> > > > > >
>> >> >> >> > > > > > --
>> >> >> >> > > > > > Pedro Viegas
>> >> >> >> > > > > >
>> >> >> >> > > > > >
>> >> >> >> > > > >
>> >> >> >> > > > >
>> >> >> >> > > > > --
>> >> >> >> > > > > Jesse Kuhnert
>> >> >> >> > > > > Tapestry/Dojo/(and a dash of TestNG), team
>> >> member/developer
>> >> >> >> > > > >
>> >> >> >> > > > > Open source based consulting work centered around
>> >> >> >> > > > > dojo/tapestry/tacos/hivemind.
>> >> http://blog.opencomponentry.com
>> >> >> >> > > > >
>> >> >> >> > > > >
>> >> >> >> > > >
>> >> >> >> > > >
>> >> >> >> > > > --
>> >> >> >> > > > Pedro Viegas
>> >> >> >> > > >
>> >> >> >> > >
>> >> >> >> > >
>> >> >> >> > >
>> >> >> >> > > --
>> >> >> >> > > Pedro Viegas
>> >> >> >> > >
>> >> >> >> > >
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > --
>> >> >> >> > Jesse Kuhnert
>> >> >> >> > Tapestry/Dojo/(and a dash of TestNG), team member/developer
>> >> >> >> >
>> >> >> >> > Open source based consulting work centered around
>> >> >> >> > dojo/tapestry/tacos/hivemind.
http://blog.opencomponentry.com
>> >> >> >> >
>> >> >> >> >
>> >> >> >>
>> >> >> >>
>> >> >> >> --
>> >> >> >> Pedro Viegas
>> >> >> >>
>> >> >> >>
>> >> >> >
>> >> >> >
>> >> >>
>> >> >>
>> >> >> --
>> >> >> Andreas Andreou - [EMAIL PROTECTED] - http://andyhot.di.uoa.gr
>> >> >> Tapestry / Tacos developer
>> >> >> Open Source / J2EE Consulting
>> >> >>
>> >> >>
>> >> >>
>> ---------------------------------------------------------------------
>> >> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >> >> For additional commands, e-mail: [EMAIL PROTECTED]
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >>
>> >>
>> >> --
>> >> Andreas Andreou - [EMAIL PROTECTED] - http://andyhot.di.uoa.gr
>> >> Tapestry / Tacos developer
>> >> Open Source / J2EE Consulting
>> >>
>> >>
>> >>
---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >> For additional commands, e-mail: [EMAIL PROTECTED]
>> >>
>> >>
>> >
>> >
>>
>>
>> --
>> Andreas Andreou - [EMAIL PROTECTED] - http://andyhot.di.uoa.gr
>> Tapestry / Tacos developer
>> Open Source / J2EE Consulting
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
>


--
Andreas Andreou - [EMAIL PROTECTED] - http://andyhot.di.uoa.gr
Tapestry / Tacos developer
Open Source / J2EE Consulting


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
Jesse Kuhnert
Tapestry/Dojo/(and a dash of TestNG), team member/developer

Open source based consulting work centered around
dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com

Reply via email to