[Laszlo-dev] Need to be able to override resource declarations in OpenLaszlo without warnings.

Henry Minsky henry.minsky at gmail.com
Tue Aug 28 17:14:03 PDT 2007


You don't need to do this for fonts, right? Just image resources?

On 8/28/07, Bret Simister <bsimister at laszlosystems.com> wrote:
>
> Currently, in the OpenLaszlo platform, it was decided that declaring a
> resource twice within an LZX app
> causes a server warning. This was intended to help developers just  in case
> they accidentally overrode a
> resource that had already been  declared in another library.
>
>
> <!-- the following code produces a warning, but still compiles -->
> <canvas>
>     <resource name="logo" src="logo.gif" />
>     <resource name="logo" src="logo2.gif" />
>
>   <!-- view appears with logo2.gif -->
>     <view resource="logo" />
> </canvas>
>
> At this time, I would suggest that  the  platform remove these warnings and
> have
> the last resource declaration override all other previous declarations.
>
> Here is why...
>
> OpenLaszlo now has a CSS implementation. It gives developers an elegant
> method
> of skinning their applications. This works, currently,  by first declaring a
> resource
>
> <resource  name="someimage_rsc"  src="somepath/someimage.jpg" />
>
> and then referring to that resource in a CSS selector
>
> view[name="someview"] {
>  resource: someimage_rsc;
> }
>
>
>
> If a developer builds a library ....
>
>  myCustomLibrary      ( folder )
>      library.lzx
>      myresources.lzx ( contains many resource definitions including
> 'lowerRightCorner_rsc' )
>      mystyles.css    ( contains many selectors including one that references
> 'lowerRightCorner_rsc' )
>      ...             ( other class and source image files )
>
> where library.lzx includes both  myresources.lzx and mystyles.css
>
> Then library can be used with a simple inclusion in the main app.
>
>
> <canvas>
>
>  <include name="myCustomLibrary" />
>
>  <!-- instance of a class from myCustomLibrary -->
>  <mycustomclass />
>
> </canvas>
>
>
>
> Let's assume that "mycustomclass" contains a number of resources, and that
> you ( as a developer )
> only want to change one of those resources . The simplest method to
> accomplish this would be ...
>
> <canvas>
>
>  <include name="myCustomLibrary" />
>
>  <!-- override resource definition "lowerRightCorner_rsc" defined earlier in
> myresouces.lzx -->
>  <resource name="lowerRightCorner"
> src="my_new_path/my_lower_right_corner.jpg" />
>
>  <!-- instance of mycustomclass that will now display
>          the new resource based on the unchanged css selector -->
>  <mycustomclass />
>
> </canvas>
>
>
> Currently, this code would cause a compiler warning. To avoid these warnings
> ( without changing OpenLaszlo ) the  resouces.lzx file(s) and possibly the
> library .lzx would have to be edited.
>
> If instead, we allow for resource overriding, then ...
>
> 1) the original CSS and  resource files will remain unchanged
> 2) The old resource for "lowerRightCorner"  would NOT be included in the app
> 3) There  would be clean separation between external libraries and the
> skinning of theses libraries  included in an application.
>
>
>
>
>
>


-- 
Henry Minsky
Software Architect
hminsky at laszlosystems.com


More information about the Laszlo-dev mailing list