Mise en place des methodes pour l'implementation de la deuxieme partie
This commit is contained in:
parent
3545112960
commit
f0de008617
4 changed files with 163 additions and 122 deletions
|
@ -1,7 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.RadioButton?>
|
||||
<?import javafx.scene.control.TextField?>
|
||||
<?import javafx.scene.control.ToggleGroup?>
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
<?import javafx.scene.layout.ColumnConstraints?>
|
||||
<?import javafx.scene.layout.GridPane?>
|
||||
|
@ -24,24 +26,34 @@
|
|||
</Text>
|
||||
</children>
|
||||
</HBox>
|
||||
<HBox alignment="CENTER" prefHeight="304.0" prefWidth="600.0" style="-fx-background-color: #3299a8;">
|
||||
<HBox alignment="CENTER" prefHeight="304.0" prefWidth="598.0" style="-fx-background-color: #3299a8;">
|
||||
<children>
|
||||
<GridPane alignment="CENTER" prefHeight="302.0" prefWidth="279.0">
|
||||
<GridPane alignment="CENTER" prefHeight="275.0" prefWidth="448.0">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="254.19998168945312" minHeight="10.0" prefHeight="123.19998779296876" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="217.80000152587894" minHeight="10.0" prefHeight="107.20001220703125" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="254.19998168945312" minHeight="10.0" prefHeight="111.80001831054688" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="217.80000152587894" minHeight="10.0" prefHeight="69.39998168945314" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="217.80000152587894" minHeight="10.0" prefHeight="33.60002441406249" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="217.80000152587894" minHeight="10.0" prefHeight="27.400000000000034" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="217.80000152587894" minHeight="10.0" prefHeight="79.39999999999998" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<children>
|
||||
<TextField fx:id="pseudonyme" prefHeight="26.0" prefWidth="447.0" promptText="Pseudonyme" GridPane.columnSpan="2" />
|
||||
<Button fx:id="connexionButton" alignment="CENTER" contentDisplay="CENTER" mnemonicParsing="false" onAction="#connexion" prefHeight="38.0" prefWidth="287.0" style="-fx-background-color: #b0c926;" text="Connexion" textFill="#3299a8" GridPane.columnSpan="2" GridPane.rowIndex="1">
|
||||
<TextField fx:id="pseudonyme" prefHeight="26.0" prefWidth="447.0" promptText="Pseudonyme" GridPane.columnSpan="3" />
|
||||
<Button fx:id="connexionButton" alignment="CENTER" contentDisplay="CENTER" mnemonicParsing="false" onAction="#connexion" prefHeight="38.0" prefWidth="453.0" style="-fx-background-color: #b0c926;" text="Connexion" textFill="#3299a8" GridPane.columnSpan="3" GridPane.rowIndex="1">
|
||||
<font>
|
||||
<Font name="OCR A Extended" size="27.0" />
|
||||
</font>
|
||||
</Button>
|
||||
<RadioButton fx:id="remoteButton" mnemonicParsing="false" selected="true" text="Connexion distante" GridPane.columnIndex="1" GridPane.rowIndex="3">
|
||||
<toggleGroup>
|
||||
<ToggleGroup fx:id="lieu" />
|
||||
</toggleGroup>
|
||||
</RadioButton>
|
||||
<RadioButton fx:id="localButton" mnemonicParsing="false" text="Connexion locale" toggleGroup="$lieu" GridPane.columnIndex="1" GridPane.rowIndex="2" />
|
||||
</children>
|
||||
</GridPane>
|
||||
</children>
|
||||
|
|
|
@ -1,39 +1,39 @@
|
|||
chatapp/Launcher.java
|
||||
chatapp.Launcher
|
||||
chatapp/View/Clavardage.java
|
||||
chatapp.View.Clavardage
|
||||
chatapp.View.Clavardage$1
|
||||
chatapp/View/DemarrerSession.java
|
||||
chatapp.View.DemarrerSession
|
||||
chatapp/Protocol/RunnerEcouteUDP.java
|
||||
chatapp.Protocol.RunnerEcouteUDP
|
||||
chatapp/Model/Utilisateur.java
|
||||
chatapp.Model.Utilisateur
|
||||
chatapp/View/View_Utilisateurs.java
|
||||
chatapp.View.View_Utilisateurs
|
||||
chatapp/View/ChangementPseudo.java
|
||||
chatapp.View.ChangementPseudo
|
||||
chatapp/Model/MessageHorodate.java
|
||||
chatapp.Model.MessageHorodate
|
||||
chatapp/Model/ListUtilisateurs.java
|
||||
chatapp.Model.ListUtilisateurs
|
||||
chatapp/View/View_Menu.java
|
||||
chatapp.View.View_Menu
|
||||
chatapp/Protocol/RunnerEcouteTCP.java
|
||||
chatapp.Protocol.RunnerEcouteTCP
|
||||
chatapp/Protocol/UDPEchange.java
|
||||
chatapp.Protocol.RunnerUDP
|
||||
chatapp.Protocol.UDPEchange
|
||||
chatapp/Controller/ChatApp.java
|
||||
chatapp.Controller.ChatApp
|
||||
chatapp/Main.java
|
||||
chatapp.Main
|
||||
chatapp/Model/DataBase.java
|
||||
chatapp.Model.DataBase
|
||||
chatapp/Protocol/SessionClavardage.java
|
||||
chatapp.Protocol.SessionClavardage
|
||||
chatapp/Protocol/RunnerEcouteTCP.java
|
||||
chatapp.Protocol.RunnerEcouteTCP
|
||||
chatapp/View/FenetreSession.java
|
||||
chatapp.View.FenetreSession
|
||||
chatapp.View.FenetreSession$1
|
||||
chatapp/Controller/ChatApp.java
|
||||
chatapp.Controller.ChatApp
|
||||
chatapp/View/ChangementPseudo.java
|
||||
chatapp.View.ChangementPseudo
|
||||
chatapp/Protocol/RunnerEcouteUDP.java
|
||||
chatapp.Protocol.RunnerEcouteUDP
|
||||
chatapp/Model/ListUtilisateurs.java
|
||||
chatapp.Model.ListUtilisateurs
|
||||
chatapp/Protocol/UDPEchange.java
|
||||
chatapp.Protocol.RunnerUDP
|
||||
chatapp.Protocol.UDPEchange
|
||||
chatapp/Main.java
|
||||
chatapp.Main
|
||||
chatapp/View/Clavardage.java
|
||||
chatapp.View.Clavardage
|
||||
chatapp.View.Clavardage$1
|
||||
chatapp/Protocol/SessionClavardage.java
|
||||
chatapp.Protocol.SessionClavardage
|
||||
chatapp/View/ConnexionScreen.java
|
||||
chatapp.View.ConnexionScreen
|
||||
chatapp/View/View_Utilisateurs.java
|
||||
chatapp.View.View_Utilisateurs
|
||||
chatapp/View/View_Menu.java
|
||||
chatapp.View.View_Menu
|
||||
chatapp/View/DemarrerSession.java
|
||||
chatapp.View.DemarrerSession
|
||||
|
|
|
@ -31,6 +31,7 @@ public class ChatApp implements PropertyChangeListener {
|
|||
/* Liste des utilisateurs actifs */
|
||||
private ListUtilisateurs actifUsers ;
|
||||
|
||||
private boolean isExterne; // TRUE si l'utilisateur est externe au reseau FALSE s'il est interne
|
||||
/* ChatApp est associe a un utilisateur */
|
||||
private Utilisateur me;
|
||||
|
||||
|
@ -88,22 +89,40 @@ public class ChatApp implements PropertyChangeListener {
|
|||
}
|
||||
|
||||
|
||||
|
||||
/*public void majHistorique2(MessageHorodate mh, String pseudo) {
|
||||
Historique h = getMapHistorique().get(pseudo);
|
||||
//h.addMessage(mh);
|
||||
getMapHistorique().put(h.getUser2().getPseudo(),h);
|
||||
}*/
|
||||
|
||||
/**
|
||||
* <p>Methode appelee pour modifier le pseudo et fait appel a la fonction adequate selon que l'on est en interne ou en externe</p>
|
||||
* @param nouveau nouveau pseudo avec lequel on souhaite se renommer
|
||||
* @return TRUE si la modification du pseudo a reussi, FALSE sinon
|
||||
* @throws IOException
|
||||
*/
|
||||
public boolean modifierPseudo(String nouveau) throws IOException{
|
||||
if(this.isExterne()){
|
||||
return this.modifierPseudoExterne(nouveau);
|
||||
}
|
||||
else{
|
||||
return modifierPseudoInterne(nouveau);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Modification du pseudo de l'utilisateur
|
||||
* <p>Modification du pseudo de l'utilisateur en EXTERNE
|
||||
* Envoie ses informations utilisateurs et son nouveau pseudo au serveur de presence</p>
|
||||
*
|
||||
* @param nouveau correspond au nouveau pseudo
|
||||
* @return False si modiferPseudo a echoue, True sinon
|
||||
*/
|
||||
private boolean modifierPseudoExterne(String nouveau) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Modification du pseudo de l'utilisateur en INTERNE
|
||||
* Envoie en broadcast ses informations utilisateurs et son nouveau pseudo</p>
|
||||
*
|
||||
* @param nouveau correspond au nouveau pseudo
|
||||
* @return False si modiferPseudo a echoue, True sinon
|
||||
*/
|
||||
public Boolean modifierPseudo(String nouveau) throws IOException {
|
||||
public Boolean modifierPseudoInterne(String nouveau) throws IOException {
|
||||
// Message que l'on envoie à tous les utilisateurs actifs
|
||||
String broadcastMessage = "Demande Modification Pseudo\n" + this.getMe().toString() + "\n" + nouveau + "\n";
|
||||
UDPEchange.EnvoiBroadcast(broadcastMessage);
|
||||
|
@ -135,41 +154,41 @@ public class ChatApp implements PropertyChangeListener {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <p>Methode appelee lors de la connexion d'un nouvel utilisateur.
|
||||
* Il va prevenir les utilisateurs du reseau de son arrivee.</p>
|
||||
* @return False si Connexion a echoue, True sinon
|
||||
* <p>Methode permettant d'appeler la fonction de connexion adequate selon que l'on est en externe ou en interne</p>
|
||||
* @param pseudo Le pseudo avec lequel l'on souhaite se connecter
|
||||
* @return True si la connexion a ete autorisee, false sinon
|
||||
* @throws IOException
|
||||
*/
|
||||
public Boolean connexion() throws IOException {
|
||||
// Message que l'on envoie à tous les utilisateurs actifs
|
||||
String broadcastMessage = "Connexion\n" + this.getMe().toString() ;
|
||||
UDPEchange.EnvoiBroadcast(broadcastMessage);
|
||||
try {
|
||||
Thread.sleep(2000); // L'utilisateur doit attendre la reponse de tous les utilisateurs connectes
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
public boolean connexion(String pseudo) throws IOException{
|
||||
if(this.isExterne()){
|
||||
return this.connexionExterne(pseudo);
|
||||
}
|
||||
if (UDPEchange.getConnecte()) {
|
||||
System.out.println("Connexion reussie");
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
System.out.println("Connexion echoue");
|
||||
UDPEchange.setConnecte(true);
|
||||
return false ;
|
||||
else{
|
||||
return connexionInterne(pseudo);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Methode appelee lors de la connexion de l'utilisateur, va prevenir les autres
|
||||
* <p>Methode appelee lors de la connexion de l'utilisateur en EXTERNE, va prevenir le
|
||||
* serveur de presence de l'arrivee de l'utilisateur </p>
|
||||
* @param pseudo le pseudonyme avec lequel l'utilisateur souhaite se connecter
|
||||
* @return False si Connexion a echoue, True sinon
|
||||
* @throws IOException
|
||||
*/
|
||||
private boolean connexionExterne(String pseudo) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <p>Methode appelee lors de la connexion de l'utilisateur en INTERNE, va prevenir les autres
|
||||
* utlisateurs du reseau de l'arrivee de l'utilisateur sur celui-ci</p>
|
||||
* @param pseudo le pseudonyme avec lequel l'utilisateur souhaite se connecter
|
||||
* @return False si Connexion a echoue, True sinon
|
||||
* @throws IOException
|
||||
*/
|
||||
public Boolean connexion(String pseudo) throws IOException {
|
||||
public Boolean connexionInterne(String pseudo) throws IOException {
|
||||
// Message que l'on envoie à tous les utilisateurs actifs
|
||||
this.me.setPseudo(pseudo);
|
||||
String broadcastMessage = "Connexion\n" + this.getMe().toString() ;
|
||||
|
@ -220,12 +239,37 @@ public class ChatApp implements PropertyChangeListener {
|
|||
this.runnerEcouteUDP = new RunnerEcouteUDP(this);
|
||||
this.runnerEcouteUDP.start();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Methode appelee lors de la deconnexion de l'utilisateur.
|
||||
* La methode va appeler la fonction adequate selon que l'on est en interne ou en externe</p>
|
||||
*
|
||||
*/
|
||||
public void deconnexion() throws IOException{
|
||||
if(this.isExterne()){
|
||||
this.deconnexionExterne();
|
||||
}
|
||||
else{
|
||||
deconnexionInterne();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Methode appelee lors de la deconnexion en EXTERNE de l'utilisateur.
|
||||
* Il va prevenir le serveur de presence de son depart.</p>
|
||||
*
|
||||
*/
|
||||
private void deconnexionExterne() {
|
||||
// A IMPLEMENTER
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <p>Methode appelee lors de la deconnexion en INTERNE de l'utilisateur.
|
||||
* Il va prevenir les utilisateurs du reseau de son depart.</p>
|
||||
*
|
||||
*/
|
||||
public void deconnexion() throws IOException {
|
||||
public void deconnexionInterne() throws IOException {
|
||||
// Message que l'on envoie à tous les utilisateurs actifs
|
||||
String broadcastMessage = "Deconnexion\n" + this.getMe().toString() ;
|
||||
UDPEchange.EnvoiBroadcast(broadcastMessage);
|
||||
|
@ -257,39 +301,6 @@ public class ChatApp implements PropertyChangeListener {
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*public static void main (String[] args) throws IOException {
|
||||
ChatApp app = new ChatApp(args[0],Integer.parseInt(args[1]),this.app) ;
|
||||
System.out.println("On lance le chatapp");
|
||||
|
||||
|
||||
ExecutorService execUDP = Executors.newFixedThreadPool(1000);
|
||||
execUDP.submit(new RunnerEcouteUDP(app));
|
||||
try {
|
||||
app.connexion();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
ExecutorService execTCP = Executors.newFixedThreadPool(1000);
|
||||
System.out.println("On lance l'écoute TCP de chatapp");
|
||||
execTCP.submit(new RunnerEcouteTCP(app));
|
||||
try {
|
||||
Thread.sleep(5000);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if(app.getMe().getPseudo().equals("Marvel")) {
|
||||
app.getHist("Doudou").afficher10derniers();
|
||||
System.out.println("Tentative de connexion avec Doudou");
|
||||
TCPEchange.demarrerSession(app, app.actifUsers.getPseudoList("Doudou"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}*/
|
||||
|
||||
/**
|
||||
* <p>Handler des differents evenements que chatapp ecoute</p>
|
||||
* @param evt l'evenement qui a ete indique par le pcs
|
||||
|
@ -317,4 +328,20 @@ public class ChatApp implements PropertyChangeListener {
|
|||
* @return la base de donnee associee
|
||||
*/
|
||||
public DataBase getDb(){return this.db;}
|
||||
|
||||
/**
|
||||
* <p> Getter permettant de savoir si on est en externe ou en interne</p>
|
||||
* @return TRUE si Externe FALSE sinon
|
||||
*/
|
||||
public boolean isExterne() {
|
||||
return isExterne;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Setter Permet de définir si on est un utilisateur externe ou non</p>
|
||||
* @param externe TRUE si Externe FALSE sinon
|
||||
*/
|
||||
public void setExterne(boolean externe) {
|
||||
isExterne = externe;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -51,33 +51,35 @@ public class ConnexionScreen {
|
|||
Boolean connexion = false;
|
||||
if(this.localButton.isSelected()) {
|
||||
// PARTIE CONNEXION LOCALE
|
||||
try {
|
||||
connexion = ChatApp.getInstance().connexion(pseudonyme.getText());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (!connexion) {
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
||||
alert.setTitle("Connexion");
|
||||
// Header Text: null
|
||||
alert.setHeaderText(null);
|
||||
alert.setContentText("Echec de Connexion: le pseudo " + pseudonyme.getText() + " est deja pris");
|
||||
alert.showAndWait();
|
||||
} else {
|
||||
Stage stage = (Stage) connexionButton.getScene().getWindow();
|
||||
Parent root = null;
|
||||
try {
|
||||
root = FXMLLoader.load(getClass().getResource("/fenetres/View_Menu.fxml"));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Scene scene = new Scene(root);
|
||||
stage.setScene(scene);
|
||||
stage.show();
|
||||
}
|
||||
ChatApp.getInstance().setExterne(false);
|
||||
}
|
||||
else{
|
||||
// PARTIE CONNEXION DISTANTE
|
||||
ChatApp.getInstance().setExterne(true);
|
||||
}
|
||||
try {
|
||||
connexion = ChatApp.getInstance().connexion(pseudonyme.getText());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (!connexion) {
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
||||
alert.setTitle("Connexion");
|
||||
// Header Text: null
|
||||
alert.setHeaderText(null);
|
||||
alert.setContentText("Echec de Connexion: le pseudo " + pseudonyme.getText() + " est deja pris");
|
||||
alert.showAndWait();
|
||||
} else {
|
||||
Stage stage = (Stage) connexionButton.getScene().getWindow();
|
||||
Parent root = null;
|
||||
try {
|
||||
root = FXMLLoader.load(getClass().getResource("/fenetres/View_Menu.fxml"));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
Scene scene = new Scene(root);
|
||||
stage.setScene(scene);
|
||||
stage.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue