You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Shaun <na...@shaunc.com> on 2006/10/30 20:47:20 UTC
One component, multiple templates?
Hello all,
I'm trying to determine the best way to generate slightly different output
for a component, based upon the parameters passed into it. For example,
suppose I've created a component called MessagePane that displays a title
and message inside of some CSS formatting:
<span jwcid="@MessagePane" title="Unread Messages" message="You have 6
unread messages.">Unread Messages</span>
Depending upon the type of message being displayed, I'd like to change the
CSS class of the object... Say, a generic alert might appear in a pane with
a light blue border, but a critical error should be highlighted in red. The
way I've implemented this for now is that I've subclassed MessagePane as
ErrorPane, and I placed the modified CSS directly into the ErrorPane.html
template.
Is there an easier way to accomplish this goal, preferably using a single
component? I'm now going to need several more "message types" - I'd rather
be able to pass in the type as a parameter, instead of creating a new
subclassed component for each type.
Thanks!
--
View this message in context: http://www.nabble.com/One-component%2C-multiple-templates--tf2541643.html#a7081573
Sent from the Tapestry - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: One component, multiple templates?
Posted by Shaun <na...@shaunc.com>.
Thanks Jesse, this is precisely the pattern that I was looking for. It works
a treat.
Shaun
Jessek wrote:
>
> For something like this I would do it this way:
>
> -) Write out your html as you would normally...
>
> -) For all messages define one basic css class name and set it on all of
> them.
>
> -) Create a more specific css class name for each message type.
>
> -) Create a simple method that returns a String of the css classes to
> apply
> to your html element , depending on the type of message... IE :
>
> [snip]
>
>
--
View this message in context: http://www.nabble.com/One-component%2C-multiple-templates--tf2541643.html#a7096740
Sent from the Tapestry - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: One component, multiple templates?
Posted by Jesse Kuhnert <jk...@gmail.com>.
For something like this I would do it this way:
-) Write out your html as you would normally...
-) For all messages define one basic css class name and set it on all of
them.
-) Create a more specific css class name for each message type.
-) Create a simple method that returns a String of the css classes to apply
to your html element , depending on the type of message... IE :
Html:
<div jwcid="@Any" class="ognl:messageTypeClass" >Stuff</div>
java component:
public String getMessageTypeClass()
{
StringBuffer str = new StringBuffer("message");
switch(getMessageType()){
case Message.WARNING:
str.append(" warning");
break;
case Message.INFO:
str.append(" info");
break;
// etc...
}
}
That's it. Then make sure you clearly document what the class names are, but
don't define them. The second you output a style="" or embed a <style>
definition you remove any ability anyone else has to control the styling on
your html.
If you are using tapestry 4.1.1 I think Andy recently added in the ability
to have components/libraries contribute css files directly to a document but
I haven't used / investigated its usage yet..
On 10/30/06, Daniel Tabuenca <dt...@gmail.com> wrote:
>
> Why not use a paraamter on the MessagePane component? You can then
> use an @If component in your MessagePane to render the css differently
> depending on the value of the parameter. Am I not understanding
> correctly what you are trying to do?
>
> On 10/30/06, Shaun <na...@shaunc.com> wrote:
> >
> > Hello all,
> >
> > I'm trying to determine the best way to generate slightly different
> output
> > for a component, based upon the parameters passed into it. For example,
> > suppose I've created a component called MessagePane that displays a
> title
> > and message inside of some CSS formatting:
> >
> > <span jwcid="@MessagePane" title="Unread Messages" message="You have 6
> > unread messages.">Unread Messages</span>
> >
> > Depending upon the type of message being displayed, I'd like to change
> the
> > CSS class of the object... Say, a generic alert might appear in a pane
> with
> > a light blue border, but a critical error should be highlighted in red.
> The
> > way I've implemented this for now is that I've subclassed MessagePane as
> > ErrorPane, and I placed the modified CSS directly into the
> ErrorPane.html
> > template.
> >
> > Is there an easier way to accomplish this goal, preferably using a
> single
> > component? I'm now going to need several more "message types" - I'd
> rather
> > be able to pass in the type as a parameter, instead of creating a new
> > subclassed component for each type.
> >
> > Thanks!
> > --
> > View this message in context:
> http://www.nabble.com/One-component%2C-multiple-templates--tf2541643.html#a7081573
> > Sent from the Tapestry - User mailing list archive at Nabble.com.
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> > For additional commands, e-mail: users-help@tapestry.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>
--
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
Re: One component, multiple templates?
Posted by Daniel Tabuenca <dt...@gmail.com>.
Why not use a paraamter on the MessagePane component? You can then
use an @If component in your MessagePane to render the css differently
depending on the value of the parameter. Am I not understanding
correctly what you are trying to do?
On 10/30/06, Shaun <na...@shaunc.com> wrote:
>
> Hello all,
>
> I'm trying to determine the best way to generate slightly different output
> for a component, based upon the parameters passed into it. For example,
> suppose I've created a component called MessagePane that displays a title
> and message inside of some CSS formatting:
>
> <span jwcid="@MessagePane" title="Unread Messages" message="You have 6
> unread messages.">Unread Messages</span>
>
> Depending upon the type of message being displayed, I'd like to change the
> CSS class of the object... Say, a generic alert might appear in a pane with
> a light blue border, but a critical error should be highlighted in red. The
> way I've implemented this for now is that I've subclassed MessagePane as
> ErrorPane, and I placed the modified CSS directly into the ErrorPane.html
> template.
>
> Is there an easier way to accomplish this goal, preferably using a single
> component? I'm now going to need several more "message types" - I'd rather
> be able to pass in the type as a parameter, instead of creating a new
> subclassed component for each type.
>
> Thanks!
> --
> View this message in context: http://www.nabble.com/One-component%2C-multiple-templates--tf2541643.html#a7081573
> Sent from the Tapestry - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org