Issue with #3 is not very hard, we already have a RenderingContext that can
be used for that. We could probably hook that code in CoreRenderer or
XhtmlRenderer. The only issue left then would be to not have document, head
and body renderer to execute it. Placing it in FormRenderer only does not
seems right in case your page does not contain a form at all or use a basic
JSF form (extremely unlikely though).
On 7/27/07, Martin Marinschek <[EMAIL PROTECTED]> wrote:
>
> For the discussion on if and how to integrate this into Trinidad - I
> see three cases:
>
> 1) people only want basic skinning, Trinidad uses simple.portlet, and
> emits portlet-standard compliant skinning hooks
>
> 2) people want normal Trinidad skinning, portlet container provides
> CSS file in the head, Trinidad doesn't have to do anything (especially
> not switch to portlet-standard compliant skinning hooks)
>
> 3) people want Trinidad skinning, portlet container does not provide
> the CSS file, Trinidad portlet needs to add the CSS file with
> JavaScript itself. Issue to solve: CSS file needs to be added only
> once.
>
> regards,
>
> Martin
>
> On 7/27/07, Martin Marinschek <[EMAIL PROTECTED]> wrote:
> > Hi Simon, Scott,
> >
> > I've made skinning work now in any container - this is the code that
> > I've used, for other users as a reference. We should carry on the
> > discussion if and how to integrate this into Trinidad itself, though.
> >
> > regards,
> >
> > Martin
> >
> > --------------------
> >
> > use a binding attribute on your tr:form:
> >
> > <tr:form id="helloForm" binding="#{personPage.form}">
> >
> > provide a getter for this form in your backing-bean:
> >
> > public CoreForm getForm() {
> > CoreForm coreForm = new MyCoreForm();
> > return coreForm;
> > }
> >
> > write the class MyCoreForm, extending Trinidad's CoreForm - with that,
> > you should be good.
> >
> > public static class MyCoreForm extends CoreForm {
> > @Override
> > public void encodeBegin(FacesContext context) throws IOException
> {
> >
> > StyleContext styleContext = ((CoreRenderingContext)
> > RenderingContext.getCurrentInstance()).getStyleContext();
> > String uri =
> > styleContext.getStyleProvider().getStyleSheetURI(styleContext);
> >
> > String contextUri =
> > context.getExternalContext().getRequestContextPath();
> > String baseURL = contextUri +
> XhtmlConstants.STYLES_CACHE_DIRECTORY;
> >
> > String finalUri = context.getExternalContext
> > ().encodeResourceURL(baseURL+uri);
> >
> > StringBuffer buf = new StringBuffer();
> >
> > buf.append("<script type=\"text/javascript\">\n" +
> > "\n" +
> > "//<![CDATA[\n" +
> > "\n" +
> > "if(document.createStyleSheet) {\n" +
> > "\n" +
> > "document.createStyleSheet('"+finalUri+"');\n" +
> > "\n" +
> > "}\n" +
> > "\n" +
> > "else {\n" +
> > "\n" +
> > "var styles = \"@import url('"+finalUri+"');\";\n" +
> > "\n" +
> > "var newSS=document.createElement('link');\n" +
> > "\n" +
> > "newSS.rel='stylesheet';\n" +
> > "\n" +
> > "newSS.href='"+finalUri+"';\n" +
> > "\n" +
> >
> > "document.getElementsByTagName(\"head\")[0].appendChild(newSS);\n" +
> > "\n" +
> > "}\n" +
> > "\n" +
> > "//]]>\n" +
> > "\n" +
> > "</script>");
> > context.getResponseWriter().write(buf.toString());
> >
> > super.encodeBegin(context);
> > }
> > }
> >
> > On 7/26/07, Simon Lessard <[EMAIL PROTECTED]> wrote:
> > > Thus linking Portal-Trinidad users to specific portal vendor(s)... Ok,
> I see
> > > the issue now... bleh...
> > >
> > >
> > > On 7/26/07, Scott O'Bryan < [EMAIL PROTECTED]> wrote:
> > > > Simon, you are correct. The portal would be able to push a
> parameter to
> > > > Trinidad. Always in a portal environment the skin is uncompressed
> so
> > > > that is also not an issue. But currently changing the stylesheet
> > > > provided by the Portal is a modification that needs to be made to
> the
> > > > portal itself. I think that's where Martin is coming from. An
> > > > unmodified portal container doesn't look very good when displaying
> faces
> > > > and forcing every portal container to provide a skin that is not
> based
> > > > off a standard is not going to be very successful in the general
> case.
> > > > I totally agree with this, but we're sort of between a rock and a
> hard
> > > > place. :)
> > > >
> > > >
> > > > Simon Lessard wrote:
> > > > > Not really, I think we detect a specific parameter pushed by the
> > > > > container. So only container supporting skinning would push it,
> > > > > effectively synchronizing all portlet LaF. For other container I
> think
> > > > > we simply use the normal code path... That or I had some serious
> > > > > hallucinations in the past months and imagined all this...
> > > > >
> > > > > On 7/26/07, *Martin Marinschek* <[EMAIL PROTECTED]
> > > > > <mailto:[EMAIL PROTECTED] >> wrote:
> > > > >
> > > > > Hi Simon,
> > > > >
> > > > > well, but this would then be portlet container dependent,
> right?
> > > You'd
> > > > > effectively need to implement trinidad skinning in every
> portlet
> > > > > container.
> > > > >
> > > > > regards,
> > > > >
> > > > > Martin
> > > > >
> > > > > On 7/26/07, Simon Lessard < [EMAIL PROTECTED]
> > > > > <mailto: [EMAIL PROTECTED]>> wrote:
> > > > > > Personally, I don't see why the portal should not be able to
> > > > > provide all
> > > > > > selectors.
> > > > > >
> > > > > > Aren't we just not compressing the selector names when we
> detect
> > > > > a portal
> > > > > > environment or did I miss something? I think that strategy
> > > > > cannot provides
> > > > > > the icons though.
> > > > > >
> > > > > >
> > > > > > On 7/26/07, Martin Marinschek <[EMAIL PROTECTED]
> > > > > <mailto: [EMAIL PROTECTED]>> wrote:
> > > > > > > Does the portlet container really provide every styleclass
> that
> > > is
> > > > > > > necessary for Trinidad components to look like they
> normally
> > > look?
> > > > > > >
> > > > > > > I'm just thinking that what is currently being done is not
> > > > > enough to
> > > > > > > have the full skinning features available, and that going
> the
> > > > > > > direction of adding the CSS dynamically would allow to do
> so.
> > > > > > >
> > > > > > > regards,
> > > > > > >
> > > > > > > Martin
> > > > > > >
> > > > > > > On 7/26/07, Scott O'Bryan <[EMAIL PROTECTED]
> > > > > <mailto:[EMAIL PROTECTED]>> wrote:
> > > > > > > > Hey Martin,
> > > > > > > >
> > > > > > > > Does the simple-portlet skin render any better? I
> *THINK*
> > > > > that when
> > > > > > > > running in a portal environment you always get the
> > > > > simple-portlet skin
> > > > > > > > unless your portal provides one of the necessary skin
> > > > > extensions which,
> > > > > > > > right now, it trinidad proprietary. Maybe this is just
> a
> > > > > case of us
> > > > > > > > needing to bug-fix the portlet skin.
> > > > > > > >
> > > > > > > > That article is interesting, but I think that Trinidad
> has
> > > > > attempted to
> > > > > > > > do the same thing only in a different way. Instead of
> using
> > > > > javascript
> > > > > > > > to copy in the styles, we actually change the class
> names
> > > > > that get
> > > > > > > > rendered on the client to use the portal styles where
> > > > > appropriate.
> > > > > > > > Still, I'm not sure that this has been tested
> extensively
> > > > > because before
> > > > > > > > we started looking at 301, much of Trinidad's portal
> work
> > > > > has been done
> > > > > > > > with a Proof of Concept environment.
> > > > > > > >
> > > > > > > > Scott
> > > > > > > >
> > > > > > > > Martin Marinschek wrote:
> > > > > > > > > After playing around for a while and finally finding
> out
> > > > > that it was
> > > > > > > > > as easy as setting:
> > > > > > > > >
> > > > > > > > > <skin-family>simple</skin-family>
> > > > > > > > >
> > > > > > > > > in the trinidad-config.xml I got skinning to run in
> the
> > > > > portlet
> > > > > > > > > environment. In the end, I'm not very happy with what
> I
> > > > > see, though.
> > > > > > > > >
> > > > > > > > > I'm attaching a screenshot - basically, not much
> change
> > > > > happens by
> > > > > > > > > applying skinning - obviously due to the fact that the
> > > portlet
> > > > > > > > > containers don't offer many default style-class hooks.
> > > > > > > > > Have I been getting this wrong or does it really look
> like
> > > > > this?
> > > > > > > > >
> > > > > > > > > If I have been doing the right thing, wouldn't it be
> nice
> > > > > to have a
> > > > > > > > > way of adding the stylesheet with javascript
> dynamically
> > > > > in the body?
> > > > > > > > >
> > > > > > > > > Something like this:
> > > > > > > > >
> > > > > > > > >
> > > > > >
> > > > >
> > > http://cse-mjmcl.cse.bris.ac.uk/blog/2005/08/18/1124396539593.html
> > > > >
> > > <http://cse-mjmcl.cse.bris.ac.uk/blog/2005/08/18/1124396539593.html
> > > >
> > > > > > > > >
> > > > > > > > > might be in order to have full skinning available, and
> > > > > still be
> > > > > > > > > standards compliant.
> > > > > > > > >
> > > > > > > > > I'd implement this in a component, if nobody has
> better
> > > > > ideas...
> > > > > > > > >
> > > > > > > > > regards,
> > > > > > > > >
> > > > > > > > > Martin
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > >
> > > > >
> > >
> ------------------------------------------------------------------------
> > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > >
> > > > > > > http://www.irian.at
> > > > > > >
> > > > > > > Your JSF powerhouse -
> > > > > > > JSF Consulting, Development and
> > > > > > > Courses in English and German
> > > > > > >
> > > > > > > Professional Support for Apache MyFaces
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > --
> > > > >
> > > > > http://www.irian.at
> > > > >
> > > > > Your JSF powerhouse -
> > > > > JSF Consulting, Development and
> > > > > Courses in English and German
> > > > >
> > > > > Professional Support for Apache MyFaces
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
> > --
> >
> > http://www.irian.at
> >
> > Your JSF powerhouse -
> > JSF Consulting, Development and
> > Courses in English and German
> >
> > Professional Support for Apache MyFaces
> >
>
>
> --
>
> http://www.irian.at
>
> Your JSF powerhouse -
> JSF Consulting, Development and
> Courses in English and German
>
> Professional Support for Apache MyFaces
>