diff --git a/src/java/main/fr/univlille/iut/r304/cpt/View/Controller/Controller.java b/src/java/main/fr/univlille/iut/r304/cpt/View/Controller/Controller.java new file mode 100644 index 0000000000000000000000000000000000000000..963aa1ea05b7acef7269202adb258e1d5148ac6d --- /dev/null +++ b/src/java/main/fr/univlille/iut/r304/cpt/View/Controller/Controller.java @@ -0,0 +1,27 @@ +package fr.univlille.iut.r304.cpt.View.Controller; + +import fr.univlille.iut.r304.cpt.View.Model.Personne; +import fr.univlille.iut.r304.cpt.View.Model.Plateforme; +import javafx.scene.control.Button; +import javafx.scene.control.TextField; + +public class Controller { + + Plateforme plateforme; + + public void init(){ + plateforme = new Plateforme(); + } + + public void buttonAdd(Button button,TextField name){ + button.setOnAction(e->{ + plateforme.add(new Personne(name.getText())); + }); + } + + public void buttonTirage(Button button){ + button.setOnAction(e->{ + plateforme.echangeCadeau(); + }); + } +} diff --git a/src/java/main/fr/univlille/iut/r304/cpt/Observer.java b/src/java/main/fr/univlille/iut/r304/cpt/View/Model/Observer.java similarity index 73% rename from src/java/main/fr/univlille/iut/r304/cpt/Observer.java rename to src/java/main/fr/univlille/iut/r304/cpt/View/Model/Observer.java index 774ca2182505dfac2fccccef830818fe1ddb18e4..6001529c13c71a014e4745abed1d14b49138e3f0 100644 --- a/src/java/main/fr/univlille/iut/r304/cpt/Observer.java +++ b/src/java/main/fr/univlille/iut/r304/cpt/View/Model/Observer.java @@ -1,4 +1,4 @@ -package fr.univlille.iut.r304.cpt; +package fr.univlille.iut.r304.cpt.View.Model; public interface Observer { public void update(Subject subject); diff --git a/src/java/main/fr/univlille/iut/r304/cpt/Personne.java b/src/java/main/fr/univlille/iut/r304/cpt/View/Model/Personne.java similarity index 79% rename from src/java/main/fr/univlille/iut/r304/cpt/Personne.java rename to src/java/main/fr/univlille/iut/r304/cpt/View/Model/Personne.java index 3db05f898309f5baba7e6cbca37a7104aa292c05..a0433fd414e9b1489e5b87844417ce409a8f9842 100644 --- a/src/java/main/fr/univlille/iut/r304/cpt/Personne.java +++ b/src/java/main/fr/univlille/iut/r304/cpt/View/Model/Personne.java @@ -1,4 +1,4 @@ -package fr.univlille.iut.r304.cpt; +package fr.univlille.iut.r304.cpt.View.Model; public class Personne { diff --git a/src/java/main/fr/univlille/iut/r304/cpt/Plateforme.java b/src/java/main/fr/univlille/iut/r304/cpt/View/Model/Plateforme.java similarity index 89% rename from src/java/main/fr/univlille/iut/r304/cpt/Plateforme.java rename to src/java/main/fr/univlille/iut/r304/cpt/View/Model/Plateforme.java index ef9308d9014b74487cb8ab5454c2ad40f49447f5..2f2152d58c33fd9d31e602053b835e9cd0bd37c3 100644 --- a/src/java/main/fr/univlille/iut/r304/cpt/Plateforme.java +++ b/src/java/main/fr/univlille/iut/r304/cpt/View/Model/Plateforme.java @@ -1,10 +1,10 @@ -package fr.univlille.iut.r304.cpt; +package fr.univlille.iut.r304.cpt.View.Model; import java.util.ArrayList; import java.util.HashMap; import java.util.Random; -public class Plateforme { +public class Plateforme extends Subject { private ArrayList<Personne> inscrits; public Plateforme(){ @@ -29,6 +29,7 @@ public class Plateforme { for(int i=0; i<inscrits.size();i++){ listEchange.put(inscrits.get(i), inscrits.get((i+1)%inscrits.size())); } + notifyObservers(listEchange); return listEchange; } diff --git a/src/java/main/fr/univlille/iut/r304/cpt/Subject.java b/src/java/main/fr/univlille/iut/r304/cpt/View/Model/Subject.java similarity index 79% rename from src/java/main/fr/univlille/iut/r304/cpt/Subject.java rename to src/java/main/fr/univlille/iut/r304/cpt/View/Model/Subject.java index cb72abd46478b79c64ea0b6354a684c2885db5bf..34b9f1bb9b7e1970eb047985c2b72f16b12495ee 100644 --- a/src/java/main/fr/univlille/iut/r304/cpt/Subject.java +++ b/src/java/main/fr/univlille/iut/r304/cpt/View/Model/Subject.java @@ -1,4 +1,4 @@ -package fr.univlille.iut.r304.cpt; +package fr.univlille.iut.r304.cpt.View.Model; import java.util.ArrayList; @@ -13,12 +13,12 @@ public abstract class Subject { } protected void notifyObservers(){ for(Observer observer : observers){ - observer.update(); + observer.update(this); } } protected void notifyObservers(Object obj){ for(Observer observer : observers){ - observer.update(obj); + observer.update(this,obj); } } } diff --git a/src/java/main/fr/univlille/iut/r304/cpt/View/View/SampleView.java b/src/java/main/fr/univlille/iut/r304/cpt/View/View/SampleView.java new file mode 100644 index 0000000000000000000000000000000000000000..f57ef8e5e4e3469ee0fc8508206d1d7b5a72f311 --- /dev/null +++ b/src/java/main/fr/univlille/iut/r304/cpt/View/View/SampleView.java @@ -0,0 +1,116 @@ +package fr.univlille.iut.r304.cpt.View.View; + +import java.util.HashMap; +import java.util.Map.Entry; + +import fr.univlille.iut.r304.cpt.View.Controller.Controller; +import fr.univlille.iut.r304.cpt.View.Model.Observer; +import fr.univlille.iut.r304.cpt.View.Model.Personne; +import fr.univlille.iut.r304.cpt.View.Model.Subject; +import javafx.application.Application; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; + +public class SampleView extends Application implements Observer { + public static void main(String[] args) { + launch(args); + } + + Controller ctrl; + + TextArea circularContent; + + TextArea alphaContent; + + TextArea listPersonne; + + @Override + public void start(Stage primaryStage) { + + ctrl = new Controller(); + ctrl.init(); + + VBox left = inscriptionInit(); + + VBox right = echangeInit(); + + HBox root = new HBox(left, right); + Scene scene = new Scene(root, 400, 400); + primaryStage.setTitle("Tirage au sort des cadeaux"); + primaryStage.setScene(scene); + primaryStage.show(); + } + + private VBox inscriptionInit(){ + VBox left = new VBox(); + Button addBtn = new Button(); + Label title = new Label("Inscrits :"); + TextField input = new TextField(); + input.setMinSize(10, 30); + addBtn.setText("+"); + ctrl.buttonAdd(addBtn,input); + listPersonne = new TextArea(); + left.getChildren().addAll(title, input, addBtn,listPersonne); + return left; + } + + private VBox echangeInit(){ + VBox right = new VBox(); + Button btn = new Button(); + btn.setText("Nouveau tirage !"); + ctrl.buttonTirage(btn); + Label circularTitle = new Label("Affichage circulaire"); + circularContent = new TextArea(); + circularContent.appendText("Example1"); + circularContent.appendText("\n -> Example2"); + circularContent.setPrefSize(250,100); + Label alphaTitle = new Label("Affichage alphabétique"); + alphaContent = new TextArea(); + alphaContent.setPrefSize(250,100); + alphaContent.appendText("Example1 -> Example2"); + right.getChildren().addAll(btn, circularTitle, circularContent, alphaTitle, alphaContent); + return right; + } + + private void echangeUpdate(HashMap<Personne,Personne> newList){ + circularContent.clear(); + boolean first = true; + for(Entry<Personne, Personne> echange : newList.entrySet()){ + if (first){ + first = false; + circularContent.appendText(echange.getKey().getName()); + circularContent.appendText("\n -> "+echange.getValue().getName()); + } else { + circularContent.appendText("\n -> "+echange.getKey().getName()); + circularContent.appendText("\n -> "+echange.getValue().getName()); + } + } + alphaContent.clear(); + for(Entry<Personne, Personne> echange : newList.entrySet()){ + alphaContent.appendText(echange.getKey().getName()+" -> "+echange.getValue().getName()+"\n"); + } + } + + @Override + public void update(Subject subject) { + // tmp + } + + @Override + public void update(Subject subject, Object obj) { + if(obj instanceof Personne){ + Personne personne = (Personne) obj; + listPersonne.appendText(personne.getName()); + } else { + HashMap<Personne,Personne> listEchange = (HashMap<Personne,Personne>) obj; + echangeUpdate(listEchange); + } + } +} + diff --git a/src/java/test/fr/univlille/iut/r304/ctp/PersonneTest.java b/src/java/test/fr/univlille/iut/r304/ctp/PersonneTest.java index 0ca6eada7c335bb5966eea918d559e395b1612e7..43eeca6b8540985fd292fc2eed897e49c72b764f 100644 --- a/src/java/test/fr/univlille/iut/r304/ctp/PersonneTest.java +++ b/src/java/test/fr/univlille/iut/r304/ctp/PersonneTest.java @@ -1,19 +1,18 @@ package fr.univlille.iut.r304.ctp; -import fr.univlille.iut.r304.cpt.Personne; - import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import fr.univlille.iut.r304.cpt.View.Model.Personne; + public class PersonneTest { private Personne personne; @Test public void testCreatePersonne(){ personne = new Personne("Didier"); - AssertEquals(personne.getName(),"Didier"); + assertEquals(personne.getName(),"Didier"); } } diff --git a/src/java/test/fr/univlille/iut/r304/ctp/PlateformeTest.java b/src/java/test/fr/univlille/iut/r304/ctp/PlateformeTest.java index 372e8542ac8433d32372236dc949eba9fe469a41..7a96adbd8558db07ae66373124278cf258f3ccf0 100644 --- a/src/java/test/fr/univlille/iut/r304/ctp/PlateformeTest.java +++ b/src/java/test/fr/univlille/iut/r304/ctp/PlateformeTest.java @@ -1,10 +1,16 @@ package fr.univlille.iut.r304.ctp; +import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + import java.beans.Transient; import java.util.HashMap; -import fr.univlille.iut.r304.cpt.Personne; -import fr.univlille.iut.r304.cpt.Plateforme; +import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; + +import fr.univlille.iut.r304.cpt.View.Model.Personne; +import fr.univlille.iut.r304.cpt.View.Model.Plateforme; public class PlateformeTest { private Plateforme plateforme; @@ -16,14 +22,14 @@ public class PlateformeTest { @Test public void testCreateEmptyPlatforme(){ - AssertTrue(plateforme.isEmpty()); + assertTrue(plateforme.isEmpty()); } @Test public void testAddPersonneInPlatforme(){ Personne personne = new Personne("Didier"); - AssertTrue(plateforme.add(personne)); - AssertEquals(plateforme.get(0),personne); + assertTrue(plateforme.add(personne)); + assertEquals(plateforme.get(0),personne); } @Test @@ -33,7 +39,7 @@ public class PlateformeTest { plateforme.add(personne1); plateforme.add(personne2); HashMap<Personne,Personne> listeEchange = plateforme.echangeCadeau(); - AssertEquals(listeEchange.get(personne2),personne1); - AssertEquals(listeEchange.get(personne1),personne2); + assertEquals(listeEchange.get(personne2),personne1); + assertEquals(listeEchange.get(personne1),personne2); } }