+1 on the facet -Matthias
PS: can you add this to the wiki as well ? ;-) On Tue, Jun 1, 2010 at 9:11 PM, Ali Ok <al...@aliok.com.tr> wrote: > Hi again, > I couldn't settle the fallback stuff, so I want to discuss it again. > I noticed that a fallback facet may be better. > If HTML5 video[1] is not supported on a browser, it will ignore this element > and render its children: > <video ....> > <p>Your browser does not support Html5 video! This text is ignored on > Html5 video enabled browsers and shown on not supported browsers.</p> > </video> > Respectively, Html5 video enabled browsers will ignore the children of > <video> element (except <source>[2]). > And this look like a good use-case of facets to me. > If we limit fallback with two attributes, we will definitely restrict the > users in coming up with their own solutions. With > "actionOnNoHTML5VideoSupport" and "loadAlternatePlayerAction" properties, > we're forcing user to write Javascript for playing the alternate video > player. > Let's say, we wrote some javascript function to activate alternate video > player: activateFlashPlayer() > Using attributes, our JSF XHTML will be something like: > <script> > function activateFlashPlayer(){ > // run flash video player (player.swf is down below) > } > </script> > ... > <hx:video loadAlternatePlayerAction="activateFlashPlayer()"> > ... > <embed player.swf ....>.....</embed> > and, which may output an Html page like this: > <script> > function activateFlashPlayer(){ > // run flash video player (player.swf below) > } > </script> > ... > <video ....> > <script> > activateFlashPlayer(); > </script> > </video> > ... > <embed player.swf ....>.....</embed> > > On the other hand, using a facet, we'll have a JSF xhtml page like: > <hx:video> > <f:facet name="falback"> > <embed player.swf ....>.....</embed> > </f:facet> > </hx:video> > which can output: > <video ....> > <embed player.swf ....>.....</embed> > </video> >> >> <hx:video> >> >> => fallBack: does it need to be a facet ? > > A late answer, but that's why I think it needs to be a facet :) > I don't like them much (find them not IDE-friendly), but what is the > disadvantage of facet here? Why do you avoid using that? > [1] http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#video > [2] http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element > Thanks, > Ali > On Wed, May 26, 2010 at 3:42 PM, Matthias Wessendorf <mat...@apache.org> > wrote: >> >> On Wed, May 26, 2010 at 2:38 PM, Ali Ok <al...@aliok.com.tr> wrote: >> > Hi Matthias, >> > I couldn't quite understand what you've meant. >> > Do you mean, (ignore the bad naming) >> > * having property named something like "actionOnNoHTML5VideoSupport" : >> > "useFallBack" | "alert" >> > * and having another property named something like >> > which can have the JS activation code for some >> > flash video player? >> >> that's right >> >> > Or do you mean automatic fallback to flash video player? >> nope :-) >> >> > I've done some >> > research about this before and I couldn't found any ASL or compatible >> > licensed flash video player to distrubute with the project (I haven't >> > done >> > too much research since this seems not practical to me). Assuming there >> > is >> > one ASL-compatible flash video player somewhere, is it practical? >> > Regards, >> > Ali >> > On Wed, May 26, 2010 at 3:10 PM, Matthias Wessendorf <mat...@apache.org> >> > wrote: >> >> >> >> Hi Ali, >> >> >> >> looks good so far. >> >> >> >> One quick comment: >> >> >> >> -<hx:video> >> >> => fallBack: does it need to be a facet ? >> >> What about "alternatePlayer" and warning (or alert) ? >> >> >> >> -Matthias >> >> >> >> On Wed, May 19, 2010 at 10:30 PM, Ali Ok <al...@aliok.com.tr> wrote: >> >> > Hi all, >> >> > I've prepared some component prototypes, and your feedback is >> >> > appreciated. >> >> > There are 20+ components and I want to send them to discuss here, one >> >> > by >> >> > one; "to have a 'cleaner' separation of the discussion". >> >> > Also, IMHO, it is better to post prototypes inline. >> >> > =============================== >> >> > ==========<hx:video>============ >> >> > =============================== >> >> > REFS: >> >> > [0] http://www.whatwg.org/specs/web-apps/current-work/#video >> >> > [1] https://developer.mozilla.org/En/HTML/Element/Video >> >> > >> >> > EXTENDS: >> >> > May extend a abstract component with hx:audio. >> >> > >> >> > specific ATTRIBUTES: >> >> > preload can be: >> >> > none: do not preload the media from the server >> >> > metadata: fetch metadata (length, quality, etc.) >> >> > (default) >> >> > auto: load the data from the server, even if user doesnt >> >> > play it >> >> > showControls: >> >> > true: browser's media controls are shown (default) >> >> > false: controls are not shown unless page author provides >> >> > one >> >> > explicitly >> >> > loop: >> >> > true or false (default) >> >> > poster: >> >> > image to show when not playing or seeking >> >> > width: >> >> > width of the video >> >> > height: >> >> > height of the video >> >> > >> >> > FACETS: >> >> > fallBack: >> >> > content to display when HTML5 video is not supported. >> >> > possible >> >> > actions >> >> > can be using a flash player as a fallback or displaying a >> >> > message that displays this is not supported. >> >> > >> >> > NOTES: >> >> > see <hx:mediaSource> and <hx:mediaSources> >> >> > new <track> feature is not included, since there is no >> >> > browser >> >> > support yet (impossible to test). this feature can be added >> >> > when a browser starts supporting it >> >> > <!-- ---------------------------------------usage >> >> > --------------------------------------------------- --> >> >> > <hx:video value="#{videoBean.someVideoFileURL}" preload="metadata" >> >> > poster="somePosterImage.jpg" >> >> > width="600px" height="300px" >> >> > autoplay="true" loop="true" showControls="true" > >> >> > <f:facet name="fallBack"> >> >> > <embed player.swf ....>.....</embed> >> >> > <!-- SOME FALLBACK MECHANISM TO PLAY THE FILE (FLASH may >> >> > be). >> >> > or >> >> > alerting the user about HTML5 video support. --> >> >> > </f:facet> >> >> > </hx:video> >> >> > >> >> > <!-- expected HTML5 code --> >> >> > <video src="someAddress/someFile.mkv" preload="metadata" autoplay >> >> > loop >> >> > controls poster="somePosterImage.jpg" >> >> > width="600px" height="300px"> >> >> > <embed player.swf ....>.....</embed> >> >> > </video> >> >> > >> >> > >> >> > >> >> > <!-- ---------------------------------------usage >> >> > --------------------------------------------------- --> >> >> > <hx:video preload="none" >> >> > autoplay="false" loop="false" showControls="false" >> >> > poster="#{videoBean.posterImage}"> >> >> > <f:facet name="fallBack"> >> >> > Your browser does not support HTML5 video. >> >> > </f:facet> >> >> > >> >> > <hx:mediaSource src="http://someaddress/someFile.ogg" >> >> > contentType="video/ogg" codecs="avc1.42E01E" media="screen and >> >> > (device-width: 800px)"> >> >> > <hx:mediaSource src="http://someaddress/some3DFile.ogg" >> >> > media="3d-glasses"> >> >> > >> >> > <!-- <hx:mediaSources> component, not <hx:mediaSource> --> >> >> > <hx:mediaSources items="#{someBean.mediaInfoList}"> >> >> > </hx:video> >> >> > >> >> > <!-- expected HTML5 code for usage --> >> >> > <video preload="none" poster="somePosterImage.jpg" >> >> > controls="false" >> >> > autoplay="false"> >> >> > Your browser does not support HTML5 video. >> >> > <source src='http://someaddress/someFile.ogg' Type='video/ogg; >> >> > codecs="avc1.42E01E"' media="screen and (device-width: 800px)" /> >> >> > <source src='someAddress/some3Dfile.ogg' media="3d-glasses"/> >> >> > >> >> > <!-- elements below are generated with <hx:mediaSources> --> >> >> > <source src='video.mp4' type='video/mp4; codecs="avc1.42E01E, >> >> > mp4a.40.2"' media="screen"> >> >> > <source src='video.mp4' type='video/mp4; codecs="avc1.58A01E, >> >> > mp4a.40.2"' media="3d-glasses"> >> >> > <source src='video.mp4' type='video/mp4; codecs="avc1.4D401E, >> >> > mp4a.40.2"'> >> >> > <source src='video.mp4' type='video/mp4; codecs="avc1.64001E, >> >> > mp4a.40.2"'> >> >> > <source src='video.mp4' type='video/mp4; codecs="mp4v.20.8, >> >> > mp4a.40.2"'> >> >> > </video> >> >> > >> >> > =============================== >> >> > =======<hx:mediaSource>========= >> >> > =============================== >> >> > REFS: >> >> > [0] >> >> > >> >> > >> >> > http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element >> >> > [1] https://developer.mozilla.org/En/HTML/Element/Source >> >> > EXTENDS: >> >> > -- >> >> > specific ATTRIBUTES: >> >> > src: >> >> > URL of the source. >> >> > contentType: >> >> > MIME content type of the source (ie:video/ogg). >> >> > codecs: >> >> > Codecs of the source (ie:'avc1.64001E, mp4a.40.2'). >> >> > media: >> >> > media attribute: just like the @media in CSS. >> >> > >> >> > >> >> > NOTES: >> >> > see <hx:mediaSources>, <hx:audio> and <hx:video> >> >> > >> >> > <!-- -----------------------usage ---------------------------- --> >> >> > <hx:mediaSource src="http://someaddress/someFile.ogg" >> >> > contentType="video/ogg" codecs="avc1.42E01E" media="screen and >> >> > (device-width: 800px)"/> >> >> > >> >> > <!-- expected HTML5 code for usage--> >> >> > <source src='http://someaddress/someFile.ogg' >> >> > contentType="video/ogg" >> >> > codecs="avc1.42E01E" media="screen and (device-width: 800px)" /> >> >> > >> >> > >> >> > <!-- -----------------------usage ---------------------------- --> >> >> > <hx:mediaSource src="http://someaddress/some3DFile.ogg" >> >> > media="3d-glasses" /> >> >> > >> >> > <!-- expected HTML5 code for usage--> >> >> > <source src='someAddress/some3Dfile.ogg' media="3d-glasses"/> >> >> > >> >> > =============================== >> >> > =======<hx:mediaSources>======== >> >> > =============================== >> >> > REFS: >> >> > [0] >> >> > >> >> > >> >> > http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element >> >> > [1] https://developer.mozilla.org/En/HTML/Element/Source >> >> > EXTENDS: >> >> > -- >> >> > specific ATTRIBUTES: >> >> > items: >> >> > binding of a collection which has elements of types >> >> > having >> >> > these >> >> > methods >> >> > public String getSrc(), >> >> > public String getContentType(), >> >> > public String getMedia(), >> >> > public String getCodecs(). >> >> > (ie. >> >> > Collection<org.apache.myfaces.html5.media.MediaSourceInfo>) >> >> > 'src', 'contentType', 'media' and 'codecs' are explained >> >> > in >> >> > mediaSource.xhtml (w/o 's' at the end) >> >> > >> >> > NOTES: >> >> > see mediaSource.xhtml, audio.xhtml and video.xhtml >> >> > <!-- usage --> >> >> > <hx:mediaSources items="#{audioBean.someAudioFileInfos}"/> >> >> > >> >> > <!-- expected HTML5 code--> >> >> > <source src='someAddress/somefile.ogg' type='video/ogg; >> >> > codecs="flac"' /> >> >> > <source src='http://someaddress/someFile.ogg' media="screen and >> >> > (device-width: 800px)" /> >> >> > <source src='http://someaddress/someFile.ogg' media="3d-glasses"/> >> >> > >> >> > Regards, >> >> > Ali >> >> > -- >> >> > My Blog: http://blog.aliok.com.tr >> >> > Twitter: http://twitter.com/aliok_tr >> >> > >> >> > >> >> >> >> >> >> >> >> -- >> >> Matthias Wessendorf >> >> >> >> blog: http://matthiaswessendorf.wordpress.com/ >> >> sessions: http://www.slideshare.net/mwessendorf >> >> twitter: http://twitter.com/mwessendorf >> > >> > >> > >> > -- >> > My Blog: http://blog.aliok.com.tr >> > Twitter: http://twitter.com/aliok_tr >> > >> > >> >> >> >> -- >> Matthias Wessendorf >> >> blog: http://matthiaswessendorf.wordpress.com/ >> sessions: http://www.slideshare.net/mwessendorf >> twitter: http://twitter.com/mwessendorf > > > > -- > My Blog: http://blog.aliok.com.tr > Twitter: http://twitter.com/aliok_tr > > -- Matthias Wessendorf blog: http://matthiaswessendorf.wordpress.com/ sessions: http://www.slideshare.net/mwessendorf twitter: http://twitter.com/mwessendorf