[Laszlo-dev] LPP-8107 fullscreen, some questions
Raju Bitter
rajubitter at me.com
Sun Jun 14 18:53:18 PDT 2009
Max, Tucker,
I learned a bit more about the passing of canvas attributes into the
XSLT files during the compile process. Here's what I've found, and
I've already taken care of the LFC changes necessary - I'm just
looking at the changes to the Java classes and templates and how
things work:
For the @fullscreen canvas attribute I
1) add a default value (private static final boolean
DEFAULT_FULLSCREEN = false;) to Canvas.java
2) add an mFullscreen instance variable to Canvas.java
3) add a setFullscreen() and isFullscreen() method to Canvas.java
4) add handling of attribute value to
CanvasCompiler.initializeFromElement(), e.g. String fullscreen =
elt.getAttributeValue("fullscreen");
5) understood ResponderHTML.java's writeCanvas() method takes care
of writing out the embedding code
6) found out that within TranformUtils.java within method
applyTransform(String, Properties, String, OutputStream) the XSLT is
chosen based on the lzt query arg setting, e.g. app-console.xslt for
no lzt value, html-response.xslt for ltz=html. By modifying the the
lz.embed.swf JS line and adding
..', allowFullScreen: '<xsl:value-of select="/canvas/@fullscreen"/>',
I can pass the canvas attribute value into the HTML source code by
that, and I've made all the modifications to embednew.js and flash.js
to control the allowFullScreen value through the canvas @fullscreen
attribute. :-)
Do you have any comment on this approach, do you see any problems with
that?
Thanks,
Raju
On Jun 12, 2009, at 2:55 PM, Raju Bitter wrote:
> Thanks, Max. It's working for SW9 now, I just needed a place to put
> the display state in a way that's easily accessible. Right now I
> chose to add a @displaystate attribute to canvas with the values of
> "fullScreen" and "normal" (take out of
> canvas.sprite.stage.displayState)? What do you think?
>
> I don't know what the impact would be of making every SWF run with
> allowFullScreen="true", but I've there have been some problems with
> fullscreen mode:
> * iFrames are hidden when you go in fullscreen: http://drumbeatinsight.com/examples/htmlcomponent/fullscreen/HTMLFullScreenOpaque.html
> * Safari had a bug for some time with receiving mouse clicks and
> keyboard input, don't know what the status of that is.
>
> I'll send out a first version of the fix for SWF9 only for review to
> you today. I stilll haven't figured out how the Flash properties are
> passed into the embed script, though.
>
> - Raju
>
>
> On Jun 11, 2009, at 9:07 PM, Max Carlson wrote:
>
>>
>>
>> Raju Bitter wrote:
>>> Max, Henry,
>>> I'm back at working on http://jira.openlaszlo.org/jira/browse/LPP-8107
>>> I have a few qestions:
>>> 1) What kind of code do you put into LzScreenKernel, compared to
>>> LaszloCanvas? Would be better to have the code to go into
>>> fullscreen mode in LzScreenKernel? Max already suggested that, so
>>> that will be my approach for now.
>>
>> LzScreenKernel seems like the right place to put the actual
>> implementation. I'd also suggest adding a capability to LzSprite
>> so folks can check to see if a given runtime supports fullscreen.
>> That way you can avoid writing stub methods for DHTML, and
>> optionally add a warning. See LaszloView.lzs#$lzc$set_rotation()
>> for an example of this.
>>
>>> 2) Where's the connection between canvas attributes and the
>>> templates used for HTML generation. I'll look into that, but some
>>> input would be valuable.
>>> I'm documenting my approach here: http://wiki.openlaszlo.org/SWF_Runtime_Fullscreen_Support#Ongoing_work
>>
>> You need to set the allowFullScreen object/embed attribute. The
>> place to do this is lps/includes/source/
>> embednew.js#lz.embed.swf(). It looks like you already have a line
>> on how to pass the canvas attribute into the generated html, but
>> you may be able to get away with defaulting allowFullScreen to true
>> and not have to bother with this...
>>
>> --
>> Regards,
>> Max Carlson
>> OpenLaszlo.org
>
More information about the Laszlo-dev
mailing list