メニュー選択時の処理を記述する
サンプル01でとりあえずメニューバーは表示されましたが、項目を選択しても何も変化がありません。これではメニューとは言えないので、項目が選択されたら何らかの処理をするようにします。
メニュー項目はmenu配列内に定義されており、サンプル01では{ text : 項目の文字 }として項目名を記述しました。ここに新たにhandler(ハンドラ―)を追加し、メニュー項目が選択された時に呼び出す関数を指定します。ここでは、menuProcという名前の関数を呼び出すことにします。
menu : [
{ text : '通常の地図', handler : menuProc },
{ text : '航空写真', handler : menuProc },
{ text : '通常+航空写真', handler : menuProc },
{ text : '地形', handler : menuProc }
]
項目が選択されてmenuProc関数が呼び出されたら、項目ごとに何らかの処理を実行する必要があります。
Ext JSでは、項目選択時に呼び出される関数には、メニュー項目のオブジェクトがパラメーターとして渡されます。オブジェクトにはメニュー項目のプロパティが格納されています。たとえば以下のようにすると、選択したメニューの項目名がアラートダイアログに表示されます。
function menuProc(obj){
Ext.Msg.alert('項目の文字', obj.text);
}
ここまでの処理をまとめたのが サンプル02です。
●サンプル02のソースコード
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Sample</title>
<link rel="stylesheet" href="resources/css/ext-all.css" type="text/css" media="all">
<link rel="stylesheet" href="css/main.css" type="text/css" media="all">
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="js/ext-base.js"></script>
<script type="text/javascript" src="js/ext-all.js"></script>
<script type="text/javascript"><!--
Ext.BLANK_IMAGE_URL = 'resources/images/default/s.gif';
Ext.onReady(function(){
var win = new Ext.Window({
title: 'Ext JSメニューサンプル',
width: 520,
height: 480,
layout: 'fit',
items: {
html : 'Ext JSを使ってウィンドウとメニューを表示します。'
},
tbar : [
{ xtype : 'tbbutton',
text : '地図の種類',
menu : [
{ text : '通常の地図', handler : menuProc },
{ text : '航空写真', handler : menuProc },
{ text : '通常+航空写真', handler : menuProc },
{ text : '地形', handler : menuProc }
]
}
]
});
win.show();
});
function menuProc(obj){
Ext.Msg.alert('項目の文字', obj.text);
}
// --></script>
</head>
<body>
<h1>Ext JSウィンドウ+メニューサンプル</h1>
<p>ページが読み込まれるとウィンドウ内にメニューが表示されます。</p>
</body>
</html>