package eu.irreality.age;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Vector;
import javax.swing.JTextPane;
import eu.irreality.age.i18n.UIMessages;
public class SwingTextAreaListener implements KeyListener
{
JTextPane elAreaTexto;
ClassicalColoredSwingClient cl;
Vector gameLog;
boolean press_any_key = false;
int ncommands=0;
public void countCommand()
{
ncommands++;
}
public SwingTextAreaListener ( JTextPane nAreaJTexto , Vector gameLog , ClassicalColoredSwingClient cl )
{
elAreaTexto = nAreaJTexto;
//elAreaJTexto = nAreaJTexto;
this.gameLog = gameLog;
this.cl = cl;
}
public void keyTyped(KeyEvent e)
{
;
}
public void keyReleased(KeyEvent e)
{
;
}
public void keyPressed(KeyEvent e)
{
if ( press_any_key )
{
if ( e.getKeyCode() != KeyEvent.VK_ENTER )
{
//ya pulsaron la tecla, contin�a la ejecuci�n normal.
setPressAnyKeyState(false);
cl.setInputString(null);
//cl.notify();
}
else
{
//ya pulsaron; pero es adem�s un action event. Ser� �ste el que se
//encargue de cambiar el estado.
}
}
else if ( e.getKeyCode() == KeyEvent.VK_ENTER )
{
if ( cl.isMemoryEnabled() )
cl.addToBackStack ( cl.getCommandText().trim() );
cl.write("\n");
countCommand();
cl.setInputString( cl.getCommandText() ); //manda el comando al cliente y lo notifica de ello.
cl.write( cl.getColorCode("input") + " > " + cl.getCommandText().trim() + cl.getColorCode("reset") );
cl.writeTitle ( ncommands + " comando" + ((ncommands==1)?"":"s") , 2 );
//cl.notify();
//add new command to game log
gameLog.addElement( cl.getCommandText() );
//elAreaTexto.setText("");
//esperando.resumeExecution();
}
else if ( cl.isMemoryEnabled() )
{
//doskey (memoria)
if ( e.getKeyCode() == KeyEvent.VK_UP )
{
//System.out.println("GoBack");
cl.goBack();
}
else if ( e.getKeyCode() == KeyEvent.VK_DOWN )
{
cl.goForward();
}
}
}
public void setPressAnyKeyState ( boolean value )
{
press_any_key = value;
if ( value )
{
//esperamos por una tecla
//elCampoJTexto.setText("Pulsa cualquier tecla...");
//elCampoJTexto.setEditable(false);
//elCampoJTexto.grabFocus();
cl.write( UIMessages.getInstance().getMessage("csclient.keyrequest") );
elAreaTexto.grabFocus();
elAreaTexto.setSelectionStart(elAreaTexto.getText().length());
elAreaTexto.setSelectionEnd(elAreaTexto.getText().length());
elAreaTexto.setEditable(false);
}
else
{
//ejecuci�n normal
//elCampoJTexto.setText("");
elAreaTexto.setEditable(true);
}
}
}