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

Elliot Winard enw at laszlosystems.com
Wed Aug 29 15:06:51 PDT 2007


Namespaces would help all around.
-e

Pablo Kang wrote:
> 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