@VEEvent

targetWidget プロパティーを使用する Rich UI ウィジェットを作成する場合 (または、外部型ウィジェットを作成する場合) に、その他の場合には定義されないイベント・タイプを宣言できます。 この方法により、一連の作業を定義するということについて、業務開発者の考えを 整理させることができます。開発者は、「イベント」ビューでイベント・ハンドラーを割り当てることも できます。

次の例は、カスタマイズされたボタン (MyButton) を使用して います。このボタンは @VEEvent プロパティーを使用しています。この例をご使用のワークスペース で試すときは、EGL デベロッパーが EGL エディターを使用するときに、MyButton 型のボタンの作成と、新しく定義されたイベント (onPreClick および onPostClick) に対するイベント・ハンドラーの割り当てを目的とすることができるようになったことに注目してください。

次に MyButton 型のボタンにアクセスするハンドラーを示します。
package pkg;

import com.ibm.egl.rui.widgets.Button; 

handler MyHandler type RUIhandler {initialUI = [ someButton ]}
		
	  someButton MyButton{text = "fresh", 
	                      onPreClick ::= respondToPreClick, 
	                      onClick ::= respondToClick, 
	                      onPostClick ::= respondToPostClick};
		
   function respondToPreClick(e Event in)
      sysLib.writeStdout("in pre"); 
   end
	
   function respondToClick(e Event in) 
      sysLib.writeStdout("in click");
   end
	
   function respondToPostClick(e Event in) 
      sysLib.writeStdout("in post");
   end	
		
end
以下に、MyButton の定義を示します。
package pkg;

import com.ibm.egl.rui.widgets.Button;
handler MyButton type RUIWidget {

   targetWidget = internalButton, 
   @VEWidget{ 
		   category = "New EGL Widgets",
		   template = "pkg.myButton{ text=¥"myButton¥" }"}
   }
	
   text string {@EGLProperty{setMethod = setText, 
                             getMethod = getText}, 
                @VEProperty{}};

   internalButton Button{onClick ::= respondToClick};

   onPreClick EventHandler[] {@VEEvent{}};
   onClick EventHandler[] {@VEEvent{}}; 
   onPostClick EventHandler[] {@VEEvent{}};	

   private function setText(text String in)
		   internalButton.text = text;
   end

   private function getText() returns (String)
		   return ( internalButton.text );
   end
   
   private function respondToClick(e Event in)

      preSize int = onPreClick.getSize();
      clickSize int = onClick.getSize();
      postSize int = onPostClick.getSize();	 
   
      for (i int from 1 to preSize by 1)
	        OnPreClick[i](e);
      end
	   
      for (i int from 1 to clickSize by 1)
	        OnClick[i](e);		  	
      end
	   
      for (i int from 1 to postSize by 1)
         OnPostClick[i](e);		
      end
   end
end

@VEEvent に対する変更は、 パレットおよびファイルを更新した場合のみ EGL エディターのファイルで使用可能です。パレットを更新するには、「設計」サーフェスの「パレットの更新」を クリックします。『「設計」サーフェスでのツールの使用』を参照してください。ファイルを更新するには、「プレビュー」タブで「Web ページの更新」ツールをクリックします。『EGL エディターでの Web アプリケーションの実行』を参照してください。


フィードバック