
/**
 * @class Voyeur.Tool.DocumentReader
 * @description A panel that provides a simple reader for documents in a corpus.
 * @extends Ext.GridPanel
 * @extends Voyeur.Tool
 * @author Stéfan Sinclair
 * @since 0.1.1
 */
Voyeur.Tool.DocumentReader = Ext.extend(Ext.Panel, {
	keywordStartPosition : null
	,keywordEndPosition : null
	,constructor: function(config){
		Ext.apply(this, new Voyeur.Tool(config, Voyeur.Tool.DocumentReader.prototype.i18n))
		Ext.applyIf(config, {
			layout: 'fit',
			html: '<span class="x-grid-empty">' + Voyeur.localization.get('voyeurTool.noResults') + '</span>'
		});
		Voyeur.Tool.DocumentReader.superclass.constructor.apply(this, arguments);
		this.addListener('voyeurDocumentTermKwicsGrid.rowselect', function(src, selectionModel, rowIndex, record) {
			if (this.collapsed) {this.expand(true);}
			this.body.update('');
			this.keywordStartPosition = record.json['keyword-start-position'];
			this.keywordEndPosition = record.json['keyword-end-position'];
			Voyeur.application.update({
				title : Voyeur.localization.get(this.xtype+'.title'),
				tool : 'DocumentReaderTool',
				params : {
					document : record.json['doc-index']
					,start : record.json['keyword-start-position']-250
					,length : 500
				}
				,renderTo : this.id
			});
		});
		this.addListener('DocumentReaderToolResultLoaded', function(src, data) {
			if (this.collapsed) {this.expand(true);}
			var tokens = data.tool.text.tokens;
			var text = "";
			for (var i = 0; i < tokens.length; i++) {
				if (tokens[i].position==this.keywordStartPosition) {
					text+="<span class='keyword'>";
				}
				text += Ext.util.Format.htmlEncode(tokens[i].string);
				if (tokens[i].position==this.keywordEndPosition) {
					text+="</span>";
				}
			}
			this.body.update(text);
			
			var keywordEls = this.body.query('span');
			keywordEls[0].scrollIntoView();
			this.body.scroll('up', this.getInnerHeight()/2, true);
		});
	}

	// private localization variables
	,i18n : {
		title : {en: "Text Reader"}
		,help : {en: "This tool allows you to read excerpts from a text."}
	}

});

Ext.reg('voyeurDocumentReader', Voyeur.Tool.DocumentReader);
