package alma.logoot.controller;
import alma.logoot.logootengine.FactoryLogootEngine;
import alma.logoot.logootengine.ILogootEngine;
import alma.logoot.network.FactoryNetwork;
import alma.logoot.network.INetwork;
import alma.logoot.network.IReceiveListener;
import alma.logoot.ui.FactoryUI;
import alma.logoot.ui.IChangeListener;
import alma.logoot.ui.IUI;
import com.google.gwt.core.client.EntryPoint;
public class Controller implements EntryPoint, IChangeListener,
IReceiveListener {
IUI ui;
INetwork network;
ILogootEngine logootEngine;
@Override
public void onModuleLoad() {
// On initialise la vue.
ui = FactoryUI.getInstance();
ui.addChangeListener(this);
// On initialise le network.
network = FactoryNetwork.getInstance();
network.addReceiverListener(this);
logootEngine = FactoryLogootEngine.getInstance();
}
@Override
public void change(String text) {
// TODO on set l'id du client a chaque saisie de caractere, ce qu'il ne
// faudrais pas obligatoirement faire, il faut vériofier que le client
// n'a ps l'id -1 sinon il ne faudrait pas remplacer.
logootEngine.setId(network.getId());
String patch = logootEngine.generatePatch(text);
if (!patch.equals("[]"))
network.send(patch);
}
@Override
public void receive(String o) {
System.out.println("Objet recu :" + o);
System.out.println("Objet de type : " + o.getClass().getName());
try {
String text = logootEngine.deliver(o);
if (text != null)
ui.setText(text);
} catch (ClassCastException e) {
System.err
.println("Error, failed to cast the received object into a collection of operations");
}
}
}