挿入プラグイン
前回はWindows Live Writer(WLW)のURL貼り付けを契機とし動作する少しマイナーなプラグインを作成しました。今回はWLWのプラグインとして代表的な挿入プラグインを作ります。
プラグインには大きく分類して2種類あります。ContentSourceクラスを継承したブログ記事にHTMLを挿入するだけの単純なものと,SmartContentSourceクラスを継承した挿入後もサイドバーを使って編集が可能なプラグインのふたつです。前者をシンプルなプラグイン,後者をスマートなプラグインと本記事では呼んでいます。また,サイドバーによる編集部分をサイドバーエディタと表現しています。
クラスの作成
本連載第7回の「プロジェクトの作成」および「クラスの作成」にてWriterPlugin属性を指定するところまでは,ほぼ同様の作業になります。本記事と併せて参照してください。
Visual Studio 2008にてクラスライブラリのプロジェクトを作成し,WindowsLive.Writer.Api.dllを参照します。挿入プラグインの場合は,System.Windows.Formsも参照する必要があります。.NETタブから選択し参照を追加します(図1)。
次にプラグインに共通して必要なWriterPlugin属性をクラスに指定します。ここまでが前回の内容と同じ部分です。サンプルコードはこの後示します。
InsertableContentSource属性
挿入プラグインを作るにはInsertableContentSource属性を付けます。パラメータは以下のとおりです。プラグイン名とは別に挿入するものの名称を指定します。
| menuText | 挿入メニューに表示される名前 |
| SidebarText | サイドバーの挿入項目に表示される名前(オプション) |
ここまでのコードは次のようになります。このあと使用するシンプルなプラグインの場合を示しています。シンプルなプラグインの場合はContentSourceクラスを継承し,サイドバーにて編集できるプラグインの場合はSmartContentSourceクラスを継承します。GUID部分は適当に変更してください。
Imports WindowsLive.Writer.Api
<WriterPlugin("27328a8c-94d3-40b4-b369-1e6019e3571e", _
"シンプル挿入プラグイン", _
Description:="シンプルな挿入プラグインのサンプル", _
HasEditableOptions:=False), _
InsertableContentSource("Hello, world.")> _
Public Class SimplePlugin
Inherits ContentSource ' シンプルなプラグインンの場合
'Inherits SmartContentSource ' スマートプラグインの場合
End Class
シンプルな挿入プラグイン:「Hello, world」の挿入
まずはContentSourceクラスを使った「Hello, world.」と挿入するだけのプラグインを作成してみましょう。既に示したコードを使用します。ContentSourceクラスを使用した挿入プラグインに最低限 必要なメソッドはCreateContentメソッドのみです。ユーザがWLWで挿入する項目をクリックしたときこのメソッドが呼ばれます。CreateContentメソッドをオーバーライドします。
Public Overrides Function CreateContent(ByVal dialogOwner As System.Windows.Forms.IWin32Window, ByRef content As String) As System.Windows.Forms.DialogResult
Return MyBase.CreateContent(dialogOwner, content)
End Function
CreateContentメソッドの引数にString型のcontentがあります。参照渡しになっており,この変数にブログ記事へ挿入するHTMLを格納します。戻り値にWindows.Forms.DialogResult.OKを返すことでcontentの内容が挿入されます。Windows.Forms.DialogResult.Cancelを返すと挿入はキャンセルされます。メソッド内を次のように変更します。
Public Overrides Function CreateContent(ByVal dialogOwner As System.Windows.Forms.IWin32Window, ByRef content As String) As System.Windows.Forms.DialogResult
content = "Hello, world."
Return Windows.Forms.DialogResult.OK
End Function
さっそく,このプラグインを実行してみましょう。ビルド後,できたDLLファイルをWLWのPluginsフォルダに配置します。配置に関しても前回の記事を参照してください。
WLWを起動するとメニューとサイドバーの挿入項目に「Hello, world.」が追加されていると思います(図2)。クリックすると記事に「Hello, world.」という文字列が挿入されます。うまく動きましたでしょうか。もし項目がなければ,メニュー「ツール」-「オプション」よりプラグインが有効になっているか確認してください。
図2 「Hello, world」挿入プラグイン

