このトピックでは、選択オブジェクト・インタラクターおよびリスナーをインストールするための JViews JSF コードを示します。
または、値変更イベント・リスナーを作成するための Java™
コードも示します。
JViews Diagrammer
ビューで SDM ノードを選択するためには、ダイアグラム・コンポーネント・ビューで選択オブジェクト・インタラクターをインストールする必要があります。
インタラクターの
value
プロパティーは、クリックされた IlvSDMNode オブジェクトを保持します。
したがって、valueChangeListener を登録して選択イベントを処理することができます。
選択ノードまたはリンク・インタラクターおよびリスナーのインストール
<jvdf:nodeOrLinkSelectInteractor id="objSelect" valueChangeListener="#{diagrammerBean.onSelectNode}" invocationContext="JSF_CONTEXT"/> <jvdf:diagrammerView id="diagrammer" interactorId="objSelect" [...] />
メモ
JSF_CONTEXT
はデフォルト値であるため、invocationContext
属性が省略された可能性があります。
値変更イベントの Java コード
値変更イベント・リスナーの Java コードは次のとおりです。
public void onSelectNode(ValueChangeEvent event) { IlvSDMNode node = (IlvSDMNode) event.getNewValue(); if (node != null) { //The source of the event is the interactor IlvFacesNodeOrLinkSelectInteractor source = (IlvFacesNodeOrLinkSelectInteractor)valueChangeEvent.getSource(); //Retrieve the JSF view connected to the interactor IlvFacesDiagrammerView jsfDiagrammer = (IlvFacesDiagrammerView)source.getView(); try { //Retrieve the IlvDiagrammer wrapped by the JSF component. IlvDiagrammer diagrammer = jsfDiagrammer.getDiagrammer(); //Select the clicked object diagrammer.deselectAll(); diagrammer.setSelected(node, true); } catch (Exception e) { e.printStackTrace(); } } }
JViews Framework レベル
JViews Framework レベルのビューでグラフィック・オブジェクトを選択するためには、そのビューで選択オブジェクト・インタラクターをインストールする必要があります。
インタラクターの
value
プロパティーは、クリックされた IlvGraphic オブジェクトを保持します。
したがって、valueChangeListener
を登録して選択イベントを処理することができます。
選択オブジェクト・インタラクターおよびリスナーのインストール
<jvf:objectSelectInteractor id="objSelect" valueChangeListener="#{frameworkBean.selectObject}" invocationContext="JSF_CONTEXT"/> <jvf:view id="view" interactorId="objSelect" [...] />
メモ
JSF_CONTEXT
はデフォルト値であるため、invocationContext
属性が省略された可能性があります。
値変更イベントの Java コード
値変更イベント・リスナーの Java コードは次のとおりです。
public void selectObject(ValueChangeEvent event) { Object value = event.getNewValue(); if (value != null && value instanceof IlvGraphic) { //The source of the event is the interactor IlvFacesObjectSelectInteractor source = (IlvFacesObjectSelectInteractor)valueChangeEvent.getSource(); //Retrieve the JSF view connected to the interactor IlvFacesView jsfView = (IlvFacesView)source.getView(); //Retrieve the IlvManagerView wrapped by the JSF component. IlvManagerView managerView = jsfView.getView(); //Select the clicked object IlvGraphic g = (IlvGraphic) value; managerView.getManager().deSelectAll(false); managerView.getManager().setSelected(g, true, false); } }
このアプローチの使用に関しては次のことに注意してください。
- JavaServer™ Faces ライフサイクルでメソッドが呼び出されるため、他の JSF コンポーネントとのインタラクションが行われることがあります。
- フォームが送信されるため、完全なページが再ロードされます。