I guess I don't really understand why they were used in the a/v
extensions. I'll take Max's word for it that the mediastream
implementation does nothing and remove the mixin there.
On Jan 9, 2009, at 8:44 AM, P T Withington wrote:
> Note that mixin's are a 'power feature'. I consider them to still
> be experimental, which is why the documentation is scarce. I
don't
> want them to be public, because I am not ready to commit to
> supporting them.
>
> Also note that a <mixin> is very different from a `mixin`. That
is,
> the LZX version is quite different from the JS version. The JS
> version is pretty much a standard implementation of what CS would
> consider a mixin (which is in CS considered a dangerous power
tool,
> not to be used lightly -- it's why Java and C# don't have them).
> The LZX version is even crazier, because _I_assume_ an LZX mixin
> needs to know how to mix in child nodes, states, placement,
> handlers, constraints, etc., etc., etc. which are not something
you
> have in a plain old O-O language.
>
> Bottom line: mixins are an optimization and you should follow my
> usual rules about optimization when considering them:
>
> Rule 1: Don't use them.
> Rule 2 (for experts only): Don't use them yet.
>
> (paraphrased from M. A. Jackson)
>
> On 2009-01-09, at 07:50EST, Max Carlson wrote:
>
>> Since that mixin isn't really doing anything, you should be
able to
>> just get rid of it. See tests/mixin for an example of how to do
>> this in LZX, or http://jira.openlaszlo.org/jira/browse/LPP-2302
for
>> the gory details.
>>
>> Once we get all the code converted back to LZX syntax, we might
>> want to add a mixin that implements the runtime-specific bits.
>>
>> Sarah Allen wrote:
>>> I'm refactoring the av mediastream component to be regular LZX,
>>> but I'm not familiar with the mixin syntax and I can find
>>> documentation about (no luck with google or the ref guide...
maybe
>>> I'm blind)
>>> Here's the snippet that I want to write the "new" way...
>>> <script when="immediate"><![CDATA[
>>> mixin NewmediastreamShared {
>>> function NewmediastreamShared ( parent:LzView? = null ,
>>> attrs:Object? = null , children:Array? = null,
instcall:Boolean =
>>> false) {
>>> super(parent, attrs, children, instcall);
>>> }
>>> }
>>> ]]></script-->
>>> (Trying to avoid that nasty setter bug, which I think is at the
>>> root of why recording is broken)
>>> Sarah
>>
>> --
>> Regards,
>> Max Carlson
>> OpenLaszlo.org
>