Mike,

On Dec 8, 2007 6:46 AM, Mike Crawford <[EMAIL PROTECTED]>
wrote:

>
> I'm prototyping the use of Trinidad as a way to replicate pages within our
> application which currently use recent best-practice conventions for XHTML
> and css, including wrapper divs, css background images and absolute
> positioning to give us maximum flexibility on moving divs representing
> various control areas around the page, including the banner, header, top
> nav, nav/menu bars, left nav, footer and content areas.
>
> I'd like to use panelPage with facets for the corresponding control areas,
> but the markup which the default panelPage renderer outputs is a hopeless
> mess of HTML 4.0 tables that I'm having a lot of trouble stying to match
> our
> current output.
>
> Some output is terrible - the panelPage tag, for example, generates as
> output a span tag instead of a div tag, with no skinnable class by
> default.
> This the best place to implement the container or wrapper div technique
> for
> a fixed width floating page, but I have to add a styleClass attribute and
> then style the span with display:block, etc to make this work. I'd much
> rather have a panelWrapper (or similar) tag with a corresponding
> af|panelWrapper skinnable hook that I can use to keep the markup in the
> jspx
> I write as clean as I think it could be with panelPage outputting better
> XHTML. Also, while PanelPage uses facets to define each separate page
> area,
> those facets do not appear as style classes anywhere in the generated
> output, making it very difficult to target style rules to these areas - I
> have to add a new styleClass to an additional panelGroupLayout just inside
> the facet just to get to this via css rules, and still the resulting HTML
> is
> overly complex and difficult to style.
>
> What I'd like to do is write some additional panel subclasses, such as
> panelWrapper, and replace panelPage with a new one that outputs <div
> class="branding> around the contents of the <f:facet name="branding">
> facet
> within panelPage, outputs panelPage as a div, adds a "footer" facet, etc.
> However, I'm new to this, and when I looked through the source code, I
> couldn't even find the CorePanelPage.java file on my first attempt to see
> what might be involved in doing this.
>

CorePanelPage is auto-generated during build time and is not
source-controlled as most of the behavior is in the associated
renderer.Therenderer you are looking for is
org.apache.myfaces.trinidadinternal.ui.laf.base.desktop.PageLayoutRenderer.java.Howeverthis
renderer is not faces major and the code might be a bit
obscure.For example the PageLayoutRenderer will delegate to several
renderers for example the "span" is rendered by the FlowLayoutRenderer.
If you are writing a new component you are better off subclassing
CoreRenderer or one of it's subclasses.


HTH,
Abhi


> Can anyone here point me in the right direction with some hints on what
> I'd
> need to do in order to make the changes listed above? I suspect I will
> need
> to write some type of renderer, but I'm finding it hard to figure out how
> all the parts are connected at this early stage.
>
> Also, to throw out another idea, I'd really love it if the panelPage tag
> could accept some type of template that it would use to layout the facets,
> such as...
>
> <panelPage>
> <facet name="branding"/><!-- converted to div, allowing me to use
> arbitrary
> background image for branding,and then overlay what I need to in this area
> via absolute positioning-->
> <facet name="navigationGlobal"/><!-- positionable via absolute positioning
> to overlay the branding where needed-->
> <table><!-- I'd use divs for these too - just showing another layout
> technique -->
>  <tr>
>    <td><facet name="navigation1"/></td>
>    <td><facet name="search"/></td>
>  </tr><tr>
>    <td colspan="2"><facet name="navigation2"/></td>
>  </tr>
> </table>
> non-faceted content goes here, maybe with a <body> tag to indicate this?
> <facet name="footer"/><!-- new facet, so we don't have to use p_OraFooter
> class to get thos this-->
> </panelPage>
>
> ...instead of the hard-coded layout that Oracle invented, allowing us to
> keep the simplicity of the panelPage and facet-based markup in our jsf
> pages, but still output the result in a format that works for our
> applications. If no template attribute is specified on the panelPage, it
> can
> continue to output the current layout for backward compatibility.
>
> I thought I couldn't be the only one thinking along these lines, but I
> haven't been able to find any other comments about this problem today
> searching Google and other sources.
>
> Any help appreciated. Thanks,
>
> Mike
> --
> View this message in context:
> http://www.nabble.com/How-can-I-change-the-rendered-output-of-panelPage--tf4965395.html#a14223854
> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>
>

Reply via email to