view java/src/uk/ac/qmul/eecs/ccmi/gui/awareness/AwarenessTextPane.java @ 1:e3935c01cde2 tip

moved license of PdPersistenceManager to the beginning of the file
author Fiore Martin <f.martin@qmul.ac.uk>
date Tue, 08 Jul 2014 19:52:03 +0100
parents 78b7fc5391a2
children
line wrap: on
line source
/*  
 CCmI Editor - A Collaborative Cross-Modal Diagram Editing Tool
  
 Copyright (C) 2011  Queen Mary University of London (http://ccmi.eecs.qmul.ac.uk/)

 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

package uk.ac.qmul.eecs.ccmi.gui.awareness;

import java.awt.Component;
import java.awt.event.KeyEvent;
import java.util.LinkedList;
import java.util.List;

import javax.swing.JTextPane;
import javax.swing.KeyStroke;
import javax.swing.text.DefaultEditorKit;

import uk.ac.qmul.eecs.ccmi.main.DiagramEditorApp;
import uk.ac.qmul.eecs.ccmi.speech.SpeechUtilities;

@SuppressWarnings("serial")
class AwarenessTextPane extends JTextPane {
	AwarenessTextPane(String accessibleName){
		records = new LinkedList<String>();
		addKeyListener(SpeechUtilities.getSpeechKeyListener(false,true));
		/* prevents getText() from automatically turn all the \n to \r\n */
		getDocument().putProperty(DefaultEditorKit.EndOfLineStringProperty, "\n");
		getAccessibleContext().setAccessibleName(accessibleName);
		getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB,0), "none");	
		SpeechUtilities.changeTabListener(this,DiagramEditorApp.getFrame());
	}
	
	void insert(String record){
		records.add(0, record);
		update();
	}
	
	void remove(String record){
		records.remove(record);
		update();
	}
	
	void clear(){
		records.clear();
		update();
	}
	
	protected void processKeyEvent(KeyEvent e){
		if(e.getKeyCode() != KeyEvent.VK_UP &&
			e.getKeyCode() != KeyEvent.VK_DOWN &&
			 e.getKeyCode() != KeyEvent.VK_RIGHT &&
			  e.getKeyCode() != KeyEvent.VK_LEFT  &&
			   e.getKeyCode() != KeyEvent.VK_TAB)
			return;
		super.processKeyEvent(new KeyEvent((Component)e.getSource(),e.getID(),
					e.getWhen(),0,e.getKeyCode(),e.getKeyChar()));
	}
	
	private void update(){
		StringBuilder builder = new StringBuilder();
		for(String r : records){
			builder.append(r);
		}
		selectAll();
		replaceSelection(builder.toString());
	}
	
	private List<String> records;
}