View Javadoc

1   /*
2    * "Peko" Visual Novel System
3    *
4    * All Rights Reserved.
5    * Copyright (c) 1999-2003 Tsukuba Bunko.
6    *
7    * $Id: SelectCoordinator.java,v 1.1 2005/07/11 12:49:19 ppoi Exp $
8    */
9   package tsukuba_bunko.peko.scenario.select;
10  
11  import	java.util.List;
12  
13  import	tsukuba_bunko.peko.Logger;
14  
15  import	tsukuba_bunko.peko.canvas.CanvasManager;
16  
17  import	tsukuba_bunko.peko.canvas.select.SelectItem;
18  
19  import	tsukuba_bunko.peko.scenario.Coordinator;
20  
21  
22  /***
23   * SelectCanvas に対する処理を取り持つコーディネータモジュールです。
24   * @author	$Author: ppoi $
25   * @version	$Revision: 1.1 $
26   */
27  public class SelectCoordinator	extends Coordinator	{
28  
29  	/***
30  	 * 選択肢リスト
31  	 */
32  	protected List	_selectItems = null;
33  
34  	/***
35  	 * 現在アクティブなスレッド
36  	 */
37  	protected Thread	_activeThread = null;
38  
39  
40  	/***
41  	 * <code>SelectCoordinator</code> のインスタンスを生成します。
42  	 */
43  	public SelectCoordinator()
44  	{
45  		super();
46  	}
47  
48  
49  	/***
50  	 * SelectCanvas に対する操作を開始します。
51  	 */
52  	public void begin()
53  	{
54  		if( isActiveThread() )	{
55  			getActionControler().setSaveEnabled( true );
56  			_selectItems = new java.util.ArrayList( 4 );
57  		}
58  	}
59  
60  	/***
61  	 * SelectCanvas に対する操作を終了し、キャンバスの状態を確定します。
62  	 */
63  	public void commit()
64  	{
65  		if( isActiveThread() )	{
66  			getActionControler().setSaveEnabled( false );
67  		}
68  	}
69  
70  	/***
71  	 * 選択肢を追加します。
72  	 * @param	id	選択肢 ID
73  	 * @param	text	選択肢の文章
74  	 */
75  	public void addSelectItem( String id, String text )
76  	{
77  		if( id == null )	{
78  			throw new IllegalArgumentException( "id is not specified." );
79  		}
80  		else if( text == null)	{
81  			throw new IllegalArgumentException( "text is not specified." );
82  		}
83  
84  		if( isActiveThread() )	{
85  			SelectItem	item = new SelectItem();
86  			item.setID( id );
87  			item.setText( text );
88  			_selectItems.add( item );
89  		}
90  	}
91  
92  	/***
93  	 * ユーザーに対し選択肢を表示し、選択された ID を取得します。
94  	 * @return	選択された選択肢の選択肢 ID
95  	 */
96  	public String select()
97  	{
98  		if( isActiveThread() )	{
99  			if( (_selectItems == null) || _selectItems.isEmpty() )	{
100 				Logger.debug( "[scenario.select] no select items!" );
101 				return null;
102 			}
103 			else	{
104 				CanvasManager	canvasManager = getCanvasManager();
105 				String	id = canvasManager.showSelect( _selectItems );
106 				if( id == null )	{
107 					Logger.debug( "[scenario.select] canceled." );
108 				}
109 				canvasManager.advancesNewPage();
110 				return id;
111 			}
112 		}
113 		else	{
114 			return null;
115 		}
116 	}
117 
118 	/***
119 	 * SelectCanvas に対する操作を終了します。
120 	 */
121 	public void end()
122 	{
123 		if( isActiveThread() )	{
124 			_activeThread = null;
125 			if( _selectItems != null )	{
126 				_selectItems.clear();
127 				_selectItems = null;
128 			}
129 		}
130 	}
131 }