使ってみよう! Windows Live SDK/API

第8回 Windows Live Writer ―― プラグインの作成 Part II

この記事を読むのに必要な時間:およそ 5 分

サイドバーエディタの作成

スマートプラグインでのサイドバーに表示するエディタ部分を作ります。これはSmartContentEditorクラスを継承したものになります。プロジェクトにユーザコントロールを追加し図4これを変更して使います。ソリューションエクスプローラからプロジェクト名を右クリックし,メニューの「追加」の中の項目に「ユーザコントロール」があります。

図4 ユーザコントロールの追加

図4 ユーザコントロールの追加

ユーザコントロールが継承しているクラスをSmartContentEditorに変更します。ソリューションエクスプローラのボタンからすべてのファイルを表示します図5)⁠

図5 すべてのファイルを表示

図5 すべてのファイルを表示

Visual Studioによって生成されたファイルを選択しコードを編集します。System.Windows.Forms.UserControlからWindowsLive.Writer.Api.SmartContentEditorに変更しましょう。

Inherits WindowsLive.Writer.Api.SmartContentEditor

以上で自動生成されたコードはもう編集しませんので,すべてのファイルの表示は元に戻して構いません。

この状態でコントロールをデザイナで見ると縦長のコントロールが表示されると思います。試しにTextBoxとButtonを配置します。ここでは,ひとつのString型の値の編集ができ,⁠適用]ボタンをクリックすると挿入した内容を変更するものと想定します。図6にここまでの作業を行ったコントロールを示します。

図6 SmartContentEditorコントロール

図6 SmartContentEditorコントロール

次にサイドバーエディタが処理するコードを記述します。コントロールのコードを表示するにはソリューションエクスプローラでコントロールのファイルを選択した状態で[コードの表示]ボタンをクリックします。

ブログ記事へ挿入した内容が選択されると,SelectedContentChangedイベントが起こります。このタイミングでサイドバーエディタ上のTextBoxの値などを更新します。SmartContentEditorクラスはSelectedContentというISmartContent型のプロパティを持っているので,これを通して必要な情報を取得します。コード例は次のようになります。⁠TextBox」はサイドバーエディタに貼り付けたTextBoxの名前です。GetStringメソッドを使い,先ほどからのコードに登場しているプロパティ名がTextの値を取得しています。

Private Sub Editor_SelectedContentChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SelectedContentChanged
    Me.TextBox.Text = Me.SelectedContent.Properties.GetString("Text", "Hello, world.")
End Sub

サイドバーエディタでの編集を反映するには,OnContentEditedメソッドを呼ぶことで行います。Buttonがクリックされたときに内容を更新しブログの記事に反映するコードは以下になります。

Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click
    Me.SelectedContent.Properties.SetString("Text", Me.TextBox.Text)
    OnContentEdited()
End Sub

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp

コメント

コメントの記入