マルチランタイムとその実装方法

OpenLaszloは Flashベース のRIA(Rich Internet Application web framework)としてスタートしましたが、
Renderingエンジンを切り替えることができる構造を持っています。
バージョン4.0系統からFlashと同時にDHTMLもサポートするようになりました。
今回のバージョン4.1.1でDHTMLサポートをベータバージョンから正式サポートと宣言しています。Figure15.1 Multi_RIA
バージョン4.1は4.0から大幅な変更があり、特に影響のあったLaszloinActionのchap15の例題について解説とバージョンアップ前後の
ソースコードを載せます。

2つの実行モード「Laszloサーバーモード」と「SOLOモード」

  OpenLaszloはFlashとDHTMLというマルチランタイム機能に加え、2つの実行モード「Laszloサーバーモード」「SOLOモード」を持ちます。
Laszloサーバーモードでは常にLaszlo専用のアプリケーションサーバーと接続してダイナミックにコンテンツを生成して表示するモードであり、
SOLOモードとはLaszlo専用のアプリケーションサーバーで生成したコンテンツを保存して、これをApacheなどの静的なWebサーバーで静的なコンテンツとして
表示するモードです。
web/my-apps/ に hello.lzx を置きます。
ブラウザで http://localhost:8080/OpenLaszlo411Demo/my-apps/hello.lzx と入力すると"Hello Laszlo!"と表示されますが、
ここでブラウザのスクロールバーを使って一番下の表示をみるとこの様な操作パネルが現れます。
これがディベロッパーコンソールといわれるもので、ここからいくつかの操作が行えます。
"Server"ボタンをクリックすると、LaszloアプリケーションをHTMLに埋め込む方法が表示されます。
最初はCompoler Optionsは swf8 のラジオボタンがアクティブですが、DHTML をアクティブにして Compileボタンをクリックすると
Flashモードの表示からDHTMLモードの表示に切り替わります。
"SOLO"ボタンをクリックするとSOLOモードのコンテンツを出力を行うことが出来ます。
FlashモードとDHTMLモード各々専用のコンテンツ出力がなされます。
"View Source"ボタンをクリックすると、ソースコードが表示されますが、まだ日本語表示には対応していません。

LaszloアプリケーションをHTMLにEmbed(埋めこむ)すること

LaszloではダイナミックなOpenLaszloコンテンツをEmbedするためのAPiを用意しています。
このAPIはバージョン4.0系統と4.1系統では大きく変わっています。
ここではHTMLにembedする時に、jspを使用します。そして2つのバージョン共に使うと便利な"header.jsp"を紹介します。
これもバージョンごとに変わります。 Version4.0系統: header.jsp Version4.1: header.jsp 
そしてjspの中でheader.jspをincludeして使用します。
この方法ですとOpenLaszloを開発するプロジェクト毎に異なるアプリケーションサーバーへのデプロイしたときの
コンテキストパスの相違を吸収してくれるので、非常に便利です。

  API Target 説明
4.0
Lz.dhtmlEmbed
DHTML
Laszlo DHTMLアプリケーションをロードする
Lz.dhtmlEmbedLFC
DHTML
Laszlo LFCライブラリをロードする。DHTMLアプリケーションの場合のみ必要
Lz.swfEmbed
Flash
Laszlo SWFアプリケーションをロードする

4.1

lz.embed.dhtml
DHTML
Laszlo DHTMLアプリケーションをロードする
lz.embed.lfc
DHTML
Laszlo LFCライブラリをロードする。DHTMLアプリケーションの場合のみ必要
lz.embed.swf
Flash
Laszlo SWFアプリケーションをロードする

LaszloアプリケーションをHTMLにEmbedするサンプル

HTMLにEmbedされたLaszloアプリケーションとコミュニケーションをするサンプル
                   (同時に<div>タグでwebページでの配置も指定)

4.0API 4.1API Target 説明
Lz.id.callMethod
lz.embed.id.callMethod
Flash
EmbedされたSWFのmethodをcallしresultを返す
Lz.id.getCanvasAttribute
lz.embed.id.getCanvasAttribute
DHTML
canvas elementのTop level attributeのvalueを読む
Lz.id.setCanvasAttribute
lz.embed.id.setCanvasAttribute
DHTML
canvas elementのTop level attributeにvalueを書く

Laszloアプリケーション内にHTMLをEmbedするサンプル

ドキュメントで調べたところ、<html>タグは大きく実装方法を変更したようです。LaszloinActionのchap15のPage424の例題
は少し変更を加えないと動作しなくなりました。

バージョン4.0 JavaScript Synopsis
public lz.html extends LzNode{
}
バージョン4.1

<html>JavaScript : lz.html
extends <view> >> <node> >> LaEventable>>