[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