Having a "replace is ok" flag seems like a good solution. I wonder
which would be preferable, placing the declaration on the base library
defs, or would the user put it in their code when overriding?  Or
both?

On 8/29/07, Sarah Allen <[EMAIL PROTECTED]> wrote:
> That is exactly the dilemma.  The tension is between a the frustration of an
> accidental override and the frustration if you want to set up your library
> to allow customizing a resource, where you have to provide a resource file
> and library separately and then the user of the library needs to create a
> new resource file and include all your resources except the logo and include
> the logo.
> I suppose there could be some kind of flag that says that I meant to
> override this resource, like:
> <resource name="logo" src="logo.png" replace="true"/>
> I don't know if that would complicate the implementation or the language
> folk would consider it weird, but as a user of the language it would work
> for me.
> Sarah
>
> On Wed, Aug 29, 2007 at  5:01 AM, 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.
> >
> >
> >
> >
> >
> >
> >
> >
> >


-- 
Henry Minsky
Software Architect
[EMAIL PROTECTED]

Reply via email to