Package view

Source Code of view.DeleteLine

package view;

import javax.swing.JComboBox;
import javax.swing.JOptionPane;

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

/**
* La classe <b>DeleteLine</b> hérite de la classe abstraite DeleteDatas
* et permet de supprimer une ligne
*
* @version 1.0
* @author Pierre Facq
* @author Alan Grente-Lequertier
* @author Alexandre Paris-Vergne
* @author Thomas Sileghem
*
* @see Line
*
*/
public class DeleteLine extends DeleteDatas{

  Line temp;
  int positionInList;
 
  /**
   * Initialise une DeleteLine avec une ligne vide
   *
   * @param controller le controlleur principal du logiciel
   */
  public DeleteLine(Controller controller) {
    super();
    this.temp = new Line();
    this.controller = controller;
  }

  /**
   * Lance une pop-up permettant de choisir la ligne à supprimer
   */
  @Override
  public void choicePopup() {
    String[] lines = controller.getLinesNames();
   
    //Crée une liste déroulante avec système d'autocomplétion contenant
    //les noms des lignes
    JComboBox line = new JComboBox();
    AutoCompleteSupport support = AutoCompleteSupport.install(
            line, GlazedLists.eventListOf(lines));
   
    //Crée un message contenant une chaîne de caractères et la liste déroulante
    Object[] message = new Object[] { "Ligne : ", line};
   
    //Crée la pop-up contenant le message
    int r = JOptionPane.showConfirmDialog(null, message,
        "Choisir la ligne à supprimer", JOptionPane.OK_CANCEL_OPTION);
   
    //Si l'utilisateur a cliqué sur le bouton "OK"
    if (r == JOptionPane.OK_OPTION) {
      temp.setName(line.getSelectedItem().toString());
      confirmPopup();
    }
  }

  /**
   * Lance la pop-up permettant de confirmer la suppression des données
   */
  @Override
  public void confirmPopup() {
    temp=controller.copyLine(temp);
    if(temp==null)
    {
      errorPopup("noLine");
      return;
    }
   
    //Récupère la position de la ligne dans la liste de lignes
    positionInList=controller.positionInListLine(temp);
   
    //Message contenant des chaînes de caractères et le nom de la ligne à supprimer
    Object[] message = new Object[] { "Voulez-vous vraiment supprimer la ligne "+temp.getName()+" ?\n",
        "Attention, les horaires liés à cette ligne seront également supprimés"};
   
    //Lance la pop-up de suppression contenant le message
    int r = JOptionPane.showConfirmDialog(null, message,
        "Suppression", JOptionPane.OK_CANCEL_OPTION);
   
    //Si l'utilisateur a cliqué sur le bouton "OK"
    if (r == JOptionPane.OK_OPTION) {
      //On supprime la ligne et les horaires liés à celle-ci
      controller.deleteLineAndTimetables(positionInList, temp.getName());
    }
  }
 
  /**
   * 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 "noLine" :
      JOptionPane.showMessageDialog(null,"Erreur, ligne non existante");
    break;
    }
  }
}
TOP

Related Classes of view.DeleteLine

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.