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

Pablo Kang pkang at laszlosystems.com
Wed Aug 29 15:03:27 PDT 2007


We could minimize name conflicts if resources had namespaces. :|


On Wed, 29 Aug 2007, Elliot Winard wrote:

> I don't know about removing the platform warnings.
>
> If I include two libraries that have resources with conflicting names, I want 
> to know about it.  For example - I might include multiple libraries , each 
> defining a 'logo' resource and expecting the logo to be sized a certain way -
>   <include "mailwindow" />
>   <include "stockwindow" />
>
> I want the compiler to tell me that the stockwindow's logo is overwriting the 
> mailwindow's logo.  Warnings are informative, non-fatal and should be used to 
> provide this kind of information. 
> This proposal skirts CSS altogether.  If this gets implemented as proposed 
> then the display of warnings should be configurable at compile-time.  I think 
> it would be confusing to users if resources (or classes or instances) get 
> clobbered without any warning.
> -e
>
> Sarah Allen wrote:
>>  I think this is an excellent proposal.  cc'ing laszlo-user to see if other 
>> folks developing in LZX have strong feelings about this ...
>> 
>> 
>> On Tue, Aug 28, 2007 at  3:12 PM, Bret Simister 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.
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>


More information about the Laszlo-user mailing list