//
//
//  Generated by StarUML(tm) Java Add-In
//
//  @ Project : Untitled
//  @ File Name : IHM_Acteur.java
//  @ Date : 20/01/2008
//  @ Author : 
//
//



package IHM;

import Documents.Element;
import java.io.*;


public  class IHM_Acteur {
        public Gestion.Fabrique gestionnaire =  Gestion.Fabrique.getInstance();
          
        
	public void AfficherDoc()  {
            int ref = 0;
            System.out.println("Entrez le numero du document à afficher:");
            BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
            try {ref = new Integer(bfr.readLine());}
            catch(IOException e) {e.printStackTrace();}
            try{
                Documents.Section doc = (Documents.Section) gestionnaire.getElement(ref);
                System.out.println(doc.afficherFils());}
            catch(IndexOutOfBoundsException e) {System.out.println("Element inexistant!");}
	}
	public Documents.Element getDocument() {
            int ref = 0;
            System.out.println("Entrez le numero du document:");
            BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
            try {ref = new Integer(bfr.readLine());}
            catch(IOException e) {e.printStackTrace();}
            try{return gestionnaire.getElement(ref);}
            catch(IndexOutOfBoundsException e) {System.out.println("Element inexistant!");}
            return null;
        }
	public  void listeDocuments() {
            for(int j = 0;j<30;j++)
            {System.out.println("");}
            for(int i = 1; i < gestionnaire.documents.size();i++)
            {
                Element e = gestionnaire.getElement(i);        
                if(e instanceof Documents.Section)
                {
                    if(e.getNiveau() == 0)
                       System.out.println(e.afficher());
                }
            }
            try{new BufferedReader(new InputStreamReader(System.in)).readLine();}
            catch(IOException e) {}
	}
        public void noter() {
            int ref = 0;
            System.out.println("Entrez le numero du document à noter:");
            BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
            try {ref = new Integer(bfr.readLine());}
            catch(IOException e) {e.printStackTrace();}
            try{
                Element el = gestionnaire.getElement(ref);
                System.out.println("Entrez la note:");
                try {int note = new Integer(bfr.readLine());
                    el.setCoeff(note);
                    }
                catch(IOException e) {System.out.println("La note entrée n'est pas correcte!");}
            }
            catch(IndexOutOfBoundsException e) {System.out.println("Element inexistant!");
            }
            
	}
	
	public void annoter() {
	    int ref = 0;
            System.out.println("Entrez le numero du document à noter:");
            BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
            try {ref = new Integer(bfr.readLine());}
            catch(IOException e) {e.printStackTrace();}
            try{
                Element el = gestionnaire.getElement(ref);
                System.out.println("Entrez l'annotation:");
                try {
                    String annot = bfr.readLine();
                    el.setAnnotation(annot);
                }
                catch(IOException e) {System.out.println("Entrée incorrecte!");}
            }
            catch(IndexOutOfBoundsException e) {System.out.println("Element inexistant!");
            }
	}
        public void creerDocument() {
         System.out.println("Entrez le titre du document :");
         BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
         String titre="";
            try {
                      /** Lecture d'une ligne : */
                titre = bfr.readLine();
                this.gestionnaire.CreateElem(titre);
            } catch( IOException e ) {System.out.println("Titre incorrect");} 
	}
	
	public void supprimerDocument() {
            Documents.Element el = this.getDocument();
            System.out.println("Selectionnez le document cible ****");
            Documents.Element cbl = this.getDocument();
            if(cbl instanceof Documents.Section)
            {
                Documents.Section sec = (Documents.Section) cbl;
                sec.addElement(el);
                el.Conteneur.removeElement(el);
            }
            else
            {
                System.out.println("L'element cible n'est pas une section");
            }
            
        }
        public int identifier() {
            int rep = 1;
            System.out.println("Pour vous logguer en tant que redacteur, entrez votre code de 3 lettres:");
            BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
            String code="";
            try {
                      /** Lecture d'une ligne : */
                code = bfr.readLine();
            } catch( IOException e ) {e.printStackTrace();} 
            if(code.equals("RED"))
            {rep = 2;}
            else if (code.equals("FIN"))
            {rep = 3;}
            return rep;
        }
        public static void main(String[] args){
           
           IHM_Acteur ihm = new IHM_Acteur();
           jeuDeDonnees(ihm);
           int type = ihm.identifier();
            while(type != 3)
            {
                if(type == 1)
                { ihmLecteur(ihm);}
                else
                {ihmRedacteur(ihm);}
                type= ihm.identifier();
            }
        }
        public static void ihmLecteur(IHM_Acteur ihm) 
        {
            String ligne = "";
            BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));

            while(!(ligne.equals("FIN")))
            {
                menuLec();
                try {
                System.out.println("Entrez votre choix: ");
                ligne = bfr.readLine();
                }catch( IOException e ) {e.printStackTrace();} 
                
                int choix = new Integer(ligne);
                switch(choix) {
                    case 1: ihm.listeDocuments(); break;
                    case 2: ihm.AfficherDoc(); break;
                    case 3: ihm.annoter(); break;
                    case 4: ihm.noter(); break;
                    case 5: ligne = "FIN"; break;
                }
            }
        }
        public void creerElement(IHM_Acteur ihm)
        {
            String ligne ="";
            BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
             menuElem();
             try {
                System.out.println("Entrez votre choix: ");
                ligne = bfr.readLine();
                }catch( IOException e ) {e.printStackTrace();} 
                
                int choix = new Integer(ligne);
                switch(choix) {
                    case 1: ihm.listeDocuments(); break;
                    case 2: ihm.creerSection(); break;
                    case 3: ihm.creerTexte(); break;
                    case 4: ihm.creerImage(); break;
                    case 5: ligne = "FIN"; break;
                }
            
        }
        public static void ihmRedacteur(IHM_Acteur ihm)
        {
             String ligne = "";
            BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));

            while(!ligne.equals("FIN"))
            {
                menuRed();
                try {
                System.out.println("Entrez votre choix:");
                ligne = bfr.readLine();
                int choix = new Integer(ligne);
                switch(choix) {
                    case 1: ihm.listeDocuments(); break;
                    case 2: ihm.AfficherDoc(); break;
                    case 3: ihm.creerDocument(); break;
                    case 4: ihm.creerElement(ihm); break;
                    case 5: ihm.supprimerDocument(); break;
                    case 6: ligne = "FIN"; break;
                }
                }catch( IOException e ) {e.printStackTrace();} 
            }
        }
        public void creerSection() {
            Documents.Section el = (Documents.Section) this.getDocument();
            System.out.println("Entrez le titre de la section à ajouter:");
            BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
            try{String titre = bfr.readLine();
            Documents.Section sec= this.gestionnaire.CreateElem(titre);
            if(sec == null)
            {return;}
            el.addElement(sec);}
            catch(IOException e) {System.out.println("Pas bien!");}
            
        }
        public void creerTexte() {
            Documents.Section el = (Documents.Section) this.getDocument();
            System.out.println("Entrez l'auteur du texte:");
            BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
            try{String auteur = bfr.readLine();
                System.out.println("Saisissez le texte:");
                String texte = bfr.readLine();
            Documents.Texte txt= this.gestionnaire.CreateElem(texte, auteur);
            if(txt == null)
            {return;}
            el.addElement(txt);}
            catch(IOException e) {System.out.println("Pas bien!");}
        }
        public void creerImage() {
            Documents.Section el = (Documents.Section) this.getDocument();
            System.out.println("Entrez la legende de l'image:");
            BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
            try{String legende = bfr.readLine();
                System.out.println("Saisissez la hauteur:");          
                String hauteur = bfr.readLine();
                String largeur = bfr.readLine();
            Documents.Figure img= this.gestionnaire.CreateElem(new Integer(hauteur),new Integer(largeur), legende);
            if(img == null)
            {return;}
            el.addElement(img);}
            catch(IOException e) {System.out.println("Pas bien!");}
            catch(NumberFormatException nfe)  {System.out.println("Faut ecrire des chiffres hein...");}
        }
        public static void menuLec() {
           System.out.println("1: Lister les documents");        
           System.out.println("2: Afficher un document");
           System.out.println("3: Annoter un document");
           System.out.println("4: Noter un document");
           System.out.println("5: Se déconnecter");
        }
        
         public static void menuRed() {
           System.out.println("1: Lister les documents");        
           System.out.println("2: Afficher un document");
           System.out.println("3: Créer un document");
           System.out.println("4: Créer un element et l'ajouter");
           System.out.println("5: Deplacer un element");
           System.out.println("6: Se déconnecter");
        }
        public static void menuElem() {
           System.out.println("1: Lister les documents");        
           System.out.println("2: Créer et ajouter une section");
           System.out.println("3: Créer et ajouter un texte");
           System.out.println("4: Créer et ajouter une image");
           System.out.println("5: Revenir au menu");
        
        }
        
	/**	

	**/
        public static void jeuDeDonnees(IHM_Acteur ihm){

	/* Creation du document */
	Documents.Section el = ihm.gestionnaire.CreateElem("Chasse à la mouche");

	/* Creation d'une section */
	Documents.Section el2 = ihm.gestionnaire.CreateElem("Chapitre 1");
        el.addElement(el2);

	/* Ajout de texte */
	el2.addElement(ihm.gestionnaire.CreateElem("Prenez un morceau de tissu vaudoux fraîchement récupéré d'un cadavre.","DOSSMANN"));

	/* Ajout d'image */
        
	el2.addElement(ihm.gestionnaire.CreateElem(150,150,"Image d'un cadavre vaudoux"));

	Documents.Section el3 = ihm.gestionnaire.CreateElem("Chapitre 2");
	el.addElement(el3);
	el3.addElement(ihm.gestionnaire.CreateElem("Trouvez une mouche"));

	Documents.Section el4 = ihm.gestionnaire.CreateElem("Chapitre 3");
	el.addElement(el4);
	el4.addElement(ihm.gestionnaire.CreateElem("Lancez le tissu vaudoux au dessus de la mouche et patientez que la mouche vienne se loger dans le tissu, après quoi le tissu prend pleine possession de ladite mouche.","LEVAL"));


	/* Création d'un autre document */
	Documents.Section doc = ihm.gestionnaire.CreateElem("Javana Split");

	Documents.Section doc2 = ihm.gestionnaire.CreateElem("Chapitre 1");
	doc.addElement(doc2);
	doc2.addElement(ihm.gestionnaire.CreateElem("Faites une application Java, lancez, cela plante ! Beau Javana Split que nous avons là !","DIVOUX"));
        }

}
