Package org.pokenet.client.ui

Source Code of org.pokenet.client.ui.LoginScreen

package org.pokenet.client.ui;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Scanner;

import mdes.slick.sui.Button;
import mdes.slick.sui.Label;
import mdes.slick.sui.Window;
import mdes.slick.sui.event.ActionEvent;
import mdes.slick.sui.event.ActionListener;

import org.newdawn.slick.Color;
import org.newdawn.slick.Image;
import org.pokenet.client.GameClient;
import org.pokenet.client.backend.Translator;
import org.pokenet.client.ui.frames.AboutDialog;
import org.pokenet.client.ui.frames.LanguageDialog;
import org.pokenet.client.ui.frames.LoginDialog;
import org.pokenet.client.ui.frames.RegisterDialog;
import org.pokenet.client.ui.frames.ServerDialog;
import org.pokenet.client.ui.frames.ToSDialog;

/**
* The login screen (contains server selector, login and registration)
* @author shadowkanji
*
*/
public class LoginScreen extends Window {
  private Label m_bg, m_serverRev, m_clientRev;
  private ServerDialog m_select;
  private LoginDialog m_login;
  private LanguageDialog m_lang;
  private RegisterDialog m_register;
  private AboutDialog m_about;
  private ToSDialog m_terms;
  private Button m_openAbout, m_openToS;

  /**
   * Default constructor
   */
  public LoginScreen() {
    String respath = System.getProperty("res.path");
    if(respath==null)
      respath="";
    try {
      InputStream f;
//      m_bgColor = new Color(255, 255, 255, 70);
      List<String> translated = new ArrayList<String>();
      translated = Translator.translate("_LOGIN");
      /*
       * Load the background image
       * NOTE: Months start at 0, not 1
       */
      Calendar cal = Calendar.getInstance();
      if(cal.get(Calendar.MONTH) == 1) {
          if(cal.get(Calendar.DAY_OF_MONTH) >= 7
              && cal.get(Calendar.DAY_OF_MONTH) <= 14) {
            /* Valentines day! */
            f = new FileInputStream(respath+"res/pokenet_valentines.png");
          } else {
            f = new FileInputStream(respath+"res/pokenet_venonat.png");
          }
      } else if(cal.get(Calendar.MONTH) == 2
          && cal.get(Calendar.DAY_OF_MONTH) > 14) {
        /* If second half of March, show Easter login */
        f = new FileInputStream(respath+"res/pokenet_easter.png");
      } else if(cal.get(Calendar.MONTH) == 3
          && cal.get(Calendar.DAY_OF_MONTH) < 26) {
        /* If before April 26, show Easter login */
        f = new FileInputStream(respath+"res/pokenet_easter.png");
      } else if(cal.get(Calendar.MONTH) == 9) {
        /* Halloween */
        f = new FileInputStream(respath+"res/pokenet_halloween.png");
      } else if(cal.get(Calendar.MONTH) == 11) {
        /* Christmas! */
        f = new FileInputStream(respath+"res/pokenet_xmas.png");
      } else if(cal.get(Calendar.MONTH) == 0) {
        /* January - Venonat Time! */
        f = new FileInputStream(respath+"res/pokenet_venonat.png");
      } else if(cal.get(Calendar.MONTH) >= 5
          && cal.get(Calendar.MONTH) <= 7) {
        /* Summer login */
        f = new FileInputStream(respath+"res/pokenet_summer.png");
      } else {
        /* Show normal login screen */
        f = new FileInputStream(respath+"res/pokenet_normal.png");
      }
      m_bg = new Label(new Image(f, "bg", false));
      m_bg.pack();
      m_bg.setLocation(0, 0);
      m_bg.setVisible(true);
      this.add(m_bg);
     
      /*
       * Create the server selector container
       */
      m_select = new ServerDialog();
      this.add(m_select);
      /*
       * Create the language selector container
       */
      m_lang = new LanguageDialog();
      this.add(m_lang);
     
     
      /*
       * Create the login container
       */
      m_login = new LoginDialog();
      this.add(m_login);
     
      m_register = new RegisterDialog();
      this.add(m_register);
     
      m_about = new AboutDialog();
      this.add(m_about);
     
      m_terms = new ToSDialog();
      this.add(m_terms);
     
      m_openAbout = new Button(translated.get(3));
      m_openAbout.setSize(64, 32);
      m_openAbout.setLocation(800 - 64 - 8, 8);
      m_openAbout.setVisible(false);
      m_openAbout.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
          showAbout();
        }
      });
      this.add(m_openAbout);
     
      m_openToS = new Button(translated.get(4));
      m_openToS.setSize(64, 32);
      m_openToS.setLocation(800 - 64 - 8, 40);
      m_openToS.setVisible(false);
      m_openToS.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
          showToS();
        }
      });
      this.add(m_openToS);
     
      setClientRevision();
     
      m_serverRev = new Label("Server Version: ?");
      m_serverRev.setFont(GameClient.getFontSmall());
      m_serverRev.setForeground(new Color(255, 255, 255));
      m_serverRev.pack();
      m_serverRev.setLocation(m_clientRev.getX() + m_clientRev.getWidth() + 16,
          m_clientRev.getY());
      m_serverRev.setVisible(true);
      this.add(m_serverRev);

      this.setLocation(0, 0);
      this.setSize(800, 600);
      this.setVisible(true);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
 
  /**
   * Sets the server version to be displayed
   * @param rev
   */
  public void setServerRevision(String rev) {
    m_serverRev.setText("Server Version: r" + rev);
    m_serverRev.pack();
    m_serverRev.setLocation(m_clientRev.getX() + m_clientRev.getWidth() + 16,
        m_clientRev.getY());
  }
 
  /**
   * Displays client version (ThinClient Version) based on rev.txt
   * If rev.txt is not found, ? is displayed
   */
  private void setClientRevision() {
    String path = System.getProperty("res.path");
    if (path == null || path.equalsIgnoreCase("NULL")) {
      path = "./";
    }
    File f = new File(path + "/.svn/entries");

    try {
      if (f.exists()) {
        Scanner s = new Scanner(f);
        s.nextLine();
        s.nextLine();
        s.nextLine();

        m_clientRev = new Label("Client Version: svn:" + s.nextLine());
        f = new File(path + "rev.txt");
        s = new Scanner(f);
        m_clientRev.setText(m_clientRev.getText() + " // rev:" + s.nextLine());
       
      } else {
        f = new File(path + "rev.txt");
        Scanner s;
        s = new Scanner(f);

        m_clientRev = new Label("Client Version: r" + s.nextLine());
      }
    } catch (Exception e) {
      System.out.println(e.getMessage());
      m_clientRev = new Label("Client Version: ?");
    }
   
    m_clientRev.setFont(GameClient.getFontSmall());
    m_clientRev.setForeground(new Color(255, 255, 255));
    m_clientRev.pack();
    m_clientRev.setLocation(4, 600 - m_clientRev.getHeight() - 8);
    this.add(m_clientRev);

  }

  /**
   * Shows the login dialog
   */
  public void showLogin() {
    m_login.reloadStrings();
    m_select.setVisible(false);
    m_register.setVisible(false);
    m_login.setVisible(true);
    m_openAbout.setVisible(true);
    m_openToS.setVisible(true);
    m_login.getLoginButton().setEnabled(true);
    m_lang.setVisible(false);
  }
 
  /**
   * Shows the registration dialog
   */
  public void showRegistration() {
    m_select.setVisible(false);
    m_login.setVisible(false);
    m_openAbout.setVisible(true);
    m_openToS.setVisible(true);
    m_lang.setVisible(false);
    m_register.reloadStrings();
    m_register.setVisible(true);
    m_register.grabFocus();
  }
 
  /**
   * Shows the server selection dialog
   */
  public void showServerSelect() {
    m_register.setVisible(false);
    m_login.setVisible(false);
    m_select.reloadStrings();
    m_select.setVisible(true);
    m_openAbout.setVisible(false);
    m_openToS.setVisible(false);
    m_lang.setVisible(false);
  }
 
  /**
   * Shows the server selection dialog
   */
  public void showLanguageSelect() {
    m_register.setVisible(false);
    m_login.setVisible(false);
    m_select.setVisible(false);
    m_lang.setVisible(true);
    m_openAbout.setVisible(false);
    m_openToS.setVisible(false);
  }
 
  /**
   * Shows about dialog
   */
  public void showAbout() {
    m_about.reloadStrings();
    m_about.setVisible(true);
  }
 
  /**
   * Shows the terms of service dialog
   */
  public void showToS() {
    m_terms.reloadStrings();
    m_terms.setVisible(true);
  }
 
  /**
   * Enables the login button
   */
  public void enableLogin() {
    m_login.getLoginButton().setEnabled(true);
  }
 
   /**
     * Returns the register screen
     * @return
     */
  public RegisterDialog getRegistration() {
    return m_register;
  }
  /**
   * Logs the user with current user and pass, this way they don't have to click "Login".
   * @return
   */
  public void enterKeyDefault() {
    if (!m_lang.isVisible()){
      if(m_select.isVisible()){
        m_select.goServer();
      }else{
        m_login.goLogin();
      }
    }
  }
 
  /**
     * Tabs on Login for easy login. Redundant?
     * @return
     */
  public void tabKeyDefault() {
    if(m_register.isActive()){
      m_register.goToNext();
    }else{
      m_login.goToPass();
    }
  }
}
TOP

Related Classes of org.pokenet.client.ui.LoginScreen

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.