Package view

Source Code of view.AlterStations

package view;

import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.UIManager;

import ca.odell.glazedlists.GlazedLists;
import ca.odell.glazedlists.swing.AutoCompleteSupport;
import model.Line;
import model.Station;
import model.Timetable;
import controller.Controller;

/**
* La classe <b>AlterStations</b> hérite de la classe abstraite AlterDatas
* et permet de modifier les informations d'une station
*
* @version 1.0
* @author Pierre Facq
* @author Alan Grente-Lequertier
* @author Alexandre Paris-Vergne
* @author Thomas Sileghem
*
* @see Station
*
*/
public class AlterStations extends AlterDatas {

  Station temp;
  Station temp2;
  int positionInList;

  /**
   * Initialise une AlterStations avec deux stations vides
   *
   * @param controller le controlleur principal du logiciel
   */
  public AlterStations(Controller controller) {
    super();
    this.temp = new Station();
    this.temp2 = new Station();
    this.controller = controller;
  }

  /**
   * Lance une pop-up permettant de choisir la ligne à modifier
   */
  @Override
  public void choicePopup() {
    String[] stations = controller.getStationsNames();
   
    //Crée une liste déroulante avec système d'autocomplétion contenant
    //le nom des station
    JComboBox station = new JComboBox();
    AutoCompleteSupport support = AutoCompleteSupport.install(
            station, GlazedLists.eventListOf(stations));
   
    //Crée un message contenant une chaîne de caractères et la liste déroulante
    Object[] message = new Object[] { "Station : ", station};
   
    //Crée la pop-up contenant le message
    int r = JOptionPane.showConfirmDialog(null, message,
        "Choisir la station à modifier", JOptionPane.OK_CANCEL_OPTION);
   
    //Si l'utilisateur a cliqué sur le bouton "OK"
    if (r == JOptionPane.OK_OPTION) {
      temp.setName(station.getSelectedItem().toString());
      temp2.setName(station.getSelectedItem().toString());
      alterPopup();
    }
  }
 
  /**
   * Lorsque la modification est lancée depuis un clic droit, place le nom
   * de la station sélectionnée par le clic droit dans les deux stations temporaires
   *
   * @param station la station concernée par le clic droit
   */
  public void setStation(Station station)
  {
    this.temp = new Station();
    temp.setName(station.getName());
    temp2.setName(station.getName());
  }

  /**
   * Lance la pop-up permettant de modifier les informations de la ligne sélectionnée
   */
  @Override
  public void alterPopup() {
    temp=controller.copyStation(temp);
   
    //Vérifie que la station existe bien
    if(temp==null)
    {
      errorPopup("noStation");
      return;
    }
    temp=new Station(temp);
   
    //Récupère la position de la station dans la liste de stations
    positionInList=controller.positionInListStation(temp);
   
    //Champ de texte modifiable contenant le nom de la station
    JTextField name = new JTextField(temp.getName());
   
    //Champ de texte modifiable contenant le nom de la ville
    //dans laquelle est située la station
    JTextField cityName = new JTextField(temp.getCityName());
   
    //Message contenant les 2 champs de texte
    Object[] message = new Object[] { name, cityName};
   
    //Lance la pop-up de modification contenant le message
    int r = JOptionPane.showConfirmDialog(null, message,
        "Modifiez les valeurs", JOptionPane.OK_CANCEL_OPTION);
   
    //Si l'utilisateur a cliqué sur le bouton "OK"
    if (r == JOptionPane.OK_OPTION) {
      temp.setName(name.getText());
      temp.setCityName(cityName.getText());

      confirmPopup();
    }
  }

  /**
   * Lance la pop-up permettant de confirmer la modification des données
   */
  @Override
  public void confirmPopup() {
    temp2=controller.copyStation(temp2);
   
    //Message contenant des chaînes de caractères et les nouvelles données de la station
    Object[] message = new Object[] {
        "Nom de la station : " + temp.getName(),
        "Ville : " + temp.getCityName() };
   
    //On change le nom du bouton "OK" par "Valider"
    UIManager.put("OptionPane.okButtonText", "Valider");
   
    //Lance la pop-up de confirmation
    int r = JOptionPane.showConfirmDialog(null, message,
        "Vérifiez vos informations", JOptionPane.OK_CANCEL_OPTION);
   
    //Si l'utilisateur a cliqué sur le bouton "Valider"
    if (r == JOptionPane.OK_OPTION) {
      temp2.setName(temp.getName());
      temp2.setCityName(temp.getCityName());
     
      //Modification de la station
      controller.alterStation(temp2,positionInList);
    }
  }
 
  /**
   * Lance une pop-up avec un message en cas d'erreur
   * @param error une chaîne de caractères identifiant l'erreur
   */
  private void errorPopup(String error) {
    switch (error)
    {
    case "noStation" :
      JOptionPane.showMessageDialog(null,"Erreur, station non existante");
    break;
    }
  }
}
TOP

Related Classes of view.AlterStations

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.