Package domain

Source Code of domain.IRC

package domain;

import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.DefaultListModel;
import javax.swing.ListModel;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.Style;
import javax.swing.text.StyleContext;
import javax.swing.text.StyledDocument;

/**
* Met de klasse IRC wordt de chat zelf voorgesteld.
* De klasse is de superklasse van de klasse IRCChannel waardoor de variabelen en methoden protected moeten zijn.
* Het bevat methoden die zaken toevoegt aan het StyledDocument, methodes voor de DefaultListModel en twee get-methoden voor de gui:
* 1 voor het StyledDocument en 1 voor de DefaultListModel.
* @author David Covemaeker, Maarten Minnebo, Tim Van Thuyne, Toon Kint
*/

public class IRC
{
  protected Style style;
  protected StyledDocument styledDocument;
  protected DefaultListModel listModel;
 
  /**
   * De constructor maakt het StyledDocument en de DefaultListModel aan.
   * @param login De naam van degene die ingelogd is
   */
  protected IRC (String login)
  {
    StyleContext styleContext = new StyleContext();
    style = styleContext.getStyle(StyleContext.DEFAULT_STYLE);
    styledDocument = new DefaultStyledDocument(styleContext);
   
    listModel = new DefaultListModel();
    listModel.addElement(login);
  }
 
  /**
   * Geeft de tijd weer van wanneer het bericht geschreven is.
   * Ervoor zorgen dat berichten steeds op dezelfde hoogte beginnen door een 0 te plaatsen als het uur tussen 1 en 9uur ligt.
   * Voorbeeld van de vorm: 10u45m55s wordt 10:45:50
   * @return "(uu:mm:ss) "
   */
  protected String giveTime()
  {
    Calendar calendar = new GregorianCalendar();
   
    int h = Calendar.HOUR_OF_DAY;
    int m = Calendar.MINUTE;
    int s = Calendar.SECOND;
   
    String hours = (calendar.get(h) > 9) ? "" + (calendar.get(h)) : "0" + calendar.get(h);
    String minutes = (calendar.get(m) > 9) ? "" + (calendar.get(m)) : "0" + calendar.get(m);
    String seconds = (calendar.get(s) > 9) ? "" + (calendar.get(s)) : "0" + calendar.get(s);

    return "(" + hours + ":" + minutes + ":" + seconds + ")" + " ";
  }
 
  /**
   * De message in de juiste vorm aan het StyledDocument toevoegen.
   * Voorbeeld:
   * (09:15:50) JAVA1: Ik ga verder werken...
   * @param login De naam van degene die ingelogd is
   * @param message Het bericht dat geschreven is
   */
  protected void addChatMessage(String login, String message)
  {
    try
    {
      styledDocument.insertString(styledDocument.getLength(), giveTime() + login + ": " + message + "\n", style);
    }
    catch(BadLocationException e)
    {
      e.printStackTrace();
   
  }
 
  /**
   * Zorgt ervoor dat een boodschap wordt toegevoegd aan het StyledDocument als iemand uit het kanaal de chat verlaten heeft.
   * Daarbij controleren op de 3 mogelijke gebruikers:
   * de gewone gebruiker, voiced of operator
   * --> Na een QUIT message...
   * @param login De naam van degene die ingelogd is
   * @param reason De reden van het verlaten van de chat
   */
  protected void addClientQuitServerMessage(String login, String reason)
  {
    if (listModel.contains(login) || listModel.contains("@" + login) || listModel.contains("+" + login))
    {
      try
      {
        styledDocument.insertString(styledDocument.getLength(), giveTime() + login + " heeft de chatserver verlaten: " + reason +
            "\n", style);
      }
      catch (BadLocationException e)
      {
        e.printStackTrace();
      }
    }
  }
 
  /**
   * Zorgt ervoor dat een boodschap wordt toegevoegd aan het StyledDocument als iemand uit het kanaal zijn loginnaam veranderd heeft.
   * @param oldName De oude loginnaam
   * @param newName De nieuwe loginnaam
   */
  protected void addNickChangeMessage(String oldName, String newName)
  {
    if (listModel.contains(oldName) || listModel.contains("@" + oldName) || listModel.contains("+" + oldName))
    {
      try
      {
        styledDocument.insertString(styledDocument.getLength(), giveTime() + " " + oldName + " heeft zijn nickname veranderd naar "
            + newName + ".\n" , style);
      }
      catch (BadLocationException e)
      {
        e.printStackTrace();
     
    }
  }
 
  /**
   * In de DefaultListModel met de users de loginnaam van de bepaalde user veranderen.
   * Controleren op de drie naam varianten:
   * De gewone user, voiced of operator.
   * @param oldName De oude loginnaam
   * @param newName De nieuwe loginnaam
   */
  protected void changeLoginName(String oldName, String newName)
  {
    if (listModel.contains(oldName))
    {
      listModel.set(listModel.indexOf(oldName), newName);
    }
     
    if (listModel.contains("@" + oldName))
    {
      listModel.set(listModel.indexOf(oldName), "@" + newName);
    }
     
    if (listModel.contains("+" + oldName))
    {
      listModel.set(listModel.indexOf(oldName), "+" + newName);
    }   
  }
 
  /**
   * @return Geef de DefaultListModel terug
   */
  public ListModel getListModel()
  {
    return listModel;
  }
 
  /**
   * @return Geeft de StyledDocument terug
   */
  public StyledDocument getStyledDocument()
  {
    return styledDocument;
  }
}
TOP

Related Classes of domain.IRC

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.