Java Desktop System Configuration Manager Release 1.1 開発者ガイド

アクションハンドラ

アクションハンドラは、イベントが発生するときにユーザー定義のアクションを実行するために使用されます。その時点で、使用可能なアクションハンドラは XML ハンドラ 1 つだけです。XML ハンドラはクライアント側のブラウザで JavaScript コードを生成します。

XML ハンドラを使用すると、まだテンプレートに含まれていない StarSuite/ OpenOffice.org 「プロキシ」 ダイアログの機能を実装することもできます。「プロキシサーバー」オプションに「なし」の値を選択すると、編集フィールドが無効になります。

次のテンプレートの注釈領域は、「プロキシサーバー」オプションが「手動」か「なし」に設定されている場合に、編集フィールドを有効または無効にするために、元の「Hello, world!」に加える必要のある変更を示しています。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE apt:template SYSTEM "policytemplate.dtd">
<apt:template>
  <category apt:name="StarSuite" apt:label="StarSuite" >
    <category apt:name="Internet" apt:label="インターネット">
      <page apt:name="Proxy" apt:label="プロキシ">
        <section apt:name="Settings" apt:label="設定">
          <property apt:name="ProxyServer" apt:label="プロキシサーバー"
                    apt:dataPath="org.openoffice.Inet/Settings/ooInetProxyType"
                    oor:type="xs:int"
           <!-- The following line should be added to original "Hello, world!" template -->
                    apt:xmlHandler="switchState">
            <visual apt:type="radioButtons"/>
            <constraints>
              <enumeration oor:value="0" apt:label="なし"/>
              <enumeration oor:value="2" apt:label="手動"/>
            </constraints>
          </property>
          <property apt:name="HTTPProxy" apt:label="Http プロキシ"
                    apt:dataPath="org.openoffice.Inet/Settings/ooInetHTTPProxyName"
                    oor:type="xs:string"/>
          <property apt:name="HTTPPort" apt:label="Http ポート"
                    apt:dataPath="org.openoffice.Inet/Settings/ooInetHTTPProxyPort"
                    oor:type="xs:int"/>
          <property apt:name="FTPProxy" apt:label="Ftp プロキシ"
                    apt:dataPath="org.openoffice.Inet/Settings/ooInetFTPProxyName"
                    oor:type="xs:string"/>
          <property apt:name="FTPPort" apt:label="Ftp ポート"
                    apt:dataPath="org.openoffice.Inet/Settings/ooInetFTPProxyPort"
                    oor:type="xs:int"/>
          <property apt:name="NoProxyFor" apt:label="プロキシなし"
                    apt:dataPath="org.openoffice.Inet/Settings/ooInetNoProxy"
                    oor:type="xs:string"/>
        </section> 
<!-- Beginning of section to be added to original "Hello, world!" template -->
        <xmlHandler apt:name="switchState"> 
          <event apt:type="onChange" />
          <action>
            <choose>
              <when apt:test="ProxyServer.value=0">
                <command>HTTPProxy.enabled=false</command>
                <command>HTTPPort.enabled=false</command>
                <command>FTPProxy.enabled=false</command>
                <command>FTPPort.enabled=false</command>
                <command>NoProxyFor.enabled=false</command>
              </when>
              <otherwise>
                <command>HTTPProxy.enabled=true</command>
                <command>HTTPPort.enabled=true</command>
                <command>FTPProxy.enabled=true</command>
                <command>FTPPort.enabled=true</command>
                <command>NoProxyFor.enabled=true</command>
              </otherwise>
            </choose>
          </action>
        </xmlHandler> 
<!-- End of section to be added -->      
      </page>
    </category>
  </category>
</apt:template>

apt:xmlHandler 属性をプロパティ ProxyServer に追加すると、同じ名前 (ここでは「switchState」) の xmlHandler 要素が そのプロパティに関連付けられます。

アクションハンドラはイベントによってトリガされます。アクションハンドラの対象となるイベントは、イベント要素の apt:type 属性で定義します。この時点で使用できるイベントは、onChange イベントだけです。このイベントは、ユーザーがプロパティの新しいデータを入力したときに発行されます。前の例では、ProxyServer プロパティの値が変わったときに XML ハンドラをトリガするためにイベントが使用されています。

アクション要素には、イベント要素で指定されているイベントが発生したときに実行されるアクションが含まれています。前の例で、最初のアクションは ProxyServer プロパティの値をチェックし、それに応じてほかの編集フィールドの状態を変更することです。これには、choosewhen、および otherwise 要素を使用します。ProxyServer プロパティを「なし」に設定した場合は、すべての編集フィールドが無効になります。ProxyServer プロパティを「手動」に設定した場合は、編集フィールドが有効になります。