/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package socius.state; import java.rmi.RemoteException; import java.util.logging.Level; import java.util.logging.Logger; import javafx.scene.control.Dialogs; import javafx.stage.Stage; import socius.telas.util.DadosGlobais; import socius.dispositivos.Computador; import socius.dispositivos.ServidorRemoto; import socius.excecoes.ComputadorNaoConectadoException; import socius.app.ClientBoot; import socius.thread.MantemConexaoServidorThread; /** * * @author Lucas Dillmann <lucas [at] dillmann.com.br> */ public class EstadoOnline implements EstadoComputador { private Computador computador; private ServidorRemoto servidor; private MantemConexaoServidorThread thread; private String estado = "online"; public EstadoOnline(Computador computador, ServidorRemoto servidor) { this.computador = computador; this.servidor = servidor; // Inicia Thread que irá manter o envio de avisos de que ainda estou // online thread = new MantemConexaoServidorThread(computador); thread.start(); } @Override public void conectar() { if (Dialogs.showConfirmDialog(new Stage(), "Você já está conectado!,\n deseja desconectar?").equals("YES")) { try { desconectar(); } catch (Exception ex) { Logger.getLogger(EstadoOnline.class.getName()).log(Level.SEVERE, null, ex); } } } @Override public void desconectar() { // try { //limpa a lista decomputadores deletando esse // initTela.removeComputadores(ClientBoot.getInstance().getComputador()); // initTela.removeArquivos(ClientBoot.getInstance().getComputador().getArquivos()); // initTela.getArquivos().clear(); try { thread.interromper(); servidor.desconectar(computador); } catch (Throwable ex) { Logger.getLogger(EstadoOnline.class.getName()).log(Level.SEVERE, null, ex); } servidor = null; computador.setEstado(new EstadoOffline(computador)); ClientBoot r = new ClientBoot(); r.telaLogin(); try { r.start(new Stage()); } catch (Exception ex) { Logger.getLogger(EstadoOnline.class.getName()).log(Level.SEVERE, null, ex); } // } catch (RemoteException ex) { // Logger.getLogger(EstadoOnline.class.getName()).log(Level.SEVERE, null, ex); // } } @Override public ServidorRemoto getServidorConectado() throws ComputadorNaoConectadoException { return servidor; } @Override public String toString() { return estado; } }