ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Mobile Application Frameworkでのモバイル・アプリケーションの開発
2.0
E56274-01
  目次へ移動
目次

前
 
次
 

12 カスタムMAF AMX UIコンポーネントの作成

この章では、カスタムMAF AMX UIコンポーネントを作成し、それらを開発環境の一部として指定する方法について説明します。

この章には次の項が含まれます:

12.1 カスタムUIコンポーネントの作成の概要

MAFによって提供されるJavaScriptとAPIの組合せを使用して、完全に機能する新しいインタラクティブなUIコンポーネントを作成し、それらをタグ・ライブラリに追加して、MAF AMXアプリケーション機能で使用できます。

12.2 MAF APIを使用したカスタム・コンポーネントの作成

MAFでは、カスタム・コンポーネントの作成用に次のAPIが提供されています。

12.2.1 静的APIの使用方法

表12-1に、カスタムUIコンポーネントの作成に使用できる静的APIを示します。

表12-1 静的API

戻り型 関数名 パラメータ 説明

Function

adf.mf.api.amx.TypeHandler.register

String namespaceUrl

String tagName

adf.mf.api.amx.TypeHandler precreatedClass

タグの名前空間および名前を指定してTypeHandlerクラスを登録します。

プロトタイプ関数を追加できるように、登録されているadf.mf.api.amx.TypeHandlerサブクラスを返します。

precreatedClassはオプションですが、adf.mf.api.amx.TypeHandlerから継承するクラスを最初に作成する場合に使用できます。

void

adf.mf.api.amx.addBubbleEventListener

Node domNode

String eventType

Function listener

Object eventData

バブル・イベント・リスナー(tap、taphold、keydown、touchstart、touchmove、touchend、focus、blur、resizeなど)を登録します。

Webブラウザが、すべてのDOMノードのすべてのイベント・タイプをサポートしているわけではないことに注意してください(詳細は、ブラウザのドキュメントを参照)。

eventDataはオプションで、リスナー関数に使用できる追加データとして機能します。

void

adf.mf.api.amx.removeBubbleEventListener

Node domNode

String eventType

Function listener

adf.mf.api.amx.addBubbleEventListenerで追加されたバブル・イベント・リスナーを登録解除します。

メタ・イベントtapおよびtapholdを削除すると、指定されたリスナーだけが削除されるのではなく、すべてのtouchstartおよびtouchendリスナー(他のメタ・イベントのこれらのリスナーも含む)が要素から削除されることに注意してください。

void

adf.mf.api.amx.addDragListener

Node domNode

Object payload

Object eventData

要素に対して、MAF AMXドラッグ・イベントのトリガーを許可します。

Object payloadでは、3つのメンバー関数(startdragend)を定義します。各関数の最初のパラメータはDOMイベントで、2番目のパラメータは次のメンバーが含まれるdragExtra Objectです。

  • eventSource: DOMイベント・ソース。

  • pageX: イベントのx座標。

  • pageY: イベントのy座標。

  • startPageX: 元のpageX

  • startPageY: 元のpageY

  • deltaPageX: pageXの変更。

  • deltaPageY: pageYの変更。

  • originalAngle: 定義されている場合は、ドラッグの元の角度(度)で、0度は東、90は北、-90は南、180は西です。

次の変更可能なメンバー・フラグがあります。

  • preventDefault

  • stopPropagation

eventDataはオプションで、リスナー関数に使用できる追加データとして機能します。

void

adf.mf.api.amx.removeDomNode

Node domNode

DOMノードおよびその子を削除しますが、その前に、adf.mf.api.amx.addBubbleEventListenerで追加されたイベント・リスナーを削除します。

void

adf.mf.api.amx.emptyHtmlElement

Node domNode

子DOMノードを削除し、それらの各子ノードでadf.mf.api.amx.removeDomNodeをコールすることで、HTML要素を空にします。

void

adf.mf.api.amx.processAmxEvent

adf.mf.api.amx.AmxNode amxNode

String amxEventType

String attributeValueName

String newValue

AmxEvent amxEvent

Function finishedCallback

AmxEventを処理します。

attributeValueNameが定義されている場合は値を変更し、適切なsetPropertyListenerおよびactionListenerサブタグを処理し、次に[amxEventType]Listener属性を処理します。終了したコールバックが指定されている場合は、イベントが処理された後に呼び出されます。

void

adf.mf.api.amx.acceptEvent

なし

adf.mf.api.amx.processAmxEventに渡す必要がある可能性があるすべてのものを準備しなくても済むように、この関数の呼出しを続行しても安全であるかどうかを判断します(たとえば、ページ遷移の途中や、デザインタイム・プレビューなどの環境の場合)。

void

adf.mf.api.amx.invokeEl

String expression

Array<String> params

String returnType

Array<String> paramTypes

Function successCallback

Function failureCallback

ELメソッドを呼び出す点でadf.mf.el.invoke()に類似しており、デザインタイム・プレビューなどの環境では実行を控える点が異なるユーティリティを表します。

void

adf.mf.api.amx.enableAmxEvent

adf.mf.api.amx.AmxNode amxNode

Node domNode

String eventType

DOMノードに対して、amx:showPopupBehavioramx:setPropertyListenerなどのカスタムMAF AMXイベント(tapHoldswipeなど)のトリガーを許可します。

void

adf.mf.api.amx.doNavigation

String outcome

指定された結果へのナビゲーションを実行することをコントローラに指示します。

void

adf.mf.api.amx.validate

Node domNode

Function successCallback

不十分なバリデータ(必須またはamx:validationBehavior)がある場合、ナビゲーションなどの操作を阻止します。

続行が許可されると、successCallbackが呼び出されます。

void

adf.mf.api.amx.showLoadingIndicator

Number failSafeDuration

Function failSafeClientHandler

ビジー・インジケータを示します。

パラメータは次のとおりです。

  • failSafeDuration: MAFがローディング・インジケータの表示と非表示の間に待機するおおよその時間(ミリ秒を表す負でない整数)(他のトリガーがまだインジケータを表示していないと想定した場合)。このパラメータが指定されていないか、またはnullに設定されている場合、MAFは10000 (10秒)の値を使用します。

  • failSafeClientHandler: failSafeDurationに達したときに呼び出されるオプションのJavaScript関数。この関数を使用して、続行方法を決定できます。この関数は、次のいずれかの値で定義されているStringを返す必要があります。

    - hide: デフォルトのフェイルセーフのようにインジケータを非表示にします。

    - repeat: 関数を再度呼び出せるように新たな期間についてタイマーを再起動します。

    - freeze: インジケータを稼働させたまま無期限に待機させ、ページは再起動されるまでフリーズ状態で停止します。

インジケータが必要以上に表示されるのを回避するには、非表示にします。

void

adf.mf.api.amx.hideLoadingIndicator

なし

ローディング・インジケータの1つのインスタンスを非表示にします。

Object

adf.mf.api.amx.createIterator

Object dataItems

3ノード・イテレータ(コレクション・モデル)に対するオブジェクトのJavaScript配列またはイテレータをサポートするイテレータを作成します。

nexthasNextおよびisTreeNodeIterator関数でイテレータObjectを返しますが、ここで、nextは、使用可能なオブジェクトがそれ以上ない場合、undefinedを返します。

void

adf.mf.api.amx.bulkLoadProviders

Object treeNodeIterator

Number startingPoint

Number maximumNumberOfRowsToLoad

Function successCallback

Function failCallback

一連のデータ・プロバイダをバルクロードして、これらがキャッシュされてローカルでアクセスできるようにします。

String

adf.mf.api.amx.buildRelativePath

String url

現在のMAF AMXページに対して相対的であると想定して、指定されたリソースに基づく相対パスを作成します。リソース上にプロトコルがある場合は、絶対パスであると想定され、変更されません。

void

adf.mf.api.amx.markNodeForUpdate

adf.mf.api.amx.AmxNodeUpdateArguments args

AmxNodeに対する状態変更(AmxNode階層がそのノード以下で更新される必要がある)をMAFに通知する、TypeHandlerインスタンスの関数。

カスタムcreateChildrenNodesメソッドがTypeHandlerに存在する場合は、これらのAmxNodeインスタンス対して再度コールされます。これにより、子にスタンプ設定するAmxNodeインスタンスは、ユーザー変更による新しいスタンプを追加できます。refreshメソッドは、AmxNodeがレンダリングする準備ができた場合、指定されたプロパティを使用してAmxNodeでコールされます。AmxNodeがレンダリングする準備ができていない場合、MAFはELが解決されるのを待機し、すべてのデータが使用可能になった後にrefreshメソッドがコールされます。



注意:

adf.mf.elパッケージのその他のパブリックAPIは、ロギング、変換およびデータ・チャネルに使用できます。


12.2.2 AmxEventクラスの使用方法

表12-2に、カスタムUIコンポーネントの作成時に使用できるAMXEventクラスを示します。

表12-2 AMXEventクラス

クラス名 パラメータ 説明

adf.mf.api.amx.ActionEvent

なし

結果ベースのナビゲーションをトリガーするイベント。

Oracle Fusion Middleware Oracle Mobile Application Framework Java APIリファレンスoracle.adfmf.amx.event.ActionEventも参照してください。

adf.mf.api.amx.MoveEvent

Object rowKeyMoved

Object rowKeyInsertedBefore

指定された行が移動されたことを通知するイベント。移動された行のキー、および移動済行がその前に挿入された行のキーが含まれます。

Oracle Fusion Middleware Oracle Mobile Application Framework Java APIリファレンスoracle.adfmf.amx.event.MoveEventも参照してください。

adf.mf.api.amx.SelectionEvent

Object oldRowKey

Array<Object> selectedRowKeys

コンポーネントの選択変更のイベント。

Oracle Fusion Middleware Oracle Mobile Application Framework Java APIリファレンスoracle.adfmf.amx.event.SelectionEventも参照してください。

adf.mf.api.amx.ValueChangeEvent

Object oldValue

Object newValue

コンポーネントの値変更のイベント。

Oracle Fusion Middleware Oracle Mobile Application Framework Java APIリファレンスoracle.adfmf.amx.event.ValueChangeEventも参照してください。


12.2.3 TypeHandlerの使用方法

表12-3に、カスタムUIコンポーネントの作成に使用できるTypeHandler APIを示します。

表12-3 TypeHandler API

戻り型 関数名 パラメータ 説明

HTMLElement

render

adf.mf.api.amx.AmxNode amxNode

String id

初期DOM構造を作成し、その構造のルート要素を返します。

このメンバー関数は必須であり、定義されている必要があります。

void

init

HTMLElement rootElement

adf.mf.api.amx.AmxNode amxNode

このコンポーネントで作成される一連のコンポーネントに属するすべてのcreate関数が呼び出された後に呼び出されるハンドラを表します。

void

postDisplay

HTMLElement rootElement

adf.mf.api.amx.AmxNode amxNode

このコンポーネントで作成される一連のコンポーネントに属するすべてのinit関数が呼び出された後に呼び出されるハンドラを表します。

Boolean

createChildrenNodes

adf.mf.api.amx.AmxNode amxNode

処理する子AmxNodeを選択して追加します。いずれかの子が示されている場合、この関数を使用すると、他の子が処理されなくなることに注意してください。

MAFがカスタム実装ではなく子ノードを作成する場合は、falseを返す必要があります。

この関数はオプションです。

adf.mf.api.amx.AmxNodeChangeResult

updateChildren

adf.mf.api.amx.AmxNode amxNode

adf.mf.api.amx.AmxAttributeChange attributeChanges

次のいずれかのハンドラを表します。

  • 古い子をすべて削除し、新しい子を作成してAmxNodeに追加します。

  • 戻り値を介して、実行する必要があるadf.mf.api.amx.AmxNodeChangeResultアクションを宣言します。

この関数はオプションです。

adf.mf.api.amx.AmxNodeChangeResult

getDescendentChangeAction

adf.mf.api.amx.AmxNode amxNode

adf.mf.api.amx.AmxDescendentChanges descendentChanges

タイプ・ハンドラに対して、子孫AmxNodeインスタンスへの変更処理のカスタマイズを許可します。

void

refresh

adf.mf.api.amx.AmxAttributeChange attributeChanges

adf.mf.api.amx.AmxDescendentChanges descendentChanges

タイプ・ハンドラに対して、変更に応答したHTMLの選択的リフレッシュを許可します。このメソッドは、updateChildrenメソッドの後にコールされます。

attributeChangesは変更された属性を定義します。descendentChangesnullでない場合は、リフレッシュする必要があるすべての子孫ノードに対する変更を定義します。

Boolean

isFlattenable

なし

AmxNodeがフラット化可能であるかどうかを宣言します。フラット化されたAmxNodeにはレンダリング関連の動作がない可能性がある(フラット化されたAmxNodeのタイプ・ハンドラは子ノードの作成とアクセスのみを制御でき、レンダリングには影響を与えない)ことに注意してください。

Boolean

visit

adf.mf.api.amx.VisitContext visitContext

Function visitCallback

このAmxNodeから始まるAmxNodeツリー・アクセスを処理します。

アクセスでパラメータvisitContextおよびAmxNodeを使用する場合に呼び出すvisitCallback関数。アクセスが完了し、続行する必要がないかどうかを返します。

Boolean

visitChildren

adf.mf.api.amx.AmxNode amxNode

adf.mf.api.amx.VisitContext visitContext

Function visitCallback

このAmxNodeの子から始まるAmxNodeツリー・アクセスを処理します。

アクセスでパラメータvisitContextおよびAmxNodeを使用する場合に呼び出すvisitCallback関数。アクセスが完了し、続行する必要がないかどうかを返します。

void

preDestroy

HTMLElement rootElement

adf.mf.api.amx.AmxNode amxNode

現在のビューが破棄される直前、つまり新しいビューに移動しようとするときにすべてを処理します。通常は、スクロール位置などのクライアント状態を保存するために使用されます(adf.mf.api.amx.setClientStateを参照)。

void

destroy

HTMLElement rootElement

adf.mf.api.amx.AmxNode amxNode

新しいビューが表示され、古いビューが削除された後にすべてを処理します。


12.2.4 AmxNodeの使用方法

表12-4に、カスタムUIコンポーネントの作成に使用できるAmxNode APIを示します。

表12-4 AmxNode API

文字列 関数名 パラメータ 説明

String

getId

なし

このAmxNodeの一意の識別子を取得します。この値はルートDOM要素のIDに寄与します。

adf.mf.api.amx.AmxTag

getTag

なし

このAmxNodeを作成したAmxTagを取得します。

adf.mf.api.amx.TypeHandler

getTypeHandler

なし

このAmxNodeに関連付けられたTypeHandlerオブジェクトを取得します。

void

setClientState

Object payloadJsonObject

指定されたAmxNode IDのクライアント状態を格納または置換します。

タイプ・ハンドラは、状態変更が発生するたびにこの関数をコールする必要があります(たとえば、ある状態をキャッシュしておき、ユーザーが新しいページに移動してから戻ってきたときに、スクロール位置のように復元できるようにする必要があります)。つまり、状態変更の発生を常に検出できるとはかぎらないため、ビューが破棄される直前にコンポーネントの状態を更新する必要がある場合があります。考慮する必要があるシナリオとして次の2つが考えられます。

  1. refresh: (同じビュー内の)DOM構造部分の再描画用。

  2. preDestroy: 新しいビューに移動し、後で戻ったときのため。

payloadJsonObjectは、このビュー・インスタンスのライフタイム用に格納するクライアント状態データです。

Object

getClientState

なし

このビュー・インスタンス時にsetClientState関数を介して以前に格納されたpayloadJsonObjectを取得します(取得できない場合はundefined)。

void

setVolatileState

Object payloadJsonObject

指定されたAmxNode IDのクライアント状態を格納または置換します。タイプ・ハンドラは、揮発状態変更が発生するたびに、この関数をコールする必要があります(たとえば、新しいMAF AMXページへの移動時に忘れられたが、コンポーネントの再描画時に備えて保持しておく必要があるものなどです)。

payloadJsonObjectは、ナビゲーションが発生するまで格納する揮発状態データです。

Object

getVolatileState

なし

最後のナビゲーション以降、setVolatileState関数を介して以前に格納されたpayloadJsonObjectを取得します(取得できない場合はundefined)。

Object

getConverter

なし

適用可能な場合、このAmxNodeのコンバータを取得します。

void

setConverter

Object converter

このAmxNodeのコンバータを設定します。

String

storeModifyableEl

String nameOfTheAttribute

属性に関して、EL値をモデルに設定するために使用できるEL式を作成して格納します。

この値は状況非依存で、値を設定するためにいつでも使用できます。一般的な用途は、ユーザーとの対話に基づいて値を設定することです。

この関数は、タイプ・ハンドラによってコールされる場合があります。

サブジェクト属性がEL値にバインドされていない場合は、nullを返します。

Object

getStampKey

なし

AmxNodeのスタンプ・キーを取得します。スタンプ・キーは、反復コンテナの内部で生成されたAmxNodeインスタンスを特定します。

これは、親AmxNodeによって提供されます。スタンプ・キーを使用するタグの例として、amx:iteratorタグがあります。

AmxNodeがスタンプ設定されていない場合は、nullを返します。

Array<String>

getDefinedAttributeNames

なし

このノードに定義された属性名のリストを取得します。

Object

getAttribute

String name

指定された名前の属性の属性値を取得します。

戻り値はnullである可能性があります。

属性が設定されていない、またはまだロードされていない場合は、undefinedを返します。

void

setAttributeResolvedValue

String name

Object value

タイプ・ハンドラまたはMAFが属性の属性値をAmxNodeに格納するために使用されます。

この関数では、モデルは更新されません。

void

setAttribute

String name

String value

モデルの属性の値を設定します。

この値は、EL値を更新するためにJava側に送信されます。AmxNodeの値はこのコールでは更新されません。かわりに、データ変更イベントがAmxNodeを更新することが想定されます。

Boolean

isAttributeDefined

String name

属性がユーザーによって定義されているかどうかをチェックします。

adf.mf.api.amx.AmxNode

getParent

なし

最上位の場合は、親AmxNodeまたはnullを取得します。

void

addChild

adf.mf.api.amx.AmxNode child

String facetName

このAmxNodeに子AmxNodeを追加します。

子がファセットに属していない場合、facetNamenullになります。

Boolean

removeChild

adf.mf.api.amx.AmxNode child

このAmxNodeから子AmxNodeを削除します。

子は階層から削除されますが、そのDOMは削除されないことに注意してください。DOMの削除は、コール元の責任です。

これにより、タイプ・ハンドラは、DOMの置換時にアニメーションやその他の遷移を処理できます。

子が検出されて削除されたかどうかを返します。

Boolean

replaceChild

adf.mf.api.amx.AmxNode oldChild,

adf.mf.api.amx.AmxNode newChild

既存の子を別の子に置換します。

古いものが検出されて置換されたかどうかを返します。

Array<adf.mf.api.amx.AmxNode>

getChildren

String facetName

Object stampKey

AmxNodesを取得します。

これら2つのパラメータはオプションです。facetNameには、非ファセットの子を取得するためにnullを指定できます。

子が存在しないか、または指定された修飾子の子が存在しない場合は、空の配列を返します。

Map<String, Array<adf.mf.api.amx.AmxNode>>

getFacets

Object stampKey

AmxNodeのすべてのファセットを取得します。

stampKeyはオプションで、指定された場合は、指定されたスタンプ・キーのファセットAmxNodeインスタンスを取得します。

Boolean

visit

adf.mf.api.amx.VisitContext visitContext

Function visitCallback

このAmxNodeから開始するツリー・アクセスを実行します。

visitCallback関数は、引数としてvisitContextおよびAmxNodeを受け入れる必要があります。

アクセスが完了し、続行する必要がないかどうかを返します。

Boolean

visitChildren

adf.mf.api.amx.VisitContext visitContext

Function visitCallback

このAmxNodeの子から開始するツリー・アクセスを実行します。

visitCallback関数は、引数としてvisitContextおよびAmxNodeを受け入れる必要があります。

アクセスが完了し、続行する必要がないかどうかを返します。

Boolean

visitStampedChildren

Object stampKey

Array<String> facetNamesToInclude

Function filterCallback

adf.mf.api.amx.VisitContext visitContext

Function visitCallback

カスタムvisitChildren関数内から子AmxNodeにアクセスするよう子にスタンプ設定するタイプ・ハンドラ用の便利な関数。

facetNamesToIncludeが空の場合、このスタンプのファセットは処理されません。facetNamesToIncludenullの場合、このスタンプのすべてのファセットが処理されます。

filterCallbacknullを指定できます。filterCallbackは、true (子の作成にタグを使用)またはfalse (タグが処理されない)のBooleanを返す必要があります。

visitCallbackは、引数としてvisitContextおよびAmxNodeを受け入れる必要があります。

アクセスが完了し、続行する必要がないかどうかを返します。

Array<adf.mf.api.amx.AmxNode>

getRenderedChildren

String facetName

Object stampKey

AmxNodeのレンダリングされた子を取得します。

facetNameは、レンダリングされた子の取得元となるファセットを示し、非ファセットの子の場合はnullになります。

stampKeyが指定されている場合は、指定されたスタンプ・キーの子AmxNodeインスタンスを取得します。

指定されたスタンプ・キーでレンダリングされる子を返します。フラット化できる(フラット化可能な)あらゆるコンポーネントをフラット化し、レンダリングされないコンポーネントは返しません。

Boolean

isFlattenable

なし

AmxNodeがフラット化可能であるかどうかを決定します。

フラット化されたAmxNodeにはレンダリング関連の動作が含まれていない可能性があること、つまり、フラット化されたAmxNodeのタイプ・ハンドラは子の作成およびアクセスのみを制御でき、レンダリングには影響しないことに注意してください。

adf.mf.api.amx.AmxNodeStates

getState

なし

AmxNodeの現在の状態を(adf.mf.api.amx.AmxNodeStatesの定数値として)取得します。

void

setState

state

AmxNodeadf.mf.api.amx.AmxNodeStates状態を移行します。MAFまたはAmxNodeのタイプ・ハンドラによってのみコールされる必要があります。

HTMLElement

render

なし

AmxNodeを返します。

レンダリングされたルート要素、またはnull (子がレンダリングされない場合、またはこのAmxNodeのタイプ・ハンドラがない場合)を返します。

Array<HTMLElement>

renderDescendants

String facetName

Object key

このAmxNodeのサブノードをレンダリングします(適用可能な場合、最も近い子孫にフラット化します)。

facetNamenullでない場合は、ファセットの子をレンダリングします。facetNameがnullの場合は、非ファセットの子がレンダリングされます。

オプションのキーが、そのスタンプ・キーの子AmxNodeインスタンスのレンダリングに使用されます。

subNodeのルート要素の配列を返します。

void

rerender

なし

AmxNodeをレンダリングします。

Boolean

isRendered

なし

AmxNodeの状態をチェックして、レンダリングする必要があるかどうかを確認します。

AmxNodeは、ABLE_TO_RENDER、RENDEREDまたはPARTIALLY_RENDERED状態である場合、レンダリング可能であるとみなされます。

void

refresh

adf.mf.api.amx.AmxAttributeChange attributeChanges

adf.mf.api.amx.AmxDescendentChanges descendentChanges

AmxNodeのDOMをリフレッシュします。

このメソッドは、updateChildrenメソッドの後にコールされ、変更に応答してタイプ・ハンドラのDOMを更新する必要があるタイプ・ハンドラによって実装される必要があります。

void

createStampedChildren

Object stampKey

Array<String> facetNamesToInclude

Function filterCallback

カスタムcreateChildrenNodes関数内から子AmxNodeインスタンスを作成するよう子にスタンプ設定するタイプ・ハンドラ用の便利な関数。

この関数では、任意のUIタグの子が作成されます。

facetNamesToIncludeが空の場合、このスタンプのファセットは処理されません。facetNamesToIncludenullの場合、すべてのファセットが処理されます。facetNamesToIncludenull値が配列内に含まれる場合、非ファセット・タグの子が作成されます。

filterCallbackは、作成された子をフィルタ処理するオプションの関数です。filterCallback関数は、AmxNodestampKey、子タグおよびファセット名(または、非ファセットの場合はnull)を設定して呼び出されます。filterCallback関数はbooleanを返す必要があります。trueの場合、タグを使用して子が作成され、falseの場合、タグは処理されません。


12.2.5 AmxTagの使用方法

表12-5に、カスタムUIコンポーネントの作成に使用できるAmxTag APIを示します。

表12-5

戻り型 関数名 パラメータ 説明

String

getNamespace

なし

タグのXML名前空間URIを取得します。

String

getNsPrefixedName

なし

(ローカルxmlns接頭辞ではなく)名前空間をその接頭辞として含むタグ名を返します。

これは、"http://xmlns.example.com/custom:custom"などの完全なXML名です。

String

getName

なし

タグ名を取得します。

これは、接頭辞がないローカルXMLタグ名です。

adf.mf.api.amx.AmxTag

getParent

なし

親タグ、またはnull (最上位タグである場合)を取得します。

String

getTextContent

なし

タグのテキスト・コンテンツを返します。

Array<adf.mf.api.amx.AmxTag>

findTags

String namespace

String tagName

指定された名前空間とタグ名を使用して、タグのタグ階層を再帰的に検索します。

一致した場合は現在のタグを返します。

Array<adf.mf.api.amx.AmxTag>

getChildren

String namespace

String tagName

タグの子を取得します。

子の名前空間およびタグ名のオプションのフィルタリングを提供します。名前空間がnullの場合は、すべての子が返されます。tagNamenullの場合、子はタグ名でフィルタリングされません。

Array<adf.mf.api.amx.AmxTag>

getChildrenFacetTags

なし

すべての子ファセット・タグを取得します。

この関数の目的は、AmxNodeプロセスの作成を支援することです。

adf.mf.api.amx.AmxTag

getChildFacetTag

String name

指定された名前のファセット・タグを取得します。

この関数の目的は、ファセットの存在によりタイプ・ハンドラの動作が変更される場合のコードを支援することです。

ファセットが見つからない場合はnullを返します。

Array<adf.mf.api.amx.AmxTag>

getChildrenUITags

なし

UIタグであるすべての子タグを取得します。

この関数の目的は、AmxNodeプロセスの作成を支援することです。

この関数では、ファセット・タグは返されません。

Array<String>

getAttributeNames

なし

タグで指定されている属性のすべての属性名を取得します。

Boolean

isAttributeElBound

String name

指定された属性が(静的値ではなく) EL式にバインドされているかどうかを決定します。

String

getAttribute

String name

指定された名前の属性の属性値(EL文字列である場合があります)を取得します。

属性が指定されていない場合はundefinedを返します。

Map<String, String>

getAttributes

なし

属性およびその値のキー/値ペア・マップを取得します。

Boolean

isUITag

なし

ノードがタイプ・ハンドラを持つUIタグであるかどうかを決定し、コンテンツをレンダリングします。

Object{name:string, children:Array<adf.mf.api.amx.AmxTag>}

getFacet

なし

このファセットの子のタグ、およびこのタグがファセット・タグである場合はファセットの名前を取得します。

これは、AmxNodeツリーを構築する場合に便利な関数です。

そのファセットの名前、およびファセットの子タグを持つオブジェクトを返します。タグがamx:facetタグでない場合は、nullを返します。

adf.mf.api.amx.AmxNode

buildAmxNode

adf.mf.api.amx.AmxNode parentNode,

Object stampKey

スタンプIDを設定してこのタグのAmxNodeの新しいインスタンスを作成します。

タグがファセット・タグである場合、タグは子タグのAmxNodeを作成します。

この関数では、AmxNodeは初期化されません。かわりに、初期化されていないAmxNode、または非UIタグの場合はnullを返します。

adf.mf.api.amx.TypeHandler

getTypeHandler

なし

このタグのタイプ・ハンドラを取得します。


12.2.6 VisitContextの使用方法

表12-6に、カスタムUIコンポーネントの作成時に使用できるVisitContext APIを示します。

表12-6 VisitContext API

戻り型 関数名 パラメータ 説明

Boolean

isVisitAll

なし

すべてのノードがアクセスされるかどうかを決定します。

Array<adf.mf.api.amx.AmxNode>

getNodesToWalk

なし

アクセス時に移動する必要があるノードを取得します。

このリストには、アクセスされる(コールバックが呼び出される)必要があるノードは必ずしも含まれていません。

Array<adf.mf.api.amx.AmxNode>

getNodesToVisit

なし

アクセスするノードのリストを取得します。

Array<adf.mf.api.amx.AmxNode>

getChildrenToWalk

adf.mf.api.amx.AmxNode parentAmxNode

指定された親AmxNodeから移動する必要がある子AmxNodeインスタンス(ある場合はファセットを含む)を決定します。

タイプ・ハンドラに対して、すべての子に移動するわけではない場合に、子への移動方法の最適化を許可します。

nullを返す場合があります。


12.2.7 AmxAttributeChangeの使用方法

表12-7に、カスタムUIコンポーネントの作成時に使用できるAmxAttributeChange APIを示します。

表12-7 AmxAttributeChange API

戻り型 関数名 パラメータ 説明

Array<String>

getChangedAttributeNames

なし

現在の変更時に影響を受けた属性の名前を取得します。

Boolean

isCollectionChange

String name

属性の変更がコレクション変更であるかどうかを決定します。

adf.mf.api.amx.AmxCollectionChange

getCollectionChange

String name

属性のコレクション・モデル変更情報を取得します。使用可能な変更オブジェクトがない場合はnullを返します。

String

getOldValue

String name

変更が行われる前に、属性の値を取得します。

Boolean

hasChanged

String name

指定された名前の属性が変更されたかどうかを決定します。

Number

getSize

なし

属性の変更数を取得します。


12.2.8 AmxDescendentChangesの使用方法

表12-8に、カスタムUIコンポーネントの作成時に使用できるAmxAttributeChange APIを示します。

表12-8 AmxDescendentChanges API

戻り型 関数名 パラメータ 説明

Array<adf.mf.api.amx.AmxNode>

getAffectedNodes

なし

レンダリング前の変更済の子孫AmxNodeインスタンスを取得します。

adf.mf.api.amx.AmxAttributeChange

getChanges

adf.mf.api.amx.AmxNode amxNode

指定されたAmxNodeの変更を取得します。

adf.mf.api.amx.AmxNodeStates

getPreviousNodeState

adf.mf.api.amx.AmxNode amxNode

変更が適用される前の子孫AmxNodeの状態を取得します。


12.2.9 AmxCollectionChangeの使用方法

表12-9に、カスタムUIコンポーネントの作成時に使用できるAmxCollectionChange APIを示します。

表12-9 AmxCollectionChange API

戻り型 関数名 パラメータ 説明

Boolean

isItemized

なし

コレクションに対する変更を項目化できるかどうか、つまりそのコレクションのキーと要素が特定されることで、TypeHandlerが最初からリスト全体を再レンダリングするのではなく、適切な項目だけを更新できるようにするかどうかを決定します。

Array<String>

getCreatedKeys

なし

作成されたキーの配列、または変更を項目化できない場合はnullを取得します。

Array<String>

getDeletedKeys

なし

削除されたキーの配列、または変更を項目化できない場合はnullを取得します。

Array<String>

getUpdatedKeys

なし

更新されたキーの配列、または変更を項目化できない場合はnullを取得します。

Array<String>

getDirtiedKeys

なし

ダーティにされたキーの配列、または変更を項目化できない場合はnullを取得します。


12.2.10 AmxNodeChangeResultの使用方法

表12-10に、カスタムUIコンポーネントの作成時に使用できるAmxNodeChangeResult APIを示します。

表12-10 AmxNodeChangeResult API

メンバー 説明

adf.mf.api.amx.AmxNodeChangeResult["NONE"]

レンダリング前の子孫AmxNodeでの属性変更に対してアクションを実行しません。

adf.mf.api.amx.AmxNodeChangeResult["REFRESH"]

属性およびその子AmxNodeインスタンスがタイプ・ハンドラによって更新済で、DOMはタイプ・ハンドラのrefresh関数によって更新されます。

adf.mf.api.amx.AmxNodeChangeResult["RERENDER"]

AmxNodeおよびその子AmxNodeインスタンスがタイプ・ハンドラによって更新済ですが、DOMは、AmxNode階層を変更する必要がないため、refresh関数がタイプ・ハンドラでコールされない場合にのみ再作成する必要があります。

adf.mf.api.amx.AmxNodeChangeResult["REPLACE"]

タイプ・ハンドラは変更を処理できません。DOMおよびAmxNode階層が再作成される必要があります。

この値は、タイプ・ハンドラのupdateChildrenメソッドからのみ返され、getDescendentChangeActionメソッドからは返されません。


12.2.11 AmxNodeStatesの使用方法

表12-11に、カスタムUIコンポーネントの作成時に使用できるAmxNodeStates APIを示します。

表12-11 AmxNodeStates API

メンバー 説明

adf.mf.api.amx.AmxNodeStates["INITIAL"]

初期状態。AmxNodeが作成されていますが、移入されていません。

adf.mf.api.amx.AmxNodeStates["WAITING_ON_EL_EVALUATION"]

レンダリングに必要なELベースの属性がまだ完全にロードされていません。

adf.mf.api.amx.AmxNodeStates["ABLE_TO_RENDER"]

EL属性がロードされていますが、AmxNodeはまだレンダリングされていません。

adf.mf.api.amx.AmxNodeStates["PARTIALLY_RENDERED"]

ELはまだ完全にロードされていませんが、AmxNodeはそれ自体を部分的にレンダリングしています(今後使用するために予約されています)。

adf.mf.api.amx.AmxNodeStates["RENDERED"]

AmxNodeは完全にレンダリングされています。

adf.mf.api.amx.AmxNodeStates["UNRENDERED"]

AmxNodeはレンダリングされません。


12.2.12 AmxNodeUpdateArgumentsの使用方法

表12-12に、カスタムUIコンポーネントの作成時に使用できるAmxNodeUpdateArguments APIを示します。

表12-12 AmxNodeUpdateArguments API

戻り型 関数名 パラメータ 説明

Array<adf.mf.api.amx.AmxNode>

getAffectedNodes

なし

影響を受けるAmxNodeインスタンスの配列を取得します。

Map<String,Boolean>

getAffectedAttributes

String amxNodeId

指定されたAmxNode IDの影響を受ける属性を表すオブジェクトを取得します。

Map<String,adf.mf.api.amx.AmxCollectionChange>

getCollectionChanges

String amxNodeId

指定されたAmxNodeおよびプロパティのコレクション変更を取得します。

返されるマップは属性名によってキー設定されます。

AmxNodeに変更がない場合はundefinedを返します。

void

setAffectedAttribute

adf.mf.api.amx.AmxNode amxNode

String attributeName

影響を受けたとしてAmxNodeの属性をマークします。

void

setCollectionChanges

String amxNodeId

String attributeName

adf.mf.api.amx.AmxCollectionChange collectionChanges

指定されたAmxNodeの属性のコレクション変更を設定します。


12.3 カスタム・コンポーネントの作成

JavaScriptおよびMAF APIを使用して、カスタムUIコンポーネントを作成できます。このコンポーネントのJavaScriptファイルは、アプリケーション機能レベル包含を使用して、プロジェクトに追加できます。カスタム・タグ・ライブラリを追加すると、タグ・ライブラリの「コンポーネント」ウィンドウのリストに入力され、このライブラリが選択された場合は、カスタム・コンポーネントが「コンポーネント」ウィンドウで使用可能になり、その属性が「プロパティ」ウィンドウに表示されます。

始める前に

第12.2項「MAF APIを使用したカスタム・コンポーネントの作成」で説明されているAPIについて理解しておいてください。

カスタム・コンポーネントを作成するには、次の手順を実行します。

  1. adf.mf.api.amx.TypeHandler.register API (表12-1「静的API」および例12-1「カスタム・コンポーネントのJavaScriptファイル」を参照)を使用して、タグ名前空間および1つ以上の一連のタイプ・ハンドラを登録するJavaScriptファイルを生成します。

  2. 各タイプ・ハンドラで、レンダリング・メンバー関数を実装します。

  3. オプションで、他の関数を実装します。

  4. 1つ以上のJavaScriptおよびCSSファイルをMAF AMXアプリケーション機能に添付します。たとえば、開発コンピュータ上のjdev_install/jdeveloper/jdev/extensions/oracle.maf/Samplesディレクトリ内のPublicSamples.zipファイルに配置されている、次のサンプル・アプリケーションを参照してください。

    • CompGalleryという名前のMAFサンプル・アプリケーションに含まれるcustom.jsおよびcustom.cssファイル。

    • WorkBetterサンプル・アプリケーションにはカスタム検索コンポーネントが含まれています。

    または、デザインタイム・パッケージ化を実行できます。

  5. いずれかのカスタム・コンポーネントを使用する各MAF AMXページで、view要素のxmlnsエントリを追加します。

    xmlns:custom="http://xmlns.example.com/custom"
    

例12-1は、カスタム・コンポーネントを宣言するJavaScriptファイルを示しています。

例12-1 カスタム・コンポーネントのJavaScriptファイル

(function() {
   // TypeHandler for custom "x" elements
   var x = adf.mf.api.amx.TypeHandler.register("http://xmlns.example.com/custom",
                                               "x");
   x.prototype.render = function(amxNode) {
      var rootElement = document.createElement("div");
      rootElement.appendChild(document.createTextNode("Hello World"));
      return rootElement;
   };

   // TypeHandler for custom "y" elements
   var y = adf.mf.api.amx.TypeHandler.register("http://xmlns.example.com/custom",
                                               "y");

   y.prototype.render = function(amxNode) {
      var rootElement = document.createElement("div");
      rootElement.appendChild(document.createTextNode("Goodbye World"));
      return rootElement;
   };

})();

カスタムUIコンポーネントの作成方法の例については、CompGalleryという名前のMAFサンプル・アプリケーションに含まれるcustom.amxcustomOther.amxexampleEvents.amxおよびexampleList.amxの各ファイルを参照してください。これらのサンプル・アプリケーションは、開発コンピュータ上のjdev_install/jdeveloper/jdev/extensions/oracle.maf/Samplesディレクトリ内のPublicSamples.zipファイル内にあります。