Package org.jmule.ui.swt.maintabs.serverlist

Source Code of org.jmule.ui.swt.maintabs.serverlist.SWTServerListWrapper

/*
*  JMule - Java file sharing client
*  Copyright (C) 2007-2008 JMule team ( jmule@jmule.org / http://jmule.org )
*
*  Any parts of this program derived from other projects, or contributed
*  by third-party developers are copyrighted by their respective authors.
*
*  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 2
*  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, write to the Free Software
*  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*
*/
package org.jmule.ui.swt.maintabs.serverlist;

import java.util.List;

import org.jmule.core.JMRunnable;
import org.jmule.core.JMuleCoreFactory;
import org.jmule.core.servermanager.Server;
import org.jmule.core.servermanager.ServerManager;
import org.jmule.core.servermanager.ServerManagerException;
import org.jmule.core.servermanager.ServerManagerListener;
import org.jmule.ui.localizer.Localizer;
import org.jmule.ui.localizer._;
import org.jmule.ui.swt.SWTThread;
import org.jmule.ui.swt.common.ConnectButton;
import org.jmule.ui.swt.mainwindow.MainWindow;
import org.jmule.ui.swt.mainwindow.StatusBar;

/**
*
* @author binary256
* @version $$Revision: 1.9 $$
* Last changed by $$Author: binary255 $$ on $$Date: 2010/01/12 14:47:03 $$
*/
public class SWTServerListWrapper {
 
  private static SWTServerListWrapper instance = null;
  private ServerManager server_manager = null;
 
  private ConnectionInfo connection_info;
  private ServerList server_list;
  private ServerMessages server_messages;
  private StatusBar status_bar;
  private ConnectButton connect_button;
  private ServerListTab server_list_tab;
 
  private boolean is_autoconnect = false;
 
  private boolean single_connect = false;
 
  public static SWTServerListWrapper getInstance() {
    if (instance == null)
      instance = new SWTServerListWrapper(JMuleCoreFactory.getSingleton().getServerManager());
    return instance;
  }
 
  private SWTServerListWrapper(ServerManager serverManager) {
    server_manager = serverManager;
    server_manager.addServerListListener(new ServerManagerListener() {

      public void connected(Server server) {
               
        if (is_autoconnect) {
          is_autoconnect = false;
          setUIConnected(server);
        } else
          if (single_connect) {
            single_connect = false;
            setUIConnected(server);
          }
      }

      public void disconnected(Server server) {
        if (!is_autoconnect) {
          setUIDisconnected(server);
        }
      }
      public void serverMessage(Server server,final String message) {
        SWTThread.getDisplay().asyncExec(new JMRunnable() {
          public void JMRun() {
            server_messages.addText(message);
          }});
      }

      public void autoConnectFailed() {
        if (is_autoconnect) {
          is_autoconnect = false;
          setUIDisconnected(null);
        }
      }

      public void autoConnectStarted() {
        if ( is_autoconnect == false ) {
          is_autoconnect = true;
          setUIConnecting();
        }
      }

      public void isConnecting(Server server) {
        setUIConnecting(server);
      }

      public void serverAdded(final Server server) {
        SWTThread.getDisplay().asyncExec(new JMRunnable() {
          public void JMRun() {
            MainWindow.getLogger().fine(Localizer._("mainwindow.logtab.message_server_added",server.getAddress()+":"+server.getPort()));
            server_list.addServer(server);
            server_list_tab.setServerCount(server_manager.getServersCount());
        }});
      }

      public void serverConnectingFailed(Server server, Throwable cause) {
        setUIDisconnected(server);
      }

      public void serverListCleared() {
        SWTThread.getDisplay().asyncExec(new JMRunnable() {
          public void JMRun() {
            MainWindow.getLogger().fine(Localizer._("mainwindow.logtab.message_server_list_cleared"));
            server_list.clear();
            server_list_tab.setServerCount(server_manager.getServersCount());
        }});
      }

      public void serverRemoved(final Server server) {
        SWTThread.getDisplay().asyncExec(new JMRunnable() {
          public void JMRun() {
            MainWindow.getLogger().fine(Localizer._("mainwindow.logtab.message_server_removed",server.getAddress()+":"+server.getPort()));
            server_list.removeServer(server);
            server_list_tab.setServerCount(server_manager.getServersCount());
        }});
      }

     
    });
  }
 
  private void setUIConnecting() {
    if (SWTThread.getDisplay().isDisposed()) return ;
    SWTThread.getDisplay().asyncExec(new JMRunnable() {
      public void JMRun() {
        if (!connect_button.isDisposed())
          connect_button.setConnecting();
        if (!status_bar.isDisposed())
          status_bar.setStatusConnecting();
        if (!connection_info.isDisposed())
          connection_info.setStatusConnecting(null);
      }
    });
  }
 
  private void setUIConnecting(final Server server) {
    if (SWTThread.getDisplay().isDisposed()) return ;
    SWTThread.getDisplay().asyncExec(new JMRunnable() {
      public void JMRun() {
        MainWindow.getLogger().fine(_._("mainwindow.logtab.message_connecting_to",server.getAddress()+":"+server.getPort()));
        if (!connect_button.isDisposed())
          connect_button.setConnecting();
        if (!status_bar.isDisposed())
          status_bar.setStatusConnecting();
        if (!connection_info.isDisposed())
          connection_info.setStatusConnecting(server);
      }});
  }
 
  private void setUIDisconnected(final Server server) {
    if (SWTThread.getDisplay().isDisposed()) return ;
    SWTThread.getDisplay().asyncExec(new JMRunnable() {
      public void JMRun() {
        if (!connect_button.isDisposed())
          connect_button.setDisconnected();
        if (!status_bar.isDisposed())
          status_bar.setStatusDisconnected();
        if (!connection_info.isDisposed())
          connection_info.setStatusDisconnected();
        if (!server_list.isDisposed())
            if (server!=null)
              server_list.serverDisconnected(server);
        if (server != null)
          MainWindow.getLogger().warning(Localizer.getString("mainwindow.logtab.message_disconnected", server.getAddress()+":"+server.getPort()));
      }});
  }
 
  private void setUIConnected(final Server server) {
    if (SWTThread.getDisplay().isDisposed()) return ;
    SWTThread.getDisplay().asyncExec(new JMRunnable() {
      public void JMRun() {
        if (!connect_button.isDisposed())
          connect_button.setConnected();
        if (!status_bar.isDisposed())
          status_bar.setStatusConnected(server);
        if (!connection_info.isDisposed())
          connection_info.setStatusConnected(server);
        MainWindow.getLogger().fine(Localizer.getString("mainwindow.logtab.message_connected_to", server.getAddress()+":"+server.getPort()));
      }});
  }
 
  public void startAutoConnect() {
    SWTThread.getDisplay().asyncExec(new JMRunnable() {
      public void JMRun() {
        try {
          server_manager.connect();
        } catch (ServerManagerException e) {
          e.printStackTrace();
          setUIDisconnected(null);
        }
      }
    });
  }

  public void stopConnecting() {
    SWTThread.getDisplay().asyncExec(new JMRunnable() {
      public void JMRun() {
        if (is_autoconnect) {
          is_autoconnect = false;
          try {
            server_manager.disconnect();
          } catch (ServerManagerException e) {
            e.printStackTrace();
          }
        }
        if (single_connect) {
          single_connect = false;
          try {
            server_manager.disconnect();
          } catch (ServerManagerException e) {
            e.printStackTrace();
          }
        }
      }
    });
   
  }
 
  public void disconnect() {
    try {
      server_manager.disconnect();
    } catch (ServerManagerException e) {
      e.printStackTrace();
    }
  }
 
  public void connectTo(Server server) {
    single_connect = true;
    try {
      server_manager.connect(server);
    } catch (ServerManagerException e) {
     
    }
  }
 
  public boolean isAutoconnecting() {
    return is_autoconnect;
  }
 
  public void removeServer(List<Server> servers) {
    try {
      server_manager.removeServer(servers);
    } catch (ServerManagerException e) {
      e.printStackTrace();
    }
  }
 
  public void removeServer(Server... server) {
    try {
      server_manager.removeServer(server);
    } catch (ServerManagerException e) {
      e.printStackTrace();
    }
  }
 
  public void clearServerList() {
    server_manager.clearServerList();
  }
 
  public void setServerManager(ServerManager serverManager) {
    this.server_manager = serverManager;
  }
 
  public void setServerListTab(ServerListTab tab) {
    server_list_tab = tab;
  }

  public void setConnectionInfo(ConnectionInfo connectionInfo) {
    this.connection_info = connectionInfo;
  }

  public void setServerList(ServerList serverList) {
    this.server_list = serverList;
  }

  public void setServerMessages(ServerMessages serverMessages) {
    this.server_messages = serverMessages;
  }
 
  public void setStatusBar(StatusBar statusBar) {
    this.status_bar = statusBar;
  }
 
  public void setConnectButton(ConnectButton connectButton) {
    this.connect_button = connectButton;
  }
 
}
TOP

Related Classes of org.jmule.ui.swt.maintabs.serverlist.SWTServerListWrapper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.