このトピックでは、ポップアップ処理を取り上げて、そのプログラミング方法を説明します。
Confirmation Dialog
Confirmation DialogはWDJ標準ライブラリに組み込まれていますので、そのまま利用可能です。
プログラムの構造は主にいかのようになります。
- Yes, Noに該当するevent handler処理を記述しておく
- Confirmation Dialogを作成
- Yes, Noに該当するevent handlerを定義す
- Confirmation Dialogを表示
サンプルソースは以下です。
// 追加されたイベント(Yesボタンがクリックされたときの動き)
public void Yes(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
{
//@@begin Yes(ServerEvent)
logger.infoT("Yes button is clicked.");
//@@end
}
//@@begin createConfDialogWindow()
IWDWindowManager winMan = wdComponentAPI.getWindowManager();
IWDControllerInfo viewCtrlInfo = wdComponentAPI.getComponentInfo().
findInViews("WelcomeView").getViewController();
IWDEventHandlerInfo evtHndlr = viewCtrlInfo.findInEventHandlers("Yes");
IWDConfirmationDialog confDialog = winMan.createConfirmationWindow(
"本当にいいですか?", evtHndlr, "はい");
evtHndlr = viewCtrlInfo.findInEventHandlers("No");
confDialog.addChoice(evtHndlr, "いいえ");
confDialog.show();
//@@end
画面付きモーダルダイアログ
画面付きポップアップウィンドウとはWDJ部品の中でウィンドウをポップアップとして表示することを指します。
ポップアップウィンドウの制御はコンポーネントコントローラーまたはカスタムコントローラーのに定義すします。
サンプルソースは以下です。
public void openPopup( ) {
//@@begin openPopup()
if (popup == null) {
// ウィンドウ取得
IWDWindowInfo windowInfo = wdComponentAPI.getComponentInfo().findInWindows("PopupWin");
// モダルウィンドウ生成
popup = wdComponentAPI.getWindowManager().createModalWindow(windowInfo);
}
// ポップアップウィンドウを開く
popup.show();
//@@end
}
...
public void closePopup( ) {
//@@begin closePopup()
// ポップアップウィンドウを閉じる
popup.hide();
//@@end
}
...
//@@begin others
// ローカルウィンドウオブジェクト
private IWDWindow popup;
//@@end 別画面表示
別画面表示はURLを元に別ブラウザーを開くことを指します。
他のWDJアプリケーションを起動する「IWDDeployableObject」と「WDURLGenerator」を利用して実装します。
サンプルソースは以下です。
// アプリケーションからIWDDeployableObjectを取得
IWDDeployableObject dObject = wdComponentAPI.getApplication().getDeployableObjectPart().getDeployableObject();
// 実行するWDJアプリケーション名を指定
String url = WDURLGenerator.getApplicationURL(dObject.getApplication("Contract00601App"));
// 外部ブラウザーで開く
IWDWindow window = wdComponentAPI.getWindowManager().createNonModalExternalWindow(url);
window.show(); 他のWEBアプリケーション起動
同一サーバで存在するServlet等の場合、相対パースでURLを指定し、対象URLにPOST/GETでパラメータを渡す必要がある場合は「WDURLGenerator」を利用してパラメータを渡します。
サンプルソースは以下です。
// Mapでパラメータ値設定
Map<String, Object> urlParameters = new HashMap<String, Object>();
urlParamaters.put("id","1234");
// パラメータ生成、文字コードがnullの場合、UTF-8変換
String query = WDURLGenerator.getQueryString(urlParamaters, "Shift-JIS");
// 外部ブラウザーで開く, URL, パラメータ, POST(true)/GET(false)をパラメータ設定
// 想定パースは「/【DCのVendor名】~【DC名】/実行対象」で構成され、DC名に「/」が存在する場合、「~」に変換する。
IWDWindow window = wdComponentAPI.getWindowManager().createNonModalExternalWindow(
"/jp.co.asahikasei~yvw~jee~wm_excel_0001/download", query, true);
window.show();
// 別ウィンドウで開く
IWDWindow window = wdComponentAPI.getWindowManager()
.createNonModalExternalWindow(urlToTargetApp);
// ウィンドウプロパティの設定
window.setWindowSize(800, 480);
window.setWindowPosition(100, 50);
// アドレスバーの削除
window.removeWindowFeature(WDWindowFeature.ADDRESS_BAR);
window.show();