1 /*!
  2  * @include "_NameSpace.js"
  3  * @include "ViewList.js"
  4  * @include "DatOut.js"
  5  * @include "ThreadItem.js"
  6  */
  7 
  8 /**
  9  * スレビューやポップアップを参照するオブジェクト
 10  * このオブジェクトから、スレビューが参照しているスレのThreadItemオブジェクトの取得、スレビューに
 11  * テキストを書き込むためのDatOutオブジェクトを取得、スレタブに関する情報の設定参照、選択テキストや
 12  * フォーカスされたリンクの取得などが可能
 13  * @class _JVS.ViewItem
 14  */
 15 _JVS.ViewItem = function(){
 16 	/**
 17 	 * 参照先のviewItemの実体が存在しているかどうか。viewItemはスクリプトが参照を保持していても
 18 	 * ユーザー操作でスレビューやポップアップが閉じられれば実体が削除されてしまうので、
 19 	 * そのような場合にはConnectedがfalseになりアクセスが不能になる
 20 	 * 
 21 	 * Action:○ LateCall:○ Command:○
 22 	 * @type bool
 23 	 */
 24 	this.Connected = true;
 25 	
 26 	/**
 27 	 * QueryDatOutで取得したDatOutオブジェクトをdisconnectし、文字列の書き出しを終了する
 28 	 * viewItemオブジェクトは参照カウントがゼロになるとガベージコレクトで自動的にEndDatOutを
 29 	 * 呼び出すので通常はEndDatOutを明示的に呼び出す必要はないが、viewItemオブジェクトを継続して
 30 	 * グローバル変数などに保持する場合は文字列出力の終了後にEndDatOutを確実に呼び出す必要がある。
 31 	 * プログラミング上、QueryDatOut以降の節はtry catch finally文で括り、finallyの中でEndDatOutを
 32 	 * 呼び出すのが好ましい
 33 	 * 
 34 	 * Action:× LateCall:○ Command:○
 35 	 */
 36 	this.EndDatOut = function(){};
 37 	
 38 	/**
 39 	 * スレ表示用以外の抽出などのスレビューでスレタイ欄に表示される文字列を取得/指定する
 40 	 * スレ表示中のスレビューでも操作は可能だが、スレタイ欄には反映されない
 41 	 * viewItemがポップアップの場合には操作が無視され、取得すると常に空白文字列
 42 	 * 
 43 	 * Action:○ LateCall:○ Command:○
 44 	 * @type String
 45 	 */
 46 	this.ExtraTitle = "";
 47 	
 48 	/**
 49 	 * キャレットを表示している場合は、そのスレビューのキャレットの位置にあるリンクのhref。
 50 	 * キャレット非表示や対象がポップアップの場合は、直前にクリックしたリンク。
 51 	 * それらの位置がリンクでなかった場合は空白文字列
 52 	 * 
 53 	 * Action:○ LateCall:○ Command:○
 54 	 */
 55 	this.FocusedLink = "";
 56 	
 57 	/**
 58 	 * スレ表示用以外の抽出などのスレビューでスレタブのマウスオーバーにより表示されるヒントの文字列を
 59 	 * 取得/指定する。
 60 	 * スレ表示中のスレビューでも操作は可能だが、ヒントには反映されない
 61 	 * viewItemがポップアップの場合には操作が無視され、取得すると常に空白文字列
 62 	 * 
 63 	 * Action:○ LateCall:○ Command:○
 64 	 * @type String
 65 	 */
 66 	this.HintText = "";
 67 	
 68 	/**
 69 	 * システムでは使用/制御しない。
 70 	 * スクリプトが何かviewItemに固有の情報を保持させたい場合にこのプロパティに代入しておく。
 71 	 * スクリプトごとに保存領域が分けられているので、あるviewItemに対してA.jsとB.jsが別々に
 72 	 * viewItem.Objを設定できる。逆に、他のスクリプトが設定したObjを参照することはできない。
 73 	 * スクリプトからの参照がなくなっても、実体のスレビューが閉じられていなければObjの内容は
 74 	 * 保持され、再度スクリプトから参照すれば値を取得できる
 75 	 * 
 76 	 * Action:○ LateCall:○ Command:○
 77 	 * @type Object
 78 	 */
 79 	this.Obj;
 80 	
 81 	/**
 82 	 * スレビューに書き込むためのDatOutオブジェクトを生成し、スレビューを書き込み待機状態にする
 83 	 * QueryDatOutを呼び出して書き込み処理が終了したら、EndDatOutを呼び出す必要がある
 84 	 * 
 85 	 * @return {_JVS.DatOut} スレビューに書き込むためのDatOutオブジェクト
 86 	 */
 87 	this.QueryDatOut = function(){return null;};
 88 	
 89 	/**
 90 	 * スレビュー/ポップアップで範囲選択している文字列。範囲選択していない場合は空白文字列。
 91 	 * Action:○ LateCall:○ Command:○
 92 	 * @type String
 93 	 */
 94 	this.Selection = "";
 95 	
 96 	/**
 97 	 * スレ表示用以外の抽出などのスレビューでスレタブに表示される文字列を取得/指定する。
 98 	 * スレ表示中のスレビューでも操作は可能だが、ヒントには反映されない
 99 	 * viewItemがポップアップの場合には操作が無視され、取得すると常に空白文字列
100 	 * Action:○ LateCall:○ Command:○
101 	 * @type String
102 	 */
103 	this.TabText = "";
104 	
105 	/**
106 	 * スレビュー/ポップアップで開かれているスレのThreadItemオブジェクト。抽出やログから検索β、
107 	 * スクリプトが作成したスレビュー/ポップアップなど、スレを保持していないビューではundefined。
108 	 * Action:○ LateCall:○ Command:○
109 	 * @return {_JVS.ThreadItem} 対象のビューで開いているスレのThreadItemオブジェクト。スレを保持していないビューではundefined
110 	 */
111 	this.Thread = function(){return null;};
112 	
113 	/**
114 	 * viewItemオブジェクトが参照する対象の種別を示す文字列。
115 	 * Action:○ LateCall:○ Command:○
116 	 * "PopupView"      ポップアップ
117 	 * "ViewerView"     ビューアの簡易HTML表示
118 	 * "ThreadView"     スレ表示中のスレビュー
119 	 * "FunctionalView" 抽出など、スレ表示以外のスレビュー
120 	 * "FunctionalView" 抽出など、スレ表示以外のスレビュー
121 	 * "FlexView"       上記以外のHTML表示(書き込みプレビューなど)
122 	 * "Undefined"      上記以外
123 	 * @type String
124 	 */
125 	this.ViewType = "Undefined";
126 	
127 	/**
128 	 * スキン文字列を書き込む。そのビューでQueryDatOutによりDatOutオブジェクトが作成され、有効に
129 	 * 保持されている状況でなければ実行できない。
130 	 * Doeでフォントを変更するためにはWriteSkinでBodyタグによりフォント設定する必要がある。
131 	 * Skin文字列に空白文字列を指定した場合、Jane側で設定された通常スキンが使用される。
132 	 * (もっと変えたいβなどの板別設定は使われない)
133 	 * Action:× LateCall:○ Command:○
134 	 * @param {String} Skin
135 	 */
136 	this.WriteSkin = function(Skin){};
137 };
138