拡張機能について

ColdFusion Builder IDE(Integrated Development Environment:統合開発環境)の機能は、各種の ColdFusion フレームワークをサポートしたり、コード生成に必要な条件を満たすように拡張することができます。ColdFusion Builder 拡張機能を開発すると、コードを生成したり、動的なユーザーインターフェイスを設計したり、データベースに対する基本的な CRUD(作成、読み込み、更新、削除)操作を実行できます。ColdFusion Builder 拡張機能は、ColdFusion Builder IDE にコンテキストメニューを追加し、それらのメニューに対するイベントを処理する構造化コンポーネントです。ColdFusion 開発者は、独自の ColdFusion Builder 拡張機能を開発することも、既存の拡張機能をインストールすることもできます。

独自の ColdFusion Builder 拡張機能を開発するには、設定ファイルおよびハンドラーファイルを作成します。コンテキストメニューとイベントは、設定ファイル(IDE_Config.xml)で定義します。詳細については、「拡張機能の開発」を参照してください。

ColdFusion Builder では、ユーザーインターフェイスを作成するなど、様々なレベルで IDE を拡張できます。詳細については、「拡張機能のユーザーインターフェイスの作成」を参照してください。

ColdFusion Builder に出荷時から付属する拡張機能には、Adobe CFC Generator と AS Class Generator があります。これらの拡張機能はいつでもインストールして、ColdFusion Builder に統合できます。詳細については、拡張機能の使用を参照してください。

ColdFusion Builder には、拡張機能の作成とパッケージ化に必要な手順をガイドする ColdFusion Builder Extension Creator が用意されています。詳細については、、「ColdFusion Builder Extension Creator を使用した拡張機能の作成とパッケージ化」を参照してください。

拡張機能の開発

ColdFusion Builder 拡張機能を開発するには、次の要素を作成します。

  • 設定ファイル(IDE_config.xml)
  • ハンドラーファイル(CFM ファイル)

これらの要素を作成するには、手動でコードを記述するか、ColdFusion Builder Extension Creator ウィザードを使用します。ColdFusion Builder Extension Creator ウィザードの使用方法について詳しくは、「ColdFusion Builder Extension Creator を使用した拡張機能の作成とパッケージ化」を参照してください。

設定ファイル

設定ファイル(IDE_config.xml)の作成は、ColdFusion Builder 拡張機能を開発する上で重要な手順となります。設定ファイルの要素の定義はすべて、{{application}} タグ内で行います。

メタデータ要素の指定

拡張機能を作成し、拡張機能の情報(名前、作成者、バージョン、説明など)を指定するには、メタデータ要素を使用します。

設定ファイルでアプリケーションメタデータを指定するには、次の要素を使用します。

要素 説明
name 拡張機能の名前。
author 作成者の名前。
version ファイルのバージョン。
email 電子メールアドレスを指定します。
description アプリケーションの簡単な説明。この説明はプレーンテキストで記述できます。また、アプリケーションの説明が記載された HTML ファイルのパスを指定することもできます。HTML ファイルのパスを指定する場合は、拡張機能内の Install ディレクトリにその HTML ファイルを保存します。
license 拡張機能をインストールするときに表示されるライセンス契約の条項。ライセンス契約の条項はプレーンテキストで表示できます。また、ライセンス契約の条項が記載された HTML ファイルのパスを指定することもできます。HTML ファイルのパスを指定する場合は、拡張機能内の Install ディレクトリにその HTML ファイルを保存します。

<application> 
<name>ORM CFC Generator</name> 
<author>Adobe</author> 
<version>1.0</version> 
<email>user@xyz.com</email> 
<description>ORM CFC code Generator</description> 
<license>license.html</license> 
</application>

ColdFusion Builder 拡張機能のインストールウィザードへのページの追加

設定ファイルを定義する際に、ColdFusion Builder 拡張機能のインストールウィザードに画面を追加するコードを指定できます。これらの画面を使用して、ユーザー入力を取得できます。通常、インストール後の設定タスクを実行するには、ユーザーの入力が必要です。

入力の詳細を指定するには input タグを使用します。input タグを指定する方法については、「入力型の指定」を参照してください。この入力の詳細は、wizard タグのhandlerid属性で指定されたハンドラーが呼び出されるときに、引数として渡されます。wizard タグの height 属性や width 属性を使って、インストールウィザードの高さや幅を指定することもできます。このウィザードの各ページのタイトルを指定するには、page タグの title 属性を使用します。

シンタックス

<application> 
<name>Name of the ColdFusion Builder extension</name> 
<install> 
<wizard height="" width="" handlerid="handlerID" > 
<page title="Wizard page title" > 
<input name="Input" ... /> 
<input name="Input" ... /> 
</page> 
</wizard> 
</install> 
</application>

次の例では、拡張機能のインストールウィザードによる拡張機能のインストールが終了した後に、指定された入力詳細に基づいてハンドラー ID postinstallhandler が呼び出されます。

<application> 
<name>ORM CFC Generator</name> 
<install> 
<wizard height="" width="" handlerid="postinstallhandler" > 
<page title="Install settings" > 
<input name="Mapping" ... /> 
<input name="Datasource" ... /> 
</page> 
</wizard> 
</install> 
</application>

IDE の拡張

ColdFusion Builder IDE は次のレベルで拡張できます。

  • コンテキストメニューの追加:コンテキストメニューは次のビューに追加できます。
    • リソースナビゲーター
    • RDS データビュー
    • アウトラインビュー
    • CFML エディター
  • ワークスペースイベントの処理:現時点ではonprojectcreate イベントのみサポートされています。 
  • ビューの作成
  • 拡張機能からコードアシストへのコントリビュート

CRUD またはコード生成操作を実行するコンテキストメニューおよびイベントのハンドラーを指定できます。

ハンドラーの指定

ColdFusion Builder は、CFM ハンドラーをサポートしています。ColdFusion Builder の場合、ハンドラーとはイベントやアクションに対する応答として実行されるコードを含んだファイルのことです。ハンドラーの指定は handlers タグ内で行います。ハンドラーをイベントまたはアクションに関連付けるには、handlerid 属性を使用します。ハンドラーの詳細はすべて handlers タグ内で指定します。イベントおよびアクションを指定する方法について詳しくは、「イベントの指定」および「コンテキストメニューの指定」を参照してください。ハンドラーファイルはすべて、Handlers フォルダーに保存する必要があります。

シンタックス

<handlers> 
<handler id ="cfm" type="cfm" filename="filename" /> 
</handlers>
属性 説明
id ハンドラー ID
type ハンドラータイプを指定します。指定できるハンドラータイプは「CFM」です。
filename CFM ファイルの名前

属性値として使用できる文字は英数字のみです。特殊文字は指定できません。

<handlers> 
<handler id="cfcgenerator" type="CFM" 
filename="ormCFCGenerator.cfm" /> 
<handler id="gridgenerator" type="CFM" 
filename="cfgridGenerator.cfm" /> 
</handlers>

イベントの指定

イベントを指定するには events タグを使用します。現在 ColdFusion Builder でサポートされているイベントは、プロジェクト作成に関するイベントのみです。サポートされているイベントのタイプは onprojectcreate です。onprojectcreate イベントのハンドラー ID は必須です。イベントが発生すると、ハンドラー ID に関連付けられているハンドラーが呼び出されます。

onprojectcreate イベントが指定されているアプリケーションは、「ColdFusion プロジェクトの作成」にあるアプリケーションのリストにすべて記載されています。リストに記載されているアプリケーションのいずれかをユーザーが選択すると、そのアプリケーションに関連付けられているハンドラーが呼び出されます。onprojectcreate イベントは、特定の ColdFusion Builder 拡張機能の基本的なプロジェクト構造を作成するときに役立ちます。

シンタックス

<events> 
<event 
type="onprojectcreate" 
handlerid="handler id" /> 
</events>
属性 説明
type ハンドラーを実行するイベントを指定します。指定できるイベントタイプは type="onprojectcreate" です。
handlerid 渡すハンドラー ID を指定します。

属性値として使用できる文字は英数字のみです。特殊文字は指定できません。

<events> 
<event type="onprojectcreate" 
handlerid="projectCreationHandler" /> 
</events>

ColdFusion Builder 2.0.1 で追加された新しいイベント

onfilechangeineditor:エディターでファイルが変更されたときのイベントをリスン

エディターのタブをクリックしたり、エディターでドキュメントを開いて、異なるドキュメントに移動するものとします。拡張機能でこのことを認識できるようになりました。このために、新しいイベント {{onfilechangeineditor}} が導入されています。このイベントは次のようにして登録できます。

<event type=”onfilechangeineditor” handlerid=”any_handler_id/>

イベントのメッセージでは次のような情報が送信されます。

  • type:イベントのタイプはonfilechangeineditor です。
  • project_path:エディターで開かれたファイルが属しているプロジェクトの絶対パスです。
  • file_path:現在エディターで開かれている、または切り替えられたファイルの絶対パスです。
  • editor_name:ファイルを開いたエディターの名前です。CFML ファイルの場合、この名前は Adobe CFMLEditor です。

出力の例を次に示します。

<?xml version="1.0" encoding="UTF-8"?> 
<event> 
<ide version="2.0"> 
<callbackurl> 
http://[ip_address:port]/index.cfm?extension=<Extension_Name> 
</callbackurl> 
<eventinfo type="onfilechangeineditor"> 
<project> 
Extensions 
</project> 
<project_path> 
[project_path] 
</project_path> 
<file_path> 
[file_path] 
</file_path> 
<event> 
onfilechangeineditor 
</event> 
<editor_name> 
Adobe CFML Editor 
</editor_name> 
</eventinfo> 
</ide> 
<user> 
</user> 
</event>
onRDSDataViewSelectionChange:RDS データビューで選択範囲が変更されたときのイベントをリスン

ColdFusion Builder は、RDS データビューでの選択に応じて、異なるイベント情報メッセージをハンドラーに送信します。このために、新しいイベント onRDSDataViewSelectionChange が導入されました。このイベントは次のようにして登録できます。

<event type=”onfilechangeineditor” handlerid=”any_handler_id/>
選択されたノード 送信される情報
サーバー
  • type:イベントのタイプ onRDSDataViewSelectionChange
  • name:サーバー名
  • node_type:ノードの種類 - サーバー
<?xml version="1.0" encoding="UTF-8"?> 
<event> 
<ide version="2.0" > 
<callbackurl>http://[ip_address:port]/index.cfm? extension=<Extension_Name></callbackurl> 
<eventinfo type="onRDSDataViewSelectionChange"> 
<event>onRDSDataViewSelectionChange</event> 
<name>LocalCF9</name> 
<node_type>server</node_type> 
</eventinfo> 
</ide> 
<user></user> 
</event>
データソース
  • type:イベントのタイプ onRDSDataViewSelectionChange
  • name:データソースの名前
  • parent_node:ノードの名前。つまりデータソースが属しているサーバーの名前。
  • node_type:ノードの種類 - データソース
<?xml version="1.0" encoding="UTF-8"?> 
<event> 
<ide version="2.0" > 
<callbackurl>http://[ip_address:port]/index.cfm? extension=<Extension_Name></callbackurl> 
<eventinfo type="onRDSDataViewSelectionChange"> 
<event>onRDSDataViewSelectionChange</event> 
<name>AUTHORS</name> 
<parent>Tables</parent> 
<node_type>table</node_type> 
</eventinfo> 
</ide> 
<user></user> 
</event>
テーブルグループ
  • type:イベントのタイプ onRDSDataViewSelectionChange
  • name:テーブルグループの名前
  • parent_node:ノードの名前。つまりこのテーブルグループが属しているデータソースの名前。
  • node_type:ノードの種類 - グループ
<?xml version="1.0" encoding="UTF-8"?> 
<event> 
<ide version="2.0" > 
<callbackurl>http://[ip_address:port]/index.cfm? extension=<Extension_Name></callbackurl> 
<eventinfo type="onRDSDataViewSelectionChange"> 
<event>onRDSDataViewSelectionChange</event> 
<name>Tables</name> 
<parent>cfbookclub</parent> 
<node_type>group</node_type> 
</eventinfo> 
</ide> 
<user></user> 
</event>
テーブル
  • type:イベントのタイプ onRDSDataViewSelectionChange
  • name:テーブルの名前
  • parent_node:ノードの名前。つまりテーブルが属しているデータソース。
  • node_type:ノードの種類 - テーブル
<?xml version="1.0" encoding="UTF-8"?> 
<event> 
<ide version="2.0" > 
<callbackurl>http://[ip_address:port]/index.cfm? extension=<Extension_Name></callbackurl> 
<eventinfo type="onRDSDataViewSelectionChange"> 
<event>onRDSDataViewSelectionChange</event> 
<name>AUTHORS</name> 
<parent>Tables</parent> 
<node_type>table</node_type> 
</eventinfo> 
</ide> 
<user></user> 
</event>
  • type:イベントのタイプ onRDSDataViewSelectionChange
  • name:列の名前
  • parent_node:親ノードの名前。つまり、列が属しているテーブルの名前。
  • node_type:ノードの種類 - 列
<?xml version="1.0" encoding="UTF-8"?> 
<event> 
<ide version="2.0" > 
<callbackurl>http://[ip_address:port]/index.cfm? extension=<Extension_Name></callbackurl> 
<eventinfo type="onRDSDataViewSelectionChange"> 
<event>onRDSDataViewSelectionChange</event> 
<name>AUTHORID</name> 
<parent>APP.AUTHORS</parent> 
<node_type>field</node_type> 
</eventinfo> 
</ide> 
<user></user> 
</event>
OnFileSaved:ファイルが保存されるときのイベント通知を追加

ColdFusion Builder でファイルが保存されると、イベント通知がハンドラーの CFM ファイルに送信されます。このために、新しいイベント onFileSaved が導入されています。このイベントは次のようにして登録できます。

<event type="onFileSaved" handlerid="OnFileSaved"/

ハンドラーには次のような情報が送信されます。

  • handlerstype からのコールバックコマンドの指定:イベントのタイプは onFileSaved です。
  • project_path:保存されたファイルが属しているプロジェクトの絶対パスです。
  • file_path:保存されたファイルの絶対パスです。
  • editor_name:ファイルを開いたエディターの名前です。CFML ファイルの場合、この名前は Adobe CFML Editor です。

出力の例を次に示します。

<?xml version="1.0" encoding="UTF-8"?> 
<event> 
<ide version="2.0"> 
<callbackurl> 
http://[ip_address:port]/index.cfm? extension=<Extension_Name> 
</callbackurl> 
<eventinfo type="onfilechangeineditor"> 
<project> 
Extensions 
</project> 
<project_path> 
[project_path] 
</project_path> 
<file_path> 
[file_path] 
</file_path> 
<event> 
onfilesaved 
</event> 
<editor_name> 
Adobe CFML Editor 
</editor_name> 
</eventinfo> 
</ide> 
<user> 
</user> 
</event>

コンテキストメニューの指定

コンテキストメニューを指定するには menucontributions タグを使用します。コンテキストメニューとは、右クリックイベントで表示されるポップアップメニューのことです。

各種ビューのメニューコントリビューションを指定するには、contribution タグを使用します。メニューを表示するビュー(ターゲットビュー)を指定するには、contribution タグ内で target 属性を使用します。追加するメニューを指定するには、contribution タグ内で menu タグを使用します。メニューアイテムを指定するには、menu タグ内で action タグを使用します。

シンタックス

<menucontributions> 
<contribution target="rdsview|projectview|outlineview"> 
<menu name="name of the menu item"> 
<action name="action name"> 
</action> 
</menu> 
</contribution> 
</menucontributions>

contribution

属性 説明
target

ターゲットビューとして指定できる値は次のいずれかになります。

  • rdsview
  • projectview
  • outlineview
  • editor

注意:

属性値として使用できる文字は英数字のみです。特殊文字は指定できません。

属性 説明
name メニューの名前を指定します。

注意:

属性値として使用できる文字は英数字のみです。特殊文字は指定できません。

action

属性 説明
name アクションの名前を指定します。
handlerid 関連付けられているハンドラーの ID を指定します。
showresponse ハンドラーが受信した HTML レスポンスをユーザーに表示するかどうかを指定します。デフォルト値は false です。

注意:

属性値として使用できる文字は英数字のみです。特殊文字は指定できません。

メニューフィルターの指定

メニューフィルターを使用すると、メニューやメニューアイテムをどこに表示するかを簡単に制御できます。メニューフィルターを指定するには、filters タグを使用します。filters タグ内では、様々なタイプのフィルターを指定できます。メニューやメニューアイテムをどこに表示するかを指定するには、type 属性と pattern 属性を使用します。指定したフィルターのいずれかに一致すると、指定したメニューまたはメニューアイテムが表示されます。

フィルターはメニューとアクションの両方に対して指定できます。menu タグ内で filter タグを指定すると、そのフィルターによってメニューの表示が制御されます。例えば、次のコードでは、ユーザーが modelglue.xml ファイルを右クリックした場合にのみ、ORM Code Generator のメニューが表示されます。

<filters>
<filter type="file" pattern="modelGlue.xml" />
<filters>
</menu>
ナビゲータービューに対するフィルターの指定

ナビゲータービューのプロジェクト、フォルダーまたはファイルに対してフィルターを指定できます。

シンタックス

pattern="regular expression to match folder, project, or filename" />

*例* フォルダーのコンテキストでのみ ORM Code Generator のメニューが表示されるようにするには、次のようなコードを使用します。

<filters>
<filter type="folder" />
<filters>
</menu>
アウトラインビューに対するフィルターの指定

アウトラインビューの様々なノードタイプに対してフィルターを指定できます。指定したノード名がフィルターとして機能します。アウトラインビューでは、ファイルに対してもフィルターを指定できます。CFML エディターでフィルターと一致するファイルを開くと、コントリビュートされたメニューがアウトラインビューに表示されます。

<filters>
<filter type="node name" />

*例* アウトラインビューの CFfunction ノードでのみ ORM Code Generator のメニューが表示されるようにするには、次のようなコードを使用します。

<filters>
<filter type="cffunction" />

入力型の指定

ハンドラーを呼び出す前に input タグを使用すると、ユーザーに入力を求めることができます。ユーザーの入力は、関連付けられているハンドラーによって処理されます。アクションごとに input タグを指定し、input タグを action タグ内に含める必要があります。

入力ダイアログの高さと幅を制御するには、dialog タグ内で input タグを指定します。例えば、次のようなコードを指定できます。

<input name="Mapping" ... />
<input name="Datasource" ... />
</dialog>
属性 説明
height ダイアログボックスの高さを指定します。
width ダイアログボックスの幅を指定します。
title ダイアログボックスのタイトルを指定します。
image タイトルバーに表示されるイメージのパスを指定します。ここでは、Extension フォルダーからの相対パスを指定する必要があります。

シンタックス

<input name="input variable name"
label="label for the input dialog box"
tooltip="tool tip"
type="dir|string|boolean|file|password|list"/>
</action>
属性 説明
name 入力変数の名前
label 入力ダイアログボックスのラベル
tooltip ユーザーがマウスを入力ダイアログボックスの上に移動したときに表示するツールヒント。
type

入力変数として受け入れられるデータ型は次のいずれかになります。

  • dir
  • string
  • Boolean
  • file
  • password
  • list
  • projectdir
  • projectfile
required 必須の入力フィールドである場合に指定します。入力フィールドを必須フィールドとして指定した場合、ユーザーがその必須フィールドに値を入力するまで、「OK」は有効になりません。
pattern ユーザー入力の検証に使用する正規表現を指定します。検証エラーの場合に表示するエラーメッセージも指定できます。エラーメッセージを指定するには、errormessage 属性を使用します。
errormessage 特定のパターンで検証が失敗したときに表示するエラーメッセージ。
helpmessage 特定の入力フィールドに関してダイアログボックスのタイトル領域に表示するヘルプヒント。
default 特定の入力型のデフォルト値を指定します。入力型が boolean の場合、デフォルト値は指定できません。リストの場合、デフォルト値はあらかじめ選択されています。
checked

チェックボックスフィールドをデフォルトでオンにするかオフにするかを指定します。

  • true - チェックボックスをオンにします(これがデフォルト値です)。
  • false - チェックボックスをオフにします。

注意:

属性値として使用できる文字は英数字のみです。特殊文字は指定できません。

各データ型は、次の表に示す入力型に対応しています。各入力型のシンタックスも示します。

データ型 入力型 シンタックス
dir ディレクトリ選択フィールド <input name="入力変数名" label="ラベル" tooltip=" ツールヒント" type="dir"/>
string テキストフィールド <input name="入力変数名" label="ラベル" tooltip=" ツールヒント" type="string"/>
boolean チェックボックス <input name="入力変数名" label="ラベル" tooltip=" ツールヒント" type="boolean"/>
file ファイル選択フィールド <input name="入力変数名" label="ラベル" tooltip=" ツールヒント" type="file"/>
password パスワードフィールド <input name="入力変数名" label="ラベル" tooltip=" ツールヒント" type="password"/>
list リストフィールド <input name="入力変数名" label="ラベル" tooltip=" ツールヒント" type="list"> <option value="オプション 1"> <option value="オプション 2"> </input>
projectdir プロジェクトディレクトリ選択フィールド <input name="入力変数名" label="ラベル" tooltip=" ツールヒント" type="projectdir"/>
projectfile プロジェクトファイル選択フィールド <input name="入力変数名" label="ラベル" tooltip=" ツールヒント" type="projectfile"/>

<contribution target="rdsview" >
<menu name="ORM Code Generator">
<action name="Generate ORM CFC" handlerid="cfm1" >
<input name="Location" label="Enter location"
tooltip="Location where generated CFCs will be stored" type="dir"/>
<input name="generateAppCFC" label="Generate
Application CFC" tooltip="Generate Application CFC along with ORM CFC"
type="boolean"/>
<input name="generateView" label="Generate View"
tooltip="Generate View template along with ORM CFC" type="boolean"/>
</action>
<action name="Generate Ajax Grid" handlerid="cfm2" >
<input name="Location" label="Enter location"
tooltip="Location where generated View will be stored" type="dir"/>
</action>
</menu>
</contribution>
<contribution target="projectview" >
<menu name="ORM Code Generator">
<action name="Generate ORM CFC" handlerid="cfm1" />
<action name="Generate Ajax Grid" handlerid="cfm2" />
</menu>
</contribution>
<contribution target="outlineview" >
<menu name="ORM Code Generator">
<action name="Generate ORM CFC" handlerid="cfm1" />
<action name="Generate Ajax Grid" handlerid="cfm2" />
</menu>
</contribution>
</menucontributions>

キーワードのサポート

ColdFusion Builder では、入力ダイアログボックスにデフォルト値を追加するためのキーワードがサポートされています。これらのキーワードは実行時に、実際の値に置き換えられます。

次の表に、サポートされているキーワードおよび対応する実際の値を示します。

キーワード 実際の値
projectlocation プロジェクトの場所の絶対パス
projectname プロジェクトの名前
serverhome サーバーのインストール場所の絶対パス
wwwroot サーバーの Web ルート

例えば、projectname キーワードは次のように指定できます。

<input name="projectname" label="projectname" default="{$projectname}" type="dir"/>

拡張機能のインポート、リロード、パッケージ化、デバッグの方法については、「拡張機能ビューの使用」を参照してください。

複数ノードでのメニューコントリビューションのサポート

注意:

ColdFusion Builder 2.0.1 で導入されました

RDS データビューでは、テーブルノードに加えて、サーバー、データベース、ファイルの各ノードにメニューコントリビューションを追加できます。

サーバーノードを選択した場合、サーバー名がハンドラーに送信されます。属性 selected が true の場合は、次に示すハンドラーに送信される応答の例のように、サーバー、データベース、テーブル、またはフィールドが選択範囲の一部かどうかが示されます。

<event>
<ide version="2.0">
<callbackurl>
url
</callbackurl>
<rdsview>
<servers>
<server name="server1">
<server name="server2">
</servers>
<database name="db1" server="server1" selected="true">
<table name="table1" selected="false">
<fields>
<field
name="field1" .... selected="true">
</fields>
</table>
</database>
</rdsview>
</ide>
</event>

フィルター

メニューコントリビューションを RDS データビューの複数のノードに追加できるので、次の例に示すように、フィルターを指定してアクティブにするノードを指定できます。有効なフィルタータイプは、server、database、table、field です。

<menu name="menu1">
<action name="action1">
</action>
<filters>
<filter type="database" />
<filter type="table" />
</filters>
</menu>
</contribution>-

ColdFusion Builder とハンドラーの通信について

ハンドラーと ColdFusion Builder IDE の間の通信には XML が使用されます。イベントが発生すると、ColdFusion Builder からそのイベントに関連付けられているハンドラーへ、イベントの詳細が XML 形式で送信されます。この XML は ideEventInfo という名前の FORM スコープ変数としてハンドラーに送信されます。FORM スコープ変数から XML を取得するには、ハンドラーで cfparam タグを使用します。

シンタックス

<cfparam name="ideeventinfo">

または

<cfset ideData= form.ideEventInfo >

XML の構造について

ここでは実際の XML コードを例に取り、XML の構造について説明します。コードを見る前に、次のポイントに注意してください。

  • ハンドラーに送信される情報はすべて event タグ内にあります。
  • イベントおよびアクションの情報はすべて {{ide}} タグ内にあります。
  • ユーザー入力はすべて user タグ内にあります。

次の表で、各種の XML コードについて説明します。XML コードの内容は、イベントによって異なります。

コード コンテキスト 説明
<database name="">
<table name="">
<fields>
<field name=""
type=""
length=""
nullallowed=""
primarykey=""/>
</fields>
</table>
</database>
</rdsview>
rdsview RDS ビューのメニューアイテムをクリックすると、関連付けられているハンドラーにイベントの詳細が送信されます。
projectname="" projectlocation="">
<resource name=""
path=""
type="file/folder/project" />
</projectview>
projectview プロジェクトビューのメニューアイテムをクリックすると、関連付けられているハンドラーにイベントの詳細が送信されます。
projectname=""
projectlocation="" >
<source filename=""
path="" >
<node type="function/other">
<function name=""
returntype="">
<argument name=""
type="" />
</function>
</node>
</source>
</outlineview>
outlineview アウトラインビューのメニューアイテムをクリックすると、関連付けられているハンドラーにイベントの詳細が送信されます。
projectname=""
projectlocation=""
eventtype="" >
<resource name=""
path=""
type="file/folder/project" />
</eventinfo>
プロジェクト作成時 指定したイベントが発生すると、関連付けられているハンドラーにイベントの詳細が送信されます。
<input name="" value=""/>
<input name="" value=""/>
<input name="" value=""/>
</user>
入力ダイアログボックス ユーザー入力はすべて user タグ内で指定します。user タグ内の各 input タグで、具体的なユーザー入力を指定します。入力名は、IDE_Config.xml ファイルで指定されている入力名と同じです。
<user> <page index="" > <input name="" value="" /> </page> </user> インストールウィザード user タグ内で指定されたすべてのユーザー入力が、インストールウィザードに関連付けられているハンドラーに送信されます。個々のユーザー入力は user タグ内の各 input タグに格納されます。入力名は、IDE_Config.xml ファイルで指定されている入力名と同じです。

ColdFusion Builder からハンドラー CFM ファイルに送信される ideeventinfo.xml には、次の情報が含まれます。

  • ColdFusion Builder のバージョン情報。次のように記述されます。
<ide version="2.0" >
....
</ide>
</event>
  • サーバーの詳細(ホスト名やポート番号など)。次のように記述されます。
projectlocation="C:/Documents and Settings/sandeepp/runtime-EclipseApplication/mg1"
eventtype="onprojectcreate">
<server name="local1" hostname="localhost" port="8501" wwwroot="C:\ColdFusion9\wwwroot"/>
</eventinfo>

拡張機能間でのメッセージの送信

注意:

ColdFusion Builder 2.0.1 で導入されました

拡張機能では、別の拡張機能にメッセージを送信して、アクションを実行したり、イベントを通知したりできます。メッセージを受信した拡張機能は、アクションを実行することも、メッセージを無視することもできます。

次のシナリオでは、この機能の利点について説明します。

エディターでの異なるファイルへの切り替えや、RDS データビューでの選択範囲の変更など、イベントをリスンできる拡張機能を作成できます。この機能を使用すると、必要に応じて、ビューの内容をこの情報(例えば、新しい選択範囲に関する情報)で更新できます。

イベント変更通知を受け取るハンドラーの CFM ファイルは、次の情報を使用して ColdFusion Builder に対するコールバックコマンド sendMessageToExtension を実行します。

  • メッセージ情報
  • メッセージを送信する必要がある拡張機能の名前
  • 実行する必要がある拡張機能内のハンドラー CFM ファイル

次の例では、ColdFusion Builder に対して、New Extension Enhacements in CFB Twister 拡張機能にメッセージを送信し、そのハンドラー NewFeaturesTestViewHandler を呼び出し、イベントタイプや他のイベント関連情報などの情報を渡すように要求します。

<ide> <commands> <command type="sendMessageToExtension">
<params> <param
key="extension_name" value="New Extension Enhacements in CFB Twister" />
<param key="handlerid" value="NewFeaturesTestViewHandler" />
<param key="event_type" value="#type#" /> <cfloop
list="#structKeyList(eventinfo[1])#" index="key"> <param
key="#key#" value="#eventinfo[1][key].xmlText#" />
</cfloop> </params> </command>
</commands> </ide> </response> </cfoutput> </cfsavecontent>
<cftry>
<cfhttp url="#callbackURL#" method="post" result="httpResult">
<cfhttpparam type="body" value="#command#">
</cfhttp>
<cfcatch>
<cfset httpError = cfcatch.Message>
</cfcatch>
</cftry>

ハンドラーの通信

ColdFusion Builder はイベントの詳細をハンドラー NewFeaturesTestViewHandler に、次のような XML(ideEventInfo という FORM スコープ変数)で送信します。

<ide version="2.0">
<callbackurl>
http://[ip_address:port]/index.cfm?extension=New Extension Enhacements in CFB 2.0.1
</callbackurl>
<extension_message>
<from_extension_name>
New Extension Enhacements in CFB 2.0.1
</from_extension_name>
<params>
<param key="project" value="Extensions"/>
<param key="project_path" value="[project_path]"/>
<param key="file_path" value="[file_path]"/>
<param key="event" value="onfilechangeineditor"/>
<param key="event_type" value="onfilechangeineditor"/>
<param key="editor_name" value="Adobe CFML Editor"/>
</params>
<from_extension_server>
LocalCF9
</from_extension_server>
</extension_message>
</ide>
<user>
</user>
</event>

extension_message ノードでは、次のような情報が渡されます。

情報 説明
from_extension_name メッセージを送信した拡張機能。
params メッセージのパラメーター。

拡張機能のユーザーインターフェイスの作成

入力ダイアログボックスの作成

入力ダイアログボックスは、設定ファイル(IDE_Config.xml)と CFM ページのいずれかを使用して作成できます。

注意:

XML レスポンスを使用してユーザーインターフェイスを作成する場合は、該当するコードで cfsetting showdebugoutput="no" を指定してデバッグ出力を無効にしてください。

設定ファイルを使用する場合

設定ファイル(IDE_config.xml)を作成し、必要な項目を指定することによって入力ダイアログボックスを作成します。詳細については、「設定ファイル」を参照してください。例えば、次のようなコードを指定できます。

<dialog>
<input name="input variable name" label="label for the input dialog"
tooltip="tool tip" type="dir"/>
</dialog>
</action>

CFM ページを使用する場合

  • 次のように、IDE_config.xml ファイルで、Action タグの showResponse 属性を yes に設定します。
<action name="generate CFC" handlerid="cfcgenerator" showResponse="yes" />
  • CFM ハンドラー側で次の作業をおこないます。

1. 次のように、cfheader タグの content-type の値を text/xmlに指定します。

<cfheader name="Content-Type" value="text/xml">

2. 次のような XML を作成して入力ダイアログボックスを作成します。

<response>
<ide>
<dialog >
<input name="location" Label="Enter Location" type="dir" />
</dialog>
</ide>
</response>
</cfoutput>

HTML ユーザーインターフェイスの作成

HTML ユーザーインターフェイスは、HTML レスポンスと XML レスポンスのいずれかを使用して作成できます。

HTML レスポンスを使用する場合

次のように、IDE_config.xml ファイルで、Action タグの showResponse 属性を yes に設定します。

<action name="generate CFC" handlerid="cfcgenerator" showResponse="yes" />

CFM ページの HTML コンテンツがダイアログボックスに表示されます。HTML コンテンツでは、Ajax と Javascript はサポートされません。HTML コンテンツでリンクを使用する場合は、相対 URL ではなく絶対 URL を使用する必要があります。

XML レスポンスを使用する場合

CFM ハンドラー側で次の作業をおこないます。

1. 次のように、cfheader タグの content-type の値を text/xmlに指定します。

<cfheader name="Content-Type" value="text/xml">

2. 次のような XML を作成して HTML ユーザーインターフェイスを作成します。

<response showresponse="true">
<ide url="http://localhost:8500/local/Dynamic%20UI%20Test/handlers/main.swf" >
<dialog width="455" height="470" />
</ide>
</response>
</cfoutput>

指定した URL の HTML コンテンツがダイアログボックスに表示されます。次のように、XML レスポンスを使用して HTML ユーザーインターフェイスを表示することもできます。

<response showresponse="true">
<ide >
<dialog width="100" height="400" />
<body>
<![CDATA[
Any HTML content
]]>
</body>
</ide>
</response>
</cfoutput>

注意:

拡張機能では、CSS および JavaScript の相対パスはサポートされていません。CDATA セクションで指定されている Ajax コードおよび JavaScript コードは動作しません。CDATA セクションで URL を指定する場合は、絶対 URL を使用する必要があります。

XML レスポンスの構造について

Response

XML レスポンスは、次の属性を持つ response タグ内で定義します。

属性 説明
showresponse

レスポンスをユーザーに表示するかどうかに応じて、次の boolean 値を指定します。

  • true
  • false
status 成功またはエラーのダイアログボックスを表示します。ステータス(成功かエラーか)に応じて、対応するアイコンがダイアログボックスに表示されます。IDE タグで message 属性が指定されている場合にのみ適用されます。この属性は、IDE タグ内で message 属性が指定されている場合にのみ適用されます。

IDE

IDE タグには次の属性があります。

属性 説明
message 成功またはエラーのダイアログボックスに、指定されたメッセージを表示します。メッセージをエラーメッセージとして表示するかどうかを指定するには、response タグの status="success/error" 属性を使用します。
url ユーザーに表示するページの URL。
handlerfile ユーザーがメッセージダイアログボックスで「OK」をクリックしたときに呼び出すハンドラーファイルのパス。この属性は、XML レスポンスから入力ダイアログボックスが作成される場合にのみ適用されます。

Body

body タグは、HTML コンテンツを指定する場合に使用します。body タグ内の HTML コンテンツは、CDATA セクション内で指定する必要があります。

Dialog

dialog タグは、入力ダイアログボックスを作成する場合に使用します。このタグには次の属性があります。

属性 説明
height ダイアログボックスの高さを指定します。
width ダイアログボックスの幅を指定します。
title ダイアログボックスのタイトルを指定します。
image タイトルバーに表示されるイメージのパスを指定します。
dialogclosehandler ユーザーがメッセージダイアログボックスで「閉じる」または「キャンセル」をクリックしたときに呼び出すハンドラーファイルのパス。この属性は、XML レスポンスから入力ダイアログボックスが作成される場合にのみ適用されます。

入力ダイアログの高さと幅を制御するには、dialog タグ内で input タグを使用します。

属性 説明
height
ダイアログボックスの高さを指定します。
width ダイアログボックスの幅を指定します。
title ダイアログボックスのタイトルを指定します。
image タイトルバーに表示されるイメージのパスを指定します。ここでは、Extension フォルダーからの相対パスを指定する必要があります。

ビューの作成

ColdFusion Builder では、拡張機能を使用してビューを作成できます。また、作成するビューに、ビューアイコンやツールバーのアイテムを指定できます。

この機能は、データを表示したまま IDE の機能を使用する場合に便利です。

次のいずれかの方法でビューを作成します。

  • ide_config.xml にコントリビューションを追加します。
  • ハンドラーのレスポンスから動的に作成します。

IDE_config.xml へのコントリビューションの追加

IDE_config.xml の設定ファイルに詳細を指定します。次のコードに例を示します。ide_config.xml にビューのコントリビューションを追加すると、ビューの表示ダイアログボックス(ウィンドウ/ビューの表示/その他)の「ColdFusion」カテゴリの下のビューリストにビューが追加されます。

<view id="ID" title="title" icon="relative_path_to_icon" handlerid="handler_id" >
<toolbarcontributions>
<toolbaritem icon="relative_path_to_icon" handlerid="handler_id" />
<toolbaritem icon="relative_path_to_icon" handlerid="handler_id" />
</toolbarcontributions>
</view>
</viewcontributions>
属性 説明
id ビューを識別します。拡張機能によってコントリビュートするビューは、一意の ID を持つ必要があります。id は、ハンドラーのレスポンスからビューの内容を更新する場合に使用できます。
title ビューのタイトル。
toolbaritem ビューツールバーにアイテムを追加します。
icon 拡張機能のインストール場所に存在するイメージファイルへの相対パス。例えば、(拡張機能のインストール場所の images フォルダー内の)images/icon.png を指定すると、icon.png がビューアイコンとして表示されます。標準サイズは、16x16 ピクセルまたは 20x20 ピクセルです。一般的なイメージ形式はすべてサポートされています。
handlerid 関連付けるハンドラーの ID。
keepFocus(ColdFusion Builder 2.0.1 で追加) true の場合、拡張機能ビューが動的に生成されたときにフォーカスを移動しません。ファイルを編集していて、アクションの結果が拡張機能ビューの更新または作成になったものとします。このようなとき、エディターからビューにフォーカスを移動したくない場合があります。属性 keepFocus を true に設定すると、IDE_config.xml の <view> タグを使用して拡張機能ビューが動的に生成されるときに、フォーカスが移動しません。デフォルトでは、動的に作成された拡張機能ビューはフォーカスを受け取りません。メニューオプションのウィンドウ/ビューの表示から表示される拡張機能ビューは常に、フォーカスを受け取ります。

ビューの表示

  1. ビューをコントリビュートする拡張機能をインストールまたは読み込みます。

  2. ビューの表示ダイアログボックスを開きます(ウィンドウ/ビューの表示/その他)。

  3. フォルダーリストの「ColdFusion」をダブルクリックします。

  4. (コントリビュートする)ビューを選択し、「OK」をクリックします。

ビューが表示され、対応するハンドラー CFM ファイルが呼び出されます。

ハンドラーの使用(動的ビュー用)

CFM ハンドラーで、

1. 次のように、cfheader タグの content-type の値を(text/xmlに)指定します。

<cfheader name="Content-Type" value="text/xml">

2. 次のような XML を作成して、HTML コンテンツを表示するビューを作成します。

<response showresponse="true">
<ide url="URL">
<view id="ID" title="title" icon="icon_path" />
</ide>
</response>
</cfoutput>

次のように、XML レスポンスを使用して HTML コンテンツを表示することもできます。

<response showresponse="true">
<ide>
<view id="ID" title="title" icon="icon_path" handlerid="ID" />
<body>
[![CDATA[any html content]]>
</body>
</ide>
</response>
</cfoutput>

注意:

現在のところ、ビューは、ColdFusion Builder セッション間では保持されません。

ColdFusion Builder 2 以前のバージョンでは、動的ビューが「ウィンドウ/ビューの表示」ダイアログのサブメニューに追加されます。ただし、ColdFusion Builder 3 では、動的ビューはドロップダウン項目として拡張機能ビューに表示されます。

ハンドラーからのコールバックコマンドの指定

ColdFusion Builder(以前のリリース)では、ハンドラー CFM ファイルから、次のコマンドの実行を要求できます。refreshproject、refereshfolder、refreshfile、inserttext および openfile

これらすべての操作とその他のいくつかの操作を、(実行終了時ではなく)実行フェーズ中に完了することができるようになりました。ハンドラー CFM ファイルから、コールバック URL を使用して、ColdFusion Builder への呼び出しを送信できます。ColdFusion Builder では、ideeventinfo の XML で、次のようにコールバック URL が提供されます。

<event> 
<ide version="2.0"> 
<callbackurl> 
callbackURL 
</callbackurl> 
</ide> 
</event>

エディター関連のコンテキスト情報を取得するコマンドだけでなく、サーバー固有の情報(データソースやテーブルの詳細など)を取得することもできます。

次の表に、実行フェーズで様々な操作を実行する便利なコマンドの一覧を示します。データを要求するすべてのコマンドでは、コマンドの結果が XML 形式で返されます。各コマンドで返される結果についても表に記載します。

名前 アクション 入力 結果
refreshFile 絶対パスまたは相対パスを送信して、指定したファイルを更新します。相対パスを指定する場合は、プロジェクト名を指定します。projectName はオプションです。対象ファイルがプロジェクトに含まれる場合に指定できます。 <command type="refreshFile"> 
<params> 
<param key="filename" value="filePath" />
<param key="projectname" value="#arguments.project
Name#" /> 
</params> 
</command>
該当なし
refreshFolder 指定したフォルダーを更新します。projectName はオプションです。対象フォルダーがプロジェクトに含まれる場合に指定できます。 <command type="refreshFolder"> 
<params> 
<param key="foldername" value="folderPath" /> 
<param key="projectname" value="projectName" /> 
</params> 
</command>
該当なし
refreshProject 指定したプロジェクトを更新します。 <command type="refreshProject"> 
<params> 
<param key="projectname" value="projectName" /> 
</params> 
</command>
該当なし
openFile 絶対パスまたは相対パスを送信して、指定したファイルを編集するために開きます。相対パスを指定する場合は、プロジェクト名を指定します。projectName はオプションです。対象フォルダーがプロジェクトに含まれる場合に指定できます。lineNumber は、オプションのパラメーターです(ColdFusion Builder 2.0 で追加)。 <command type="openFile"> 
<params> 
<param key="filename" value="filePath" />
<param key="projectname" value="projectName" /> 
<param key="linenumber" value="10" /> 
</params> 
</command>
該当なし
insertText 指定したテキストをアクティブなエディターに挿入します。このコマンドを実行すると、エディターで選択されているテキストが置換されます。 <command type="inserttext"> 
<params> 
<param key="text"> 
<![CDATA[ text_to_insert ]]> 
</param> 
<param key="insertmode" value="replace/insert" /> 
</params> 
</command>
該当なし
getServers Server Manager に追加されているサーバーを一覧表示します。 <command type="getservers" > 
</command>
<?xml version="1.0" encoding="UTF-8"?>
<event>
<ide version="2.0">
<callbackurl>
[call back URL]
</callbackurl>
<command_results>
<command_result type="getservers">
<servers>
<server name=""/>
...
</servers>
</command_result>
</command_results>
</ide>
</event>
getDatasources 特定のサーバーのデータソースを一覧表示します。出力変数は、データソース名のカンマ区切りリストです。サーバー名が指定されなかった場合は、デフォルトで、拡張機能が実行されるサーバーになります。 <command type="getdatasources" > 
<params> 
<param key="server" value="comma_
seperated_
server_names" /> 
</params> 
</command>
<?xml version="1.0" encoding="UTF-8"?>
<event>
<ide version="2.0">
<callbackurl>
[callback url]
</callbackurl>
<command_results>
<command_result type="getdatasources">
<datasources>
<datasource name="" server=""/>
...
</datasources>
</command_result>
</command_results>
</ide>
</event>
getTables 特定のデータソースのテーブルの詳細を取得します。サーバー名が指定されなかった場合は、デフォルトで、拡張機能が実行されるサーバーになります。 <command type=
"gettables">
<params> <param key="server" value=
"servers" /> <param key=
"datasource" value="datasources" /> </params> </command>
<?xml version="1.0" encoding="UTF-8"?>
<event>
<ide version="2.0">
<callbackurl>
[callback url]
</callbackurl>
<command_results>
<command_result type="gettables">
<tables>
<table datasource="" name="table_Name" server="">
<field cfsqltype="" cftype="" javatype="" name=""
nullallowed="" primarykey="true|false" type=""/>
[list of other columns]
</table>
...[list of other tables]
</tables>
</command_result>
</command_results>
</ide>
</event>
getTable 特定のデータソースの特定のテーブルの詳細を取得します。サーバー名が指定されなかった場合は、デフォルトで、拡張機能が実行されるサーバーになります。 <command type="gettable"> 
<params> 
<param key="server" value="servername" />
<param key="datasource" value="dsn" /> 
<param key="table" value="tablename" /> 
</params> 
</command>
<?xml version="1.0" encoding="UTF-8"?>
<event>
<ide version="2.0">
<callbackurl>
[callback url]
</callbackurl>
<command_results>
<command_result type="gettable">
<table datasource="" name="" server="">
<field cfsqltype="" cftype="" javatype="" name=""
nullallowed="" primarykey="true|false" type=""/>
...
</table>
</command_result>
</command_results>
</ide>
</event>
searchFile テキストコンテンツファイルを検索して、その内容を返します。getcontentは、テキストファイルの場合にのみ使用します。searchDirection では、親フォルダー(up)とサブフォルダー(down)のいずれに対して検索を実行するかを指定します。 <command type="searchfile" > 
<params> 
<param key="fileName" value="ide_config.xml"/> 
<param key="from" value="search_from_
this_
file_or_folder"/>
<param key="getcontent" value="true/false"/> 
<param key="searchDirection" value="up/down"/> 
<param key="matchfolder" value="true/false"/> 
</params> 
</command>
<?xml version="1.0" encoding="UTF-8"?>
<event>
<ide version="2.0">
<callbackurl>
[callback url]
</callbackurl>
<command_results>
<command_result type="searchfile">
<files>
<file path="" type="file"/>
</files>
</command_result>
</command_results>
</ide>
</event>
getfunctionsandvariables(拡張機能の詳細については、「ColdFusion Builder 2.0.1 の既存の コールバックコマンドに対する拡張機能」を参照してください) 指定したファイル内の関数と変数を一覧表示します。 <command type=
"getfunctionsand
variables" > 
<params> 
<param key="filePath" value="path"/> 
</params> 
</command>
<?xml version="1.0" encoding="UTF-8"?>
<event>
<ide version="2.0">
<callbackurl>
[callback url]
</callbackurl>
<command_results>
<command_result type="getfunctionsand
variables">
<cfmlfile type="component
|interface|cfml">
<variables>
<variable function="name of function if variables is inside function" name="" type=""/>
...
</variables>
<functions>
<function file="" name=""/>
...
</functions>
</cfmlfile>
</command_result>
</command_results>
</ide>
</event>
getProjects(ColdFusion Builder 2.0.1 で追加)

ColdFusion Builder プロジェクトのリストを取得します。次の詳細が含まれます。

  • name:プロジェクトの名前
  • path:プロジェクトの絶対パス
  • isopenプロジェクト開かれたか、閉じられたか。開かれた場合は値は true です。
  • iscfproject:ColdFusion プロジェクトでない場合は false。ColdFusion プロジェクトの場合は、サーバー名などの追加情報が返されます。
<commands> 
<command type=
"getprojects" > </command> 
</commands>
<?xml version="1.0" encoding=
"UTF-8"?><event> <ide version="2.0"> <callbackurl> http://<ip_address:port>
/index.cfm?extension=untitled </callbackurl> <command_
results> <command_result type="getprojects"> <projects> <project name="TestProject"
path="<Project_Path>">
<cfproject> <server name="local_server"/>
</cfproject> </project>
</projects> </command_result> </command_results> </ide></event>
reloadExtensions(ColdFusion Builder 2.0.1 で追加) 拡張機能を使用して拡張機能をリロードします。 <commands> 
<command type="reloadExtensions" > </command> 
</commands>
該当なし
sendMessageToExtension(ColdFusion Builder 2.0.1 で追加) 詳細については、「拡張機能間でのメッセージの送信」を参照してください。    

ColdFusion Builder 2.0.1 の既存のコールバックコマンドに対する拡張機能

コールバックコマンドgetfunctionsandvariablesによって返される応答には、変数スコープ関連の情報が含まれるようになりました。例えば、変数が関数で var スコープになっている場合、スコープを特定する拡張機能を作成できます。次の 3 つの変数が識別されます。

  • 引数スコープ
  • Var スコープ
  • タグで作成された変数(例えば、cfqueryで作成された変数)

ハンドラー CFM ファイルのその他のスコープは、変数名の接頭辞(例えばthis や application など)から特定できます。次に示すのは、スコープ関連の情報を含むgetfunctionsandvariablesの出力の例です。

<event> 
<ide version="2.0"> 
<callbackurl> 
http://ip_address:port/index.cfm?extension=untitled 
</callbackurl> 
<command_results> 
<command_result type="getfunctionsandvariables"> 
<cfmlfile type="cfml"> 
<variables> 
<variable name="i" type="numeric"/> 
</variables> 
<functions> 
<function name="testFunc" file="C:\ColdFusion9\wwwroot\MyExtension\handlers\test.cfm"> 
<variables> 
<variable name="j" type="numeric" function="testFunc" scope="varscope"/> 
<variable name="arg1" function="testFunc" scope="argument"/> 
<variable name="variables.l" type="numeric" function="testFunc"/> 
</variables> 
</function> 
</functions> 
</cfmlfile> 
</command_result> 
</command_results> 
</ide> 
</event>

例:コールバック URL を使用したコマンドの実行

  1. ステップ 1:ideeventinfo の XML を取得

    <cfparam name="ideeventinfo" > 
    <cfset xmldoc=xmlParse (ideeventinfo)>
  2. ステップ 2:ideeventinfo の XML からコールバック URL を取得

    <cfset callbackurl= xmldoc.event.ide.callbackurl.xmlText>
  3. ステップ 3:ColdFusion Builder にコマンドを送信する XML を作成

    <cfsavecontent variable="commandxml" > 
    <cfoutput> 
    <response> 
    <ide> 
    <commands> 
    [Any command xml to be executed] 
    </commands> 
    </ide> 
    </response> 
    </cfoutput> 
    </cfsavecontent>
  4. ステップ 4:コールバックコマンドを実行して、レスポンスを取得

    <cfhttp method="post" url="#callbackurl#" result="commandresponse" > 
    <cfhttpparam type="body" value="#commandxml#" > 
    </cfhttp>

コールバックコマンド使用中のエラー処理

データを返すコマンドの実行中にエラーが発生した場合、コマンドのレスポンス XML によって、エラーノードと考えられるエラー原因の情報が提供されます。

<?xml version="1.0" encoding="UTF-8"?> 
<event> 
<ide version="2.0"> 
<callbackurl> 
[callback url] 
</callbackurl> 
<command_results> 
<error> 
[error message] 
</error> 
</command_results> 
</ide> 
</event>

その他のリソース

  • *[ColdFusion Builder 2 の拡張機能 -
    コールバックコマンドについて|http://sandeepp.org/blog/?p=224]* ColdFusion Builder エンジニアリングチームのメンバーである Sandeep Paliwal が、ColdFusion Builder 2 の拡張機能でのコールバックコマンドの可能性について説明します。

拡張機能ビューの使用

拡張機能ビューでは、拡張機能のインストール、アンインストール、インポート、リロードを行えます。

拡張機能ビューがまだワークベンチに表示されていない場合、拡張機能ビューを追加するには、ウィンドウ/ビューの表示/その他を選択します。次に、ビューの表示ダイアログボックスで、ColdFusion/拡張機能ビューを選択します。

拡張機能のインストールとアンインストール

  1. 拡張機能ビューをクリックし、インストールするアーカイブファイルを選択します。

    注意:

    ColdFusion Builder に付属する拡張機能をインストールする場合は、ColdFusion Builder のインストール先の Extensions ディレクトリにアーカイブファイルが保存されています。

  2. 拡張機能のインストールウィザードに従ってインストール作業を進めます。

  3. サーバーを選択します。サーバーがまだ 1 台も設定されていない場合は、「サーバーの追加」をクリックして新しいサーバーを追加します。サーバーを追加する方法については、「ColdFusion サーバーの追加」を参照してください。複数のサーバーに同じ拡張機能をインストールすることもできます。例えば、CF9 ローカルサーバーと CF8 ローカルサーバーを選択できます。ただし、アクティブにできるサーバーは、拡張機能によって使用されるサーバーのみです。

  4. サーバーを選択するときにパスが自動的に挿入されない場合は、ColdFusion の Web ルートのパスを入力します。例えば、_C:\ColdFusion9_wwwroot\ のように入力します。

  5. 拡張機能のインストール先となる Web ルート内のフォルダーを選択します。アーカイブファイルは、このインストール先に解凍されます。

  6. 「インストール」をクリックします。

インストールされている拡張機能の簡単な説明を表示するには、拡張機能の名前をクリックします。複数のサーバーに同じ拡張機能をインストールした場合、アクティブにできるサーバーは 1 つのみです。これを行うには、アクティブにするサーバーをアクティブサーバードロップダウンリストから選択します。

拡張機能をアンインストールするには、拡張機能ビューで拡張機能を選択し、 をクリックします。拡張機能は、IDE からのみアンインストールすることも、IDE とコンピューターのファイルシステムから同時に削除することもできます。ファイルシステムから拡張機能を完全に削除した後に、元に戻すことはできません。

注意:

複数のサーバーにインストールした拡張機能をアンインストールする場合は、各サーバーで同じアンインストール手順を繰り返します。

拡張機能のインポートとリロード

拡張機能ビューでは、拡張機能のインポートとリロードをおこなえます。

  • 既存のディレクトリから ColdFusion Builder に拡張機能をインポートできます。拡張機能ビューで をクリックし、拡張機能ファイルが保存されているディレクトリを選択します。

注意:

既存の拡張機能を使用して新しい拡張機能を開発するときは、拡張機能をインポートすると便利です。

  • インストール済みの拡張機能の設定ファイルを変更した場合は、拡張機能をリロードします。設定ファイルの変更は、拡張機能をリロードしないと反映されません。拡張機能ビューで をクリックすると、インストール済みの拡張機能がすべてリロードされます。

拡張機能のデバッグとパッケージ化

設定ファイルから拡張機能をロードする際にエラーが発生した場合は、Eclipse ログにエラーが記録されます。エラーをデバッグするには、ウィンドウ/ビューの表示/その他/一般/エラー・ログを選択して、ColdFusion Builder エラーログを表示します。ColdFusion Builder のエラーログがエラーログビューに表示されます。

拡張機能をパッケージ化するには、次のコンテンツを ZIP ファイルに追加します。

  • 設定ファイル(IDE_config.xml)
  • すべてのハンドラー CFM ファイルを含むハンドラーディレクトリ

注意:

設定ファイルとハンドラーディレクトリは、ZIP ファイルのルートの直下に追加してください。

設定ファイルとハンドラーディレクトリは、ZIP ファイルのルートの直下に追加してください。

ColdFusion Builder Extension Creator ウィザードは、拡張機能の作成とパッケージ化の手順を案内します。このウィザードでは、設定ファイル(IDE_Config.xml)とハンドラーファイル(CFM)の作成、メタデータ要素の指定、コンテキストメニューの追加、ユーザーインターフェイスの作成を行います。

注意:

ColdFusion Builder Extension Creator ウィザードは、ColdFusion サーバーの設定時に「拡張機能のインストール」を選択した場合にのみインストールされます。インストール済みの拡張機能のリストは、拡張機能ビューで確認できます。

  1. ナビゲータービューで、拡張機能を作成するプロジェクトを右クリックし、Adobe Extension Builder/New を選択します。

  2. 拡張機能を保存する場所を参照して選択するか、手動で入力します。拡張機能と同じ名前のフォルダーに拡張機能ファイルを保存するには「Create Folder With Extension Name」を選択します。

  3. 「Extension Details」タブを選択して、拡張機能の名前と詳細を入力します。拡張機能のインストール時に表示するライセンス契約のテキストを指定することもできます。

メニューコントリビューションの指定

コンテキストメニューを指定するには、「Menu contributions」タブを選択して「Add Menu」をクリックします。コンテキストメニューとは、右クリックアクションで表示されるポップアップメニューのことです。

  • メニューの名前と、メニューを表示するターゲットビューを入力します。ターゲットビューとして指定できるのは、ナビゲータービュー、プロジェクトビュー、RDS ビュー、アウトラインビュー、CFML エディターのいずれかです。「Save Menu」をクリックします。
  • メニューアイテムを指定するには、「Add Action」をクリックします。
  1. アクションにはハンドラーを関連付けることができます。ハンドラーは、サーバーから取得したコード生成操作を表示します。ハンドラー ID とハンドラー名を指定して「Show Response」を選択し、サーバーのレスポンスを表示します。「保存」をクリックします。

  2. ハンドラーが呼び出される前に、ユーザー入力を取得できます。これを行うには、「Add Input」をクリックします。

  3. 入力変数名、入力ダイアログボックスのラベル、ツールヒントおよび入力変数タイプを指定します。

  4. ユーザー入力の検証に使用するパターンと、検証の失敗時に表示するエラーメッセージを指定することもできます。

  5. 入力フィールドを必須フィールドとして指定するには、「Required」を選択します。デフォルトでチェックボックスをオンにするには、「Checked」を選択します。「保存」をクリックします。

  • メニューの表示を制御するためのフィルターを指定するには、「Add Filter」をクリックします。フィルターは、プロジェクトレベル、フォルダーレベル、およびファイルレベルで指定できます。

ハンドラーの指定

インストール済みのハンドラーに関する詳細を表示するには、「Handlers」タブを選択します。

  1. 新しいハンドラーを指定するには、「Add Handler」をクリックし、必要な詳細を入力します。

  2. ハンドラーを呼び出す前にユーザー入力を取得するには、「Generates Response」を選択します。

  3. 入力ダイアログボックスのタイトルを指定し、高さと幅をピクセル単位で指定します。「Save Handler」をクリックします。

拡張機能のインストールウィザードの作成

拡張機能のインストール手順を案内するインストールウィザードを作成するには、「Install Wizards」タブを選択します。

  1. ウィザードの高さと幅をピクセル単位で指定します。ウィザードにハンドラーを関連付けることもできます。「保存」をクリックします。

  2. ウィザードのタイトルを指定して、「Save」をクリックします。

  3. 入力変数名、入力ダイアログボックスのラベル、ツールヒントおよび入力変数タイプを指定します。ユーザー入力の検証に使用するパターンと、検証の失敗時に表示するエラーメッセージを指定することもできます。

拡張機能のパッケージ化

  1. ナビゲータービューで、ide_config.xml ファイルと、すべてのハンドラー CFM ファイルを含む Handler フォルダーを右クリックし、Adobe Extension Builder/Package を選択します。これらのファイルが ZIP ファイルに追加されます。

  2. ZIP ファイルを保存する場所を参照して選択します。

拡張機能からコードアシストへのコントリビュート

拡張機能から、コードアシストに提案候補を追加できます。

  1. IDE_config.xml で、次の作業を行います。
  • 関数パラメーターのコードアシストに提案候補を追加するには、次のコードを追加します。

<codeassistcontribution> 
<functions> 
<function name="linkTo" variableName="event" componentName="component_name" handlerId="CodeAssistHandler"> 
<parameter index="1" /> 
</function> 
</functions> 
</codeassistcontribution>
  • 変数のコードアシストに提案候補を追加するには、次のコードを追加します。
<codeassistcontribution> 
<variables> 
<variable name="event" componentName="component_name" handlerId="CodeAssistHandler"> 
<parameter index="1" /> 
</variable> 
</variables> 
</codeassistcontribution>
属性 説明
name 表示される関数の名前。
variableName 変数の名前。指定すると、関数を呼び出す変数名が、この変数名と一致する場合にのみ、ハンドラーが呼び出されます。変数の場合、variablenameを指定すると、エディターにその変数のコントリビューションが表示されます。
componentName 指定すると、関数を呼び出す変数のタイプが、指定したコンポーネント名と一致する場合にのみ、ハンドラーが呼び出されます。
handlerID 関連付けるハンドラーの ID。
index ハンドラーがコードアシストを提供可能なパラメーターのインデックスを指定します。指定しなかった場合は、関数内のすべてのパラメーターで、ハンドラーが呼び出されます。

1. ハンドラー CFM ファイルで、コードアシストの提案候補を追加するレスポンスを次の形式で指定します。

<codeassist_response> 
<proposal display="display_value" insert="insert_this_value" inquotes="true/false"/> 
</codeassist_response>
属性 説明
display ここに指定した値が提案候補ウィンドウに表示されます。
insert その提案候補が選択された場合、ここに指定した値がエディターに挿入されます。
inquotes true に設定すると、エディターに挿入されるテキストが二重引用符で囲まれます。

2. 拡張機能をインストールまたは読み込みます。ColdFusion Builder のコードアシストを起動すると、提案候補ウィンドウに関数が表示されます。

その他のリソース

拡張機能による起動ページ設定のサポート

拡張機能を使用して、フレームワークアプリケーションの開始ページの URL を動的に生成することができます。

ColdFusion Builder の機能(ColdFusion デバッガー、外部ブラウザーの使用、ColdFusion アプリケーションとしての実行など)では、この URL が開始ページの URL として使用されます。

生成される URL には、URL に追加されるクエリパラメーターも含まれます。

注意:

ColdFusion Builder では、プロジェクトレベルで Set Launch Page をおこなえます。この設定は、単純なアプリケーションの場合に便利です。この機能では、フレームワークに基づいて、プロジェクトの起動ページを設定するオプションが提供されます。

IDE_config.xml への開始ページのコントリビューションの追加

IDE_config.xml の設定ファイルに詳細を指定します。次のコードに例を示します。

<startpagecontribution> 
<urlgenerator handlerid="ID" /> 
</startpagecontribution>

ハンドラーの通信

ColdFusion Builder はイベントの詳細をハンドラーに、次のような XML(ideEventInfo という FORM スコープ変数)で送信します。

<event> 
<ide version="2.0"> 
<callbackurl> 
... 
</callbackurl> 
<startpage_request> 
<project name="" projectlocation=""> 
<resource name="" path="" type="file|Folder|Project"/> 
<server name="" hostname="" port="" wwwroot=""/> 
</project> 
</startpage_request> 
</ide> 
</event>

この情報は、URL を生成する場合に使用できます。

拡張機能を使用した開始ページの URL の生成

  1. プロジェクトビューで、プロジェクトを右クリックし、プロパティ/ColdFusion プロジェクトを選択します。

  2. 「開始ページの設定」の拡張機能を使用リストで使用可能なオプションを選択します。

  3. 「OK」をクリックします。

次回、アプリケーションを実行すると、IDE_config.xml で指定した ID で特定されるハンドラーが呼び出されます。プロジェクトまたは CFM に関連する情報が表示されます。

<cfheader name="Content-Type" value="text/xml"> 
<cfoutput> 
<startpage_response> 
<url>Any URL</url> 
</startpage_response> 
</cfoutput>

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー