NewsItemContext
次にNewsItemContextオブジェクトを生成します。通常,
NewsItemContextクラスは以下のプロパティがあり,
- Kind
(String型) : ScopeまたはTargetのどちらかを指定します。追加しようとしているNewsアイテムを参照するMesh ObjectについてのメタデータをNewsItemContextに設定する場合は,
Scopeを指定します。操作の対象となったファイルやアプリケーションのメッセージのメタデータをNewsItemsContextに設定する場合は, Targetを指定します。 - Type
(String型) : メタデータの対象がテキストやバイナリファイルの場合は,
text/ plainやapplication/ octet-streamを指定します。Mesh Objectやアプリケーションの場合, LiveFX/ MeshObjectやLiveFX/ ApplicationInstanceとなります。 - Text
(String型) : 通常Resource.
Titleの値とし, アプリケーションやユーザーのメッセージの場合, メッセージそのものとなります。NewsアイテムをMesh Bar等で表示する際に, このプロパティ値が使用されます。 - TargetLink
(Uri型) : 対象のリンク先です。Live Frameworkでは,
すべてのリソースはURL (URI) で表現可能でした。Mesh Objectの場合, そのMesh Objectを示す相対URLを指定します。 - Relationship
(String型) : 対象の関連情報を指定します。ユーザーにTargetLink先のリンクを示す際に表示する情報として,
または対象の型についての補足などの利用が想定されているようです。
以上を踏まえたコードが以下になります。
' Kind = Scope の NewsItemContext 生成
Dim scopeContext = New NewsItemContext("Scope", "LiveFX/ApplicationInstance", meshApp.Resource.Title, meshApp.SelfLink, Nothing)
newsItem.Resource.Contexts.Add(scopeContext)
' Kind = Target の NewsItemContext 生成
Dim message = "gihyo.jp"
Dim targetContext = New NewsItemContext("Target", "text/html", message, New Uri("http://gihyo.jp"), Nothing)
newsItem.Resource.Contexts.Add(targetContext)
' News アイテムの追加
meshApp.News.AddAsync(newsItem, Nothing)
KindプロパティがScopeのNewsItemContextオブジェクトには,
KindプロパティがTargetのNewsItemContextオブジェクトには,
それぞれのNewsItemContextをNewsItems.
実際にアプリケーションを実行してみましょう。アプリケーション起動後,
もし,
' meshApp.News.AddAsync(newsItem, Nothing)
meshApp.LiveOperatingEnvironment.Mesh.News.AddAsync(newsItem, Nothing)
Newsアイテムの参照
最後にNewsアイテムの参照についてです。ここまでできていれば簡単ですね。ほかのリソース同様の操作で参照します。次にアプリケーション自身のNewsとMeshのNews一覧を表示するコードを示します。
' アプリケーション自身の News
For Each n In meshApp.News.Entries
MyListBox.Items.Add(n.Resource.Title)
Next
' Mesh の News
For Each n In meshApp.LiveOperatingEnvironment.Mesh.News.Entries
MyListBox.Items.Add(n.Resource.Title)
Next
Mesh Barを見ると,
' アプリケーション自身の News
For Each n In meshApp.News.Entries
MyListBox.Items.Add(n.Resource.Title)
' News アイテムに関連付いたメンバーの情報
For Each a In n.Resource.Authors
MyListBox.Items.Add(a.Name)
Next
Next
今回はここまでです。いかがでしたでしょうか。次回もMesh-enabled Webアプリケーション開発の内容を紹介する予定です。