Package gui

Source Code of gui.GUIController

package gui;

import gui.ComponentSwitcher.ComponentChoice;

import java.awt.Color;
import java.io.IOException;
import java.util.*;

import javax.swing.*;

import domain.IRCController;

/**
* Klasse GUIController.
* Is de Controller van alles wat er in de GUI gebeurt (Facade-pattern).
* Alle communicatie naar de GUI toe loopt via de GUIController.
* Is ook een observer (Observerpattern).
* @author Maarten Minnebo, David Covemaeker, Tim Van Thuyne, Toon Kin
*/
public class GUIController implements Observer
  private IRCController ircController;
  private MainFrame mainFrame;
  private String startChannel;
  private IRCScherm tabs;
  private Color bgc;
  private Color bgcl;
 
  /**
   * Is de constructor van de klasse.
   * Zal de IRCController aanmaken en het MainFrame.
   * Zet ook het MainFrame in de LaadScherm - modus
   */
  public GUIController()
  {
    initIrcController();
    mainFrame = new MainFrame(this);

    bgc = new Color(239, 228, 176);
    bgcl = new Color(250, 240, 210);
   
    UIManager.put("TabbedPane.selected", bgc);
    UIManager.put("TabbedPane.borderHightlightColor", bgc);
    UIManager.put("TabbedPane.contentAreaColor", bgc);
    UIManager.put("TabbedPane.background", bgcl);
    UIManager.put("TabbedPane.focus", bgc);
    UIManager.put("TabbedPane.darkShadow", Color.WHITE);
   
    mainFrame.switchToComponent(this, ComponentChoice.WelcomeScherm);
  }
  /**
   * Functie wordt opgeroepen door GUIController.
   * Zal de IRCController aanmaken.
   * Zal de GUIController (this) inschrijven als observer bij de IRCController
   */
  public void initIrcController()
  {
    ircController = new IRCController(this);
    ircController.addObserver(this);
  }

  /**
   * Overridefunctie van de update()-functie van de observer
   * Zal aangeroepen worden wanneer door het Subject wanneer die gewijzigd is.
   * Deze functie zal doen een extra tab openen op het scherm.
   * Wanneer er nog geen tabs voor handen zijn zal hij eerst het mainFrame in modus 'IRCScherm' zetten.
   */
  @Override
  public void update(Observable o, Object arg)
  {
    if(tabs == null)
    {
      mainFrame.switchToComponent(this, ComponentChoice.IRCScherm);
      tabs = (IRCScherm) mainFrame.getContentPane();
     
      tabs.addNewChannelTab(startChannel);
    }
    else
    {
      tabs.addTab((String) arg, new Tab(ircController, (String) arg));
    }
  }

  /**
   * Functie die de gegevens uit de GUI zal doorsturen naar de IRCController om connectie te maken met de server.
   * @param server URL van de gewenste IRC-server
   * @param port Poortnummer van de gewenste poort om te communiceren
   * @param channel Naam van het kanaal (String) waarop men wil intekenen
   * @param nick Nickname (String) van de gebuiker
   * @return boolean false wanneer connectie mislukt, boolean true wanneer geslaagd.
   */
  protected boolean submitData(String server, int port, String channel, String nick)
  {
    boolean connected = false;
   
    try
    {
      connected = ircController.connect(server, nick, port);
     
      startChannel = channel;
     
      return connected;
    }
    catch (IOException e)
    {
      JOptionPane.showMessageDialog(mainFrame.getContentPane(), "Verbinding met IRC server is mislukt.", "Netwerkfout", JOptionPane.ERROR_MESSAGE);
    }
   
    return connected;
  }
 
  /**
   * Functie die de IRCController zal aanroepen om de verbinding te verbreken
   */
  protected void disconnect()
  {
    try
   
      ircController.disconnect();
    }
    catch(IOException ioe)
    {
      JOptionPane.showMessageDialog(mainFrame.getContentPane(), "Er was een fout bij het verbreken van de verbinding.", "Verbindingsfout", JOptionPane.ERROR_MESSAGE);
    }
  }
 
  /**
   * Functie de IRCController teruggeeft ('getter')
   * @return
   */
  protected IRCController getIrcController()
  {
    return ircController;
  }
 
  /**
   * Functie die de MainFrame teruggeeft. ('getter')
   * @return
   */
  public MainFrame getMainFrame()
  {
    return mainFrame;
  }
}
TOP

Related Classes of gui.GUIController

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.