View Javadoc

    1   /*
    2    * "Peko" Visual Novel System
    3    *
    4    * All Rights Reserved.
    5    * Copyright (c) 1999-2003 Tsukuba Bunko.
    6    *
    7    * $Id: ElementHandler.java,v 1.1 2005/07/11 12:49:18 ppoi Exp $
    8    */
    9   package tsukuba_bunko.peko.scenario;
    10
    11  import	org.xml.sax.Attributes;
    12  import	org.xml.sax.SAXException;
    13
    14  import	tsukuba_bunko.peko.PekoSystem;
    15
    16
    17  /***
    18   * PSML Scene 要素を処理するハンドラの基本機能を定義します。
    19   * @author	$Author: ppoi $
    20   * @version	$Revision: 1.1 $
    21   */
    22  public abstract class ElementHandler	{
    23
    24  	/***
    25  	 * PSML 1.0 "Scene" XML Namespace URI
    26  	 */
    27  	public static final String	NAMESPACE_SCENE = "http://tsukuba-bunko.org/ns/psml-scene";
    28
    29  	/***
    30  	 * シーンコンテクスト
    31  	 */
    32  	protected SceneContext	_context = null;
    33
    34  	/***
    35  	 * 親要素のハンドラ
    36  	 */
    37  	protected ElementHandler	_parent = null;
    38
    39  	/***
    40  	 * シーンがこの要素の処理を以て終了するかどうか
    41  	 */
    42  	protected boolean	_endOfScene = false;
    43
    44
    45  	/***
    46  	 * <code>ElementHandler</code> のインスタンスを生成します。
    47  	 */
    48  	protected ElementHandler()
    49  	{
    50  		super();
    51  	}
    52
    53  	/***
    54  	 * シーンコンテクストを設定します。
    55  	 * @param	context	シーンコンテクスト
    56  	 */
    57  	public void setSceneContext( SceneContext context )
    58  	{
    59  		_context = context;
    60  	}
    61
    62  	/***
    63  	 * シーンコンテクストを取得します。
    64  	 * @return	シーンコンテクスト
    65  	 */
    66  	public SceneContext getSceneContext()
    67  	{
    68  		return _context;
    69  	}
    70
    71  	/***
    72  	 * 親要素を処理している ElementHandler を設定します。
    73  	 * @param	handler	親要素のハンドラ
    74  	 */
    75  	public void setParentHandler( ElementHandler handler )
    76  	{
    77  		_parent = handler;
    78  	}
    79
    80  	/***
    81  	 * 親要素を処理している ElementHandler を取得します。
    82  	 * @return	親要素のハンドラ
    83  	 */
    84  	public ElementHandler getParentHandler()
    85  	{
    86  		return _parent;
    87  	}
    88
    89  	/***
    90  	 * シーンがこの要素の処理を以て終了するかどうかを設定します。
    91  	 * @param	end	シーンが終了する場合 <code>true</code>、それ以外の場合 <code>false</code>
    92  	 */
    93  	protected void setEndOfScene( boolean end )
    94  	{
    95  		_endOfScene = end;
    96  	}
    97
    98  	/***
    99  	 * シーンがこの要素の処理を以て終了するかどうかを判定します。
    100 	 * @return	シーンが終了する場合 <code>true</code>、それ以外の場合 <code>false</code>
    101 	 */
    102 	public boolean isEndOfScene()
    103 	{
    104 		return _endOfScene;
    105 	}
    106
    107 	/***
    108 	 * 処理を一時停止します。
    109 	 * @param	wait	最大停止時間
    110 	 */
    111 	protected void stop( long wait )
    112 	{
    113 		if( _context != null )	{
    114 			if( _context.getSceneProcessor().isAborted() )	{
    115 				return;
    116 			}
    117 			tsukuba_bunko.peko.Logger.debug( "[scenario.handler] stop using ElementHandler#stop(wait)." );
    118 			PekoSystem.getInstance().getActionControler().stop( wait );
    119 		}
    120 	}
    121
    122 	/***
    123 	 * 処理をユーザーのアクションがあるまで一時停止します。
    124 	 */
    125 	protected void stop()
    126 	{
    127 		if( _context != null )	{
    128 			if( _context.getSceneProcessor().isAborted() )	{
    129 				return;
    130 			}
    131 			tsukuba_bunko.peko.Logger.debug( "[scenario.handler] stop using ElementHandler#stop()." );
    132 			PekoSystem.getInstance().getActionControler().stop();
    133 		}
    134 	}
    135
    136
    137 //
    138 //	SAX ContentHandler
    139 //
    140 	public void startDocument()
    141 		throws SAXException
    142 	{
    143 	}
    144
    145 	public void endDocument()
    146 		throws SAXException
    147 	{
    148 	}
    149
    150 	public void startElement( String namespaceURI, String localName, String qName, Attributes attrs )
    151 		throws SAXException
    152 	{
    153 	}
    154
    155 	public void endElement( String namespaceURI, String localName, String qName )
    156 		throws SAXException
    157 	{
    158 	}
    159
    160 	public void characters( char[] ch, int begin, int length )
    161 		throws SAXException
    162 	{
    163 	}
    164 }