You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Shing Hing Man <ma...@yahoo.com> on 2007/07/29 22:20:21 UTC

T5.0.5 Informal parameters not rendered in a descendant of AbstractField.

I have subclassed AbstractField  to make a colour
picker component,
which is essentially a read only text field with a
clickable  icon next to it.
The component is working, but it does not render the
informal parameters.
With

 <t:colorPicker   size="3" color="color" />

I expect the rendered text field to have  an attribute
of size="3".

The following is the code of my component.
Any assistance is appreciated!

Shing

@SupportsInformalParameters
public class ColorPicker extends AbstractField {
	//private String clientId;

	@Parameter(required = true, principal = true)
	private String color;

	@Inject
	private Request request;

	@Inject
	private ComponentResources resources;

	@Environmental
	private PageRenderSupport support;

	@Inject

@Path("classpath:/org/man/tapestry5/components/AnchorPosition.js")
	private Asset anchorScript;

	@Inject

@Path("classpath:/org/man/tapestry5/components/ColorPicker2.js")
	private Asset colorPicker2Script;

	@Inject

@Path("classpath:/org/man/tapestry5/components/PopupWindow.js")
	private Asset popupWindowScript;

	@Inject

@Path("classpath:/org/man/tapestry5/components/colorPicker.gif")
	private Asset icon;

	

	void beginRender(MarkupWriter writer) {
		
	    String name=getElementName();
		
		String pickerName = name + "_pick";
		String pickerColor = name + "_color";

		// need to find out how to gte the form name
		String formName = "form";
		String targetField = "document." + formName + "." +
pickerColor;

		String color = getColor();
		if (color == null) {
			color = "#FFFFFF"; // white
		}

		String style = "background:" + color + ";color:" +
color + ";";
		
		writer.element("input", "type", "text", "name",
pickerColor,
				"onFocus", "blur()", "style", style, "value",
				color);
		resources.renderInformalParameters(writer);
		
	    writer.end(); // end of input
	

		writer.element("a", "href", "javascript:void(null)",
"name",
				pickerName, "id", pickerName, "onclick",
"select_color("
						+ targetField + "," + "'" + pickerName + "'" +
")");

	
		writer.element("img", "src", icon.toClientURL(),
"border", 0, "align",
				"top");

		writer.end(); // end of <img>
		writer.end(); // end of <a>
		
		support.addScriptLink(anchorScript);
		support.addScriptLink(popupWindowScript);
		support.addScriptLink(colorPicker2Script);
		
	}


	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}


	@Override
	protected void processSubmission(FormSupport
formSupport, String elementName) {
		
		color = request.getParameter(elementName +
"_color");
	}

}

Home page : http://www.lombok.demon.co.uk/



      ___________________________________________________________ 
Yahoo! Mail is the world's favourite email. Don't settle for less, sign up for
your free account today http://uk.rd.yahoo.com/evt=44106/*http://uk.docs.yahoo.com/mail/winter07.html 

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


Re: T5.0.5 Informal parameters not rendered in a descendant of AbstractField.

Posted by Nick Westgate <ni...@key-planning.co.jp>.
Hi Shing.

By inheriting from AbstractField you are using these mixins:

     @SuppressWarnings("unused")
     @Mixin
     private RenderInformals _renderInformals;

     @SuppressWarnings("unused")
     @Mixin
     private RenderDisabled _renderDisabled;

RenderInformals is rendering the informal parameters.

Cheers,
Nick.


Shing Hing Man wrote:
>  <t:colorPicker   size="3" color="color" />
> 
> The informal parameter  size"3" is rendered if I 
> do the following changes to my ColorPicker.java
> (without using  mixins).
> 
> 1) Remove @SupportsInformalParameters and 
> resources.renderInformalParameters(writer)
> 
> 2) In the beginRender method, only 
> render the <input type="text"> tag (but not closing
> it).
> 
> 3) Add an  afterRender method to closed the 
> <input> tag and render the color picker icon.
> 
> 
> Shing 
> 
> PS I have not tried the mixin way yet.

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


Re: T5.0.5 Informal parameters not rendered in a descendant of AbstractField.

Posted by Shing Hing Man <ma...@yahoo.com>.
 <t:colorPicker   size="3" color="color" />

The informal parameter  size"3" is rendered if I 
do the following changes to my ColorPicker.java
(without using  mixins).

1) Remove @SupportsInformalParameters and 
resources.renderInformalParameters(writer)

2) In the beginRender method, only 
render the <input type="text"> tag (but not closing
it).

3) Add an  afterRender method to closed the 
<input> tag and render the color picker icon.


Shing 

PS I have not tried the mixin way yet.

--- Nick Westgate <ni...@key-planning.co.jp> wrote:

> Hi Shing.
> 
> Nice to see you getting into T5. ;-)
> 
> Not sure why your
> resources.renderInformalParameters(writer)
> fails, but it's likely a clash with the
> RenderInformals mixin
> in AbstractField. You should read the docs about
> rendering
> multiple tags:
>
http://tapestry.apache.org/tapestry5/tapestry-core/apidocs/org/apache/tapestry/corelib/mixins/RenderInformals.html
> 
> I can confirm that writing a tag in beginRender and
> closing it
> in afterRender (without calling
> renderInformalParameters) works
> fine with informals because of AbstractField's
> RenderInformals.
> 
> Also, you don't need to add
> @SupportsInformalParameters.
> 
> Cheers,
> Nick.
> 
> 
> Shing Hing Man wrote:
> > I have subclassed AbstractField  to make a colour
> > picker component,
> > which is essentially a read only text field with a
> > clickable  icon next to it.
> > The component is working, but it does not render
> the
> > informal parameters.
> > With
> > 
> >  <t:colorPicker   size="3" color="color" />
> > 
> > I expect the rendered text field to have  an
> attribute
> > of size="3".
> > 
> > The following is the code of my component.
> > Any assistance is appreciated!
> > 
> > Shing
> > 
> > @SupportsInformalParameters
> > public class ColorPicker extends AbstractField {
> > 	//private String clientId;
> > 
> > 	@Parameter(required = true, principal = true)
> > 	private String color;
> > 
> > 	@Inject
> > 	private Request request;
> > 
> > 	@Inject
> > 	private ComponentResources resources;
> > 
> > 	@Environmental
> > 	private PageRenderSupport support;
> > 
> > 	@Inject
> > 
> >
>
@Path("classpath:/org/man/tapestry5/components/AnchorPosition.js")
> > 	private Asset anchorScript;
> > 
> > 	@Inject
> > 
> >
>
@Path("classpath:/org/man/tapestry5/components/ColorPicker2.js")
> > 	private Asset colorPicker2Script;
> > 
> > 	@Inject
> > 
> >
>
@Path("classpath:/org/man/tapestry5/components/PopupWindow.js")
> > 	private Asset popupWindowScript;
> > 
> > 	@Inject
> > 
> >
>
@Path("classpath:/org/man/tapestry5/components/colorPicker.gif")
> > 	private Asset icon;
> > 
> > 	
> > 
> > 	void beginRender(MarkupWriter writer) {
> > 		
> > 	    String name=getElementName();
> > 		
> > 		String pickerName = name + "_pick";
> > 		String pickerColor = name + "_color";
> > 
> > 		// need to find out how to gte the form name
> > 		String formName = "form";
> > 		String targetField = "document." + formName +
> "." +
> > pickerColor;
> > 
> > 		String color = getColor();
> > 		if (color == null) {
> > 			color = "#FFFFFF"; // white
> > 		}
> > 
> > 		String style = "background:" + color + ";color:"
> +
> > color + ";";
> > 		
> > 		writer.element("input", "type", "text", "name",
> > pickerColor,
> > 				"onFocus", "blur()", "style", style, "value",
> > 				color);
> > 		resources.renderInformalParameters(writer);
> > 		
> > 	    writer.end(); // end of input
> > 	
> > 
> > 		writer.element("a", "href",
> "javascript:void(null)",
> > "name",
> > 				pickerName, "id", pickerName, "onclick",
> > "select_color("
> > 						+ targetField + "," + "'" + pickerName + "'"
> +
> > ")");
> > 
> > 	
> > 		writer.element("img", "src", icon.toClientURL(),
> > "border", 0, "align",
> > 				"top");
> > 
> > 		writer.end(); // end of <img>
> > 		writer.end(); // end of <a>
> > 		
> > 		support.addScriptLink(anchorScript);
> > 		support.addScriptLink(popupWindowScript);
> > 		support.addScriptLink(colorPicker2Script);
> > 		
> > 	}
> > 
> > 
> > 	public String getColor() {
> > 		return color;
> > 	}
> > 
> > 	public void setColor(String color) {
> > 		this.color = color;
> > 	}
> > 
> > 
> > 	@Override
> > 	protected void processSubmission(FormSupport
> > formSupport, String elementName) {
> > 		
> > 		color = request.getParameter(elementName +
> > "_color");
> > 	}
> > 
> > }
> > 
> > Home page : http://www.lombok.demon.co.uk/
> > 
> > 
> > 
> >      
>
___________________________________________________________
> 
> > Yahoo! Mail is the world's favourite email. Don't
> settle for less, sign up for
> > your free account today
>
http://uk.rd.yahoo.com/evt=44106/*http://uk.docs.yahoo.com/mail/winter07.html
> 
> > 
> >
>
---------------------------------------------------------------------
> > 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
> 
> 


Home page : http://www.lombok.demon.co.uk/



      ___________________________________________________________
Yahoo! Answers - Got a question? Someone out there knows the answer. Try it
now.
http://uk.answers.yahoo.com/ 

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


Re: T5.0.5 Informal parameters not rendered in a descendant of AbstractField.

Posted by Shing Hing Man <ma...@yahoo.com>.
Thanks for the pointer Nick!
I will try again.

Shing 



--- Nick Westgate <ni...@key-planning.co.jp> wrote:

> Hi Shing.
> 
> Nice to see you getting into T5. ;-)
> 
> Not sure why your
> resources.renderInformalParameters(writer)
> fails, but it's likely a clash with the
> RenderInformals mixin
> in AbstractField. You should read the docs about
> rendering
> multiple tags:
>
http://tapestry.apache.org/tapestry5/tapestry-core/apidocs/org/apache/tapestry/corelib/mixins/RenderInformals.html
> 
> I can confirm that writing a tag in beginRender and
> closing it
> in afterRender (without calling
> renderInformalParameters) works
> fine with informals because of AbstractField's
> RenderInformals.
> 
> Also, you don't need to add
> @SupportsInformalParameters.
> 
> Cheers,
> Nick.
> 
> 
> Shing Hing Man wrote:
> > I have subclassed AbstractField  to make a colour
> > picker component,
> > which is essentially a read only text field with a
> > clickable  icon next to it.
> > The component is working, but it does not render
> the
> > informal parameters.
> > With
> > 
> >  <t:colorPicker   size="3" color="color" />
> > 
> > I expect the rendered text field to have  an
> attribute
> > of size="3".
> > 
> > The following is the code of my component.
> > Any assistance is appreciated!
> > 
> > Shing
> > 
> > @SupportsInformalParameters
> > public class ColorPicker extends AbstractField {
> > 	//private String clientId;
> > 
> > 	@Parameter(required = true, principal = true)
> > 	private String color;
> > 
> > 	@Inject
> > 	private Request request;
> > 
> > 	@Inject
> > 	private ComponentResources resources;
> > 
> > 	@Environmental
> > 	private PageRenderSupport support;
> > 
> > 	@Inject
> > 
> >
>
@Path("classpath:/org/man/tapestry5/components/AnchorPosition.js")
> > 	private Asset anchorScript;
> > 
> > 	@Inject
> > 
> >
>
@Path("classpath:/org/man/tapestry5/components/ColorPicker2.js")
> > 	private Asset colorPicker2Script;
> > 
> > 	@Inject
> > 
> >
>
@Path("classpath:/org/man/tapestry5/components/PopupWindow.js")
> > 	private Asset popupWindowScript;
> > 
> > 	@Inject
> > 
> >
>
@Path("classpath:/org/man/tapestry5/components/colorPicker.gif")
> > 	private Asset icon;
> > 
> > 	
> > 
> > 	void beginRender(MarkupWriter writer) {
> > 		
> > 	    String name=getElementName();
> > 		
> > 		String pickerName = name + "_pick";
> > 		String pickerColor = name + "_color";
> > 
> > 		// need to find out how to gte the form name
> > 		String formName = "form";
> > 		String targetField = "document." + formName +
> "." +
> > pickerColor;
> > 
> > 		String color = getColor();
> > 		if (color == null) {
> > 			color = "#FFFFFF"; // white
> > 		}
> > 
> > 		String style = "background:" + color + ";color:"
> +
> > color + ";";
> > 		
> > 		writer.element("input", "type", "text", "name",
> > pickerColor,
> > 				"onFocus", "blur()", "style", style, "value",
> > 				color);
> > 		resources.renderInformalParameters(writer);
> > 		
> > 	    writer.end(); // end of input
> > 	
> > 
> > 		writer.element("a", "href",
> "javascript:void(null)",
> > "name",
> > 				pickerName, "id", pickerName, "onclick",
> > "select_color("
> > 						+ targetField + "," + "'" + pickerName + "'"
> +
> > ")");
> > 
> > 	
> > 		writer.element("img", "src", icon.toClientURL(),
> > "border", 0, "align",
> > 				"top");
> > 
> > 		writer.end(); // end of <img>
> > 		writer.end(); // end of <a>
> > 		
> > 		support.addScriptLink(anchorScript);
> > 		support.addScriptLink(popupWindowScript);
> > 		support.addScriptLink(colorPicker2Script);
> > 		
> > 	}
> > 
> > 
> > 	public String getColor() {
> > 		return color;
> > 	}
> > 
> > 	public void setColor(String color) {
> > 		this.color = color;
> > 	}
> > 
> > 
> > 	@Override
> > 	protected void processSubmission(FormSupport
> > formSupport, String elementName) {
> > 		
> > 		color = request.getParameter(elementName +
> > "_color");
> > 	}
> > 
> > }
> > 
> > Home page : http://www.lombok.demon.co.uk/
> > 
> > 
> > 
> >      
>
___________________________________________________________
> 
> > Yahoo! Mail is the world's favourite email. Don't
> settle for less, sign up for
> > your free account today
>
http://uk.rd.yahoo.com/evt=44106/*http://uk.docs.yahoo.com/mail/winter07.html
> 
> > 
> >
>
---------------------------------------------------------------------
> > 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
> 
> 


Home page : http://www.lombok.demon.co.uk/



      ___________________________________________________________ 
Yahoo! Mail is the world's favourite email. Don't settle for less, sign up for
your free account today http://uk.rd.yahoo.com/evt=44106/*http://uk.docs.yahoo.com/mail/winter07.html 

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


Re: T5.0.5 Informal parameters not rendered in a descendant of AbstractField.

Posted by Nick Westgate <ni...@key-planning.co.jp>.
Hi Shing.

Nice to see you getting into T5. ;-)

Not sure why your resources.renderInformalParameters(writer)
fails, but it's likely a clash with the RenderInformals mixin
in AbstractField. You should read the docs about rendering
multiple tags:
http://tapestry.apache.org/tapestry5/tapestry-core/apidocs/org/apache/tapestry/corelib/mixins/RenderInformals.html

I can confirm that writing a tag in beginRender and closing it
in afterRender (without calling renderInformalParameters) works
fine with informals because of AbstractField's RenderInformals.

Also, you don't need to add @SupportsInformalParameters.

Cheers,
Nick.


Shing Hing Man wrote:
> I have subclassed AbstractField  to make a colour
> picker component,
> which is essentially a read only text field with a
> clickable  icon next to it.
> The component is working, but it does not render the
> informal parameters.
> With
> 
>  <t:colorPicker   size="3" color="color" />
> 
> I expect the rendered text field to have  an attribute
> of size="3".
> 
> The following is the code of my component.
> Any assistance is appreciated!
> 
> Shing
> 
> @SupportsInformalParameters
> public class ColorPicker extends AbstractField {
> 	//private String clientId;
> 
> 	@Parameter(required = true, principal = true)
> 	private String color;
> 
> 	@Inject
> 	private Request request;
> 
> 	@Inject
> 	private ComponentResources resources;
> 
> 	@Environmental
> 	private PageRenderSupport support;
> 
> 	@Inject
> 
> @Path("classpath:/org/man/tapestry5/components/AnchorPosition.js")
> 	private Asset anchorScript;
> 
> 	@Inject
> 
> @Path("classpath:/org/man/tapestry5/components/ColorPicker2.js")
> 	private Asset colorPicker2Script;
> 
> 	@Inject
> 
> @Path("classpath:/org/man/tapestry5/components/PopupWindow.js")
> 	private Asset popupWindowScript;
> 
> 	@Inject
> 
> @Path("classpath:/org/man/tapestry5/components/colorPicker.gif")
> 	private Asset icon;
> 
> 	
> 
> 	void beginRender(MarkupWriter writer) {
> 		
> 	    String name=getElementName();
> 		
> 		String pickerName = name + "_pick";
> 		String pickerColor = name + "_color";
> 
> 		// need to find out how to gte the form name
> 		String formName = "form";
> 		String targetField = "document." + formName + "." +
> pickerColor;
> 
> 		String color = getColor();
> 		if (color == null) {
> 			color = "#FFFFFF"; // white
> 		}
> 
> 		String style = "background:" + color + ";color:" +
> color + ";";
> 		
> 		writer.element("input", "type", "text", "name",
> pickerColor,
> 				"onFocus", "blur()", "style", style, "value",
> 				color);
> 		resources.renderInformalParameters(writer);
> 		
> 	    writer.end(); // end of input
> 	
> 
> 		writer.element("a", "href", "javascript:void(null)",
> "name",
> 				pickerName, "id", pickerName, "onclick",
> "select_color("
> 						+ targetField + "," + "'" + pickerName + "'" +
> ")");
> 
> 	
> 		writer.element("img", "src", icon.toClientURL(),
> "border", 0, "align",
> 				"top");
> 
> 		writer.end(); // end of <img>
> 		writer.end(); // end of <a>
> 		
> 		support.addScriptLink(anchorScript);
> 		support.addScriptLink(popupWindowScript);
> 		support.addScriptLink(colorPicker2Script);
> 		
> 	}
> 
> 
> 	public String getColor() {
> 		return color;
> 	}
> 
> 	public void setColor(String color) {
> 		this.color = color;
> 	}
> 
> 
> 	@Override
> 	protected void processSubmission(FormSupport
> formSupport, String elementName) {
> 		
> 		color = request.getParameter(elementName +
> "_color");
> 	}
> 
> }
> 
> Home page : http://www.lombok.demon.co.uk/
> 
> 
> 
>       ___________________________________________________________ 
> Yahoo! Mail is the world's favourite email. Don't settle for less, sign up for
> your free account today http://uk.rd.yahoo.com/evt=44106/*http://uk.docs.yahoo.com/mail/winter07.html 
> 
> ---------------------------------------------------------------------
> 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