1 /*!
  2  * @include "_NameSpace.js"
  3  * @include "PopupTargetInfo.js"
  4  */
  5 
  6 /**
  7  * ユーザー定義のメニューを保持するオブジェクト。JaneScript.InsertMenuや他のMenuItemの
  8  * Add,Inertにより取得する。OnClickに関数を代入しておくことでメニューをクリックしたときに
  9  * その関数を呼び出すことができる。キャプション、ショートカットの設定や可視性、チェックの
 10  * 有無を設定可能。
 11  * 
 12  * 用途上、一般的にはグローバルオブジェクトとして保持しておく必要がある
 13  * @class _JVS.MenuItem
 14  */
 15 _JVS.MenuItem = function(){
 16 	/**
 17 	 * MenuItemのサブメニューの先頭に新たなサブメニューを追加する
 18 	 * Insert(0)と同等の処理
 19 	 * Action:○ LateCall:○ Command:○
 20 	 * @return {_JVS.MenuItem} 新たに作成したメニューのMenuItem
 21 	 */
 22 	this.Add = function(){return null;};
 23 	
 24 	/**
 25 	 * メニューに表示される文字列
 26 	 * Action:○ LateCall:○ Command:○
 27 	 * @type String
 28 	 */
 29 	this.Caption = "";
 30 	
 31 	/**
 32 	 * メニューの左端のチェックの有無
 33 	 * true  チェックあり
 34 	 * false チェックなし
 35 	 * Action:○ LateCall:○ Command:○
 36 	 * @type bool
 37 	 */
 38 	this.Checked = false;
 39 	
 40 	/**
 41 	 * MenuItemの参照先のメニューが存在しているか
 42 	 * true  参照先のメニューは存在している
 43 	 * false 参照先のメニューはDisconnectによりスクリプトから削除されたか、システムに削除された
 44 	 * Action:○ LateCall:○ Command:○
 45 	 * @type bool
 46 	 */
 47 	this.Connected = true;
 48 	
 49 	/**
 50 	 * そのMenuItemに含まれるサブメニューの数
 51 	 * Action:○ LateCall:○ Command:○
 52 	 * @type int
 53 	 */
 54 	this.Count = 1;
 55 	
 56 	/**
 57 	 * MenuItemが保持しているメニューを削除する。この関数の実行後、実行したオブジェクトの
 58 	 * Connectedプロパティはfalseになる
 59 	 * Action:○ LateCall:○ Command:○
 60 	 */
 61 	this.Disconnect = function(){};
 62 	
 63 	/**
 64 	 * メニューが有効かどうかの設定
 65 	 * true  メニューは有効
 66 	 * false メニューは無効(グレーアウト状態)
 67 	 * Action:○ LateCall:○ Command:○
 68 	 * @type bool
 69 	 */
 70 	this.Enabled = true;
 71 	
 72 	/**
 73 	 * ジェスチャー登録の時にJane内部で判定に使用する文字列。
 74 	 * これが空白文字列の場合、ジェスチャー登録のメニュー一覧に表示されない。
 75 	 * GestureNameが他のメニューと重複するとエラーになるので、GestureNameの設定は必要最小限に抑える
 76 	 * Action:○ LateCall:○ Command:○
 77 	 * @type String
 78 	 */
 79 	this.GetGestureName = "";
 80 	
 81 	/**
 82 	 * MenuItemの新たなサブメニューを作成し、Indexの位置に挿入する
 83 	 * Action:○ LateCall:○ Command:○
 84 	 * @param {int} Index 新たなメニューを挿入する位置
 85 	 * @return {_JVS.MenuItem} 新規に作成したメニューのMenuItemオブジェクト
 86 	 */
 87 	this.Insert = function(Index){return null;};
 88 	
 89 	/**
 90 	 * MenuItemが保持しているメニューのサブメニューを取得する
 91 	 * Action:○ LateCall:○ Command:○
 92 	 * @param {int} Index 取得するサブメニューのMenuItemの中での順番
 93 	 * @return {_JVS.MenuItem} 対象メニューのMenuItemオブジェクト
 94 	 */
 95 	this.Items = function(Index){return null;};
 96 	
 97 	/**
 98 	 * MenuItemの、親メニューの中での位置
 99 	 * Action:○ LateCall:○ Command:○
100 	 * @type int
101 	 */
102 	this.MenuIndex = 0;
103 	
104 	/**
105 	 * MenuItemがユーザーに選択された場合に実行される関数を指定する。
106 	 * MenuItemがサブメニューを持つコンテナ項目の場合、サブメニューを展開する前にOnClickが呼ばれるので
107 	 * 状況に合わせてサブメニューのEnabled, Visible、Checkedを設定するのに利用可能。
108 	 * 
109 	 * OnClickに代入できる関数の型は以下の通り
110 	 * function MenuClick(menuObject: MenuItem, targetInfo: PopupTargetInfo) {};
111 	 * ・MenuObject クリックされたMenuItem (同じ関数を複数のMenuItemから呼び出す場合の区別に使用)
112 	 * ・targetObject メニューがポップアップした状況に関する情報を保持したPopupTargetInfoオブジェクト
113 	 * 詳細はPopupTargetInfoのリファレンスを参照
114 	 * 
115 	 * Action:○ LateCall:○ Command:○
116 	 * @type Function
117 	 */
118 	this.OnClick = function(menuObject, targetInfo){};
119 	
120 	/**
121 	 * MenuItemの親メニューを参照するMenuItemオブジェクト。
122 	 * 親メニューがスクリプトで作成したものでない場合はundefined
123 	 * Action:○ LateCall:○ Command:○
124 	 * @type _JVS.MenuItem
125 	 */
126 	this.ParentMenu = null;
127 	
128 	/**
129 	 * MenuItemのショートカットを設定する
130 	 * 例:MenuItem.ShortCut = "Shift+Ctrl+A";
131 	 * 
132 	 * ※メニューを代入するポップアップにによってはShortCutでショートカットを設定しても
133 	 * 効果がない場合あり
134 	 * 
135 	 * Action:○ LateCall:○ Command:○
136 	 * @type String
137 	 */
138 	this.ShortCut = "";
139 	
140 	/**
141 	 * メニューを表示するかを設定する
142 	 * true  表示する
143 	 * false 表示しない
144 	 * Action:○ LateCall:○ Command:○
145 	 * @type bool
146 	 */
147 	this.Visible = true;
148 };
149