From 75cdcf720218f4fa3804224f76c57ab58c31f871 Mon Sep 17 00:00:00 2001 From: ahren Date: Tue, 19 Dec 2023 12:11:40 +0100 Subject: [PATCH] scheinbar kacke kopiert --- src/ChatProgramm/Start.java | 2 +- .../controller/CommandController.java | 22 ++++++++----- .../controller/GrafikController.java | 17 +++++----- .../controller/commands/CommandConnect.java | 31 ++++++++++++------- .../controller/commands/CommandSend.java | 30 ++++++++++++++---- src/ChatProgramm/model/GrafikModel.java | 5 +++ src/ChatProgramm/model/ReceiveAdapter.java | 26 +++++++++++----- src/ChatProgramm/model/Transmitter.java | 28 ++++++++--------- src/ChatProgramm/view/GrafikView.java | 13 ++++++-- 9 files changed, 116 insertions(+), 58 deletions(-) diff --git a/src/ChatProgramm/Start.java b/src/ChatProgramm/Start.java index 2980a17..41e3f1e 100644 --- a/src/ChatProgramm/Start.java +++ b/src/ChatProgramm/Start.java @@ -27,7 +27,7 @@ public class Start zeichenflaeche.setModel(model); GrafikController controller = new GrafikController(zeichenflaeche, model); controller.registerEvents(); - CommandController controller_commands = new CommandController(view); + CommandController controller_commands = new CommandController(view, model, controller, zeichenflaeche); controller_commands.registerEvents(); controller_commands.registerCommands(); view.setVisible(true); diff --git a/src/ChatProgramm/controller/CommandController.java b/src/ChatProgramm/controller/CommandController.java index 33ef1fd..b735690 100644 --- a/src/ChatProgramm/controller/CommandController.java +++ b/src/ChatProgramm/controller/CommandController.java @@ -8,7 +8,9 @@ package ChatProgramm.controller; import ChatProgramm.controller.commands.CommandConnect; import ChatProgramm.controller.commands.CommandInvoker; import ChatProgramm.controller.commands.CommandSend; +import ChatProgramm.model.GrafikModel; import ChatProgramm.view.ChatView; +import ChatProgramm.view.GrafikView; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -20,11 +22,17 @@ import java.awt.event.ActionListener; public class CommandController implements ActionListener{ private ChatView view; + private GrafikModel model; + private GrafikView gView; private CommandInvoker invoker; + private GrafikController controller; - public CommandController(ChatView view){ +public CommandController(ChatView view, GrafikModel model, GrafikController controller, GrafikView gView){ this.view = view; + this.model = model; + this.gView = gView; this.invoker = new CommandInvoker(); + this.controller = controller; } public void registerEvents(){ @@ -34,9 +42,9 @@ public class CommandController implements ActionListener{ } public void registerCommands(){ - CommandSend commandSend = new CommandSend(view.getGvZeichenflaeche()); - invoker.addCommand(view.getBtnConnect(), new CommandConnect(view, commandSend)); - //invoker.addCommand(view.getTfNachricht(), commandSend); + CommandSend commandSend = new CommandSend(view.getGvZeichenflaeche(), model); + invoker.addCommand(view.getBtnConnect(), new CommandConnect(view, commandSend, model, gView)); + this.controller.setCommand(commandSend); } /** @@ -47,11 +55,11 @@ public class CommandController implements ActionListener{ public void actionPerformed(ActionEvent e) { Component key = (Component)e.getSource(); invoker.executeCommand(key); -// if(key == view.getBtnOpen()|| key==view.getMiOpen()) -// invoker.deleteStack(); -// } + } + + } diff --git a/src/ChatProgramm/controller/GrafikController.java b/src/ChatProgramm/controller/GrafikController.java index d717bc9..d490e74 100644 --- a/src/ChatProgramm/controller/GrafikController.java +++ b/src/ChatProgramm/controller/GrafikController.java @@ -27,7 +27,11 @@ public class GrafikController extends MouseAdapter implements MouseMotionListene { this.view = view; this.model = model; - commandSend = new CommandSend(view); + commandSend = null; + } + + void setCommand(CommandSend command){ + this.commandSend = command; } public void registerEvents() @@ -43,7 +47,7 @@ public class GrafikController extends MouseAdapter implements MouseMotionListene { Point p = evt.getPoint(); model.addPoint(p); - view.drawPoint(p); + view.drawPoint(); } @Override @@ -55,10 +59,9 @@ public class GrafikController extends MouseAdapter implements MouseMotionListene public void mouseReleased(MouseEvent evt) { model.endShape(); - commandSend.execute(); -// if (evt.getButton() == MouseEvent.BUTTON3) -// { -// view.doPrint(); -// } + if(commandSend != null){ + commandSend.execute(); + } + } } diff --git a/src/ChatProgramm/controller/commands/CommandConnect.java b/src/ChatProgramm/controller/commands/CommandConnect.java index 7603372..43b7677 100644 --- a/src/ChatProgramm/controller/commands/CommandConnect.java +++ b/src/ChatProgramm/controller/commands/CommandConnect.java @@ -6,9 +6,11 @@ package ChatProgramm.controller.commands; import ChatProgramm.model.Client; +import ChatProgramm.model.GrafikModel; import ChatProgramm.model.Server; import ChatProgramm.util.OhmLogger; import ChatProgramm.view.ChatView; +import ChatProgramm.view.GrafikView; import java.io.IOException; import java.util.logging.Logger; import javax.swing.JDialog; @@ -20,24 +22,29 @@ import javax.swing.JRadioButton; */ public class CommandConnect implements CommandInterface { - private JRadioButton rBtnServer; - private JRadioButton rBtnClient; - private JDialog dialogFenster; - private static Logger lg = OhmLogger.getLogger(); - private CommandSend commandSend; - private ChatView view; + private JRadioButton rBtnServer; + private JRadioButton rBtnClient; + private JDialog dialogFenster; + private static Logger lg = OhmLogger.getLogger(); + private CommandSend commandSend; + private ChatView view; + private GrafikModel model; + private GrafikView gView; - public CommandConnect(ChatView view, CommandInterface value) + public CommandConnect(ChatView view, CommandInterface value, GrafikModel model, GrafikView gView) { - rBtnServer = view.getBtnServer(); - rBtnClient = view.getBtnClient(); - dialogFenster = view.getjDialog1(); + rBtnServer = view.getBtnServer(); + rBtnClient = view.getBtnClient(); + dialogFenster = view.getjDialog1(); - commandSend = (CommandSend) value; + commandSend = (CommandSend) value; - this.view = view; + this.view = view; + this.model = model; + this.gView = gView; } + @Override public void execute() { diff --git a/src/ChatProgramm/controller/commands/CommandSend.java b/src/ChatProgramm/controller/commands/CommandSend.java index 7d0de34..a86635d 100644 --- a/src/ChatProgramm/controller/commands/CommandSend.java +++ b/src/ChatProgramm/controller/commands/CommandSend.java @@ -6,13 +6,14 @@ package ChatProgramm.controller.commands; import ChatProgramm.model.Client; +import ChatProgramm.model.Figur; +import ChatProgramm.model.GrafikModel; import ChatProgramm.model.Server; import ChatProgramm.model.TransmitterInterface; import ChatProgramm.util.OhmLogger; import ChatProgramm.view.ChatView; import java.util.logging.Logger; import javax.swing.JTextField; -import ChatProgramm.model.Nachricht; import ChatProgramm.view.GrafikView; /** @@ -25,16 +26,15 @@ public class CommandSend implements CommandInterface private JTextField eingabeFeld; private String nachricht; private GrafikView view; + private GrafikModel model; public TransmitterInterface transmitterInterface; public Server server; public Client client; - - - - public CommandSend(GrafikView view) + public CommandSend(GrafikView view, GrafikModel model) { this.view = view; + this.model = model; //ToDo: Hier muss auch der gFrame referenziert werden //this.eingabeFeld = view.getTfNachricht(); transmitterInterface = null; @@ -44,6 +44,13 @@ public class CommandSend implements CommandInterface public void execute() { lg.info("wir sind drin"); + Figur aktuelleFigur = model.getFiguren().getLast(); + if(transmitterInterface != null){ + transmitterInterface.send(aktuelleFigur); + } + else{ + lg.info("Der Transmitter ist immernoch null"); + } //ToDo in dieser methode muss die Figur serialisiert werden und zum //übermitteln bereitgestellt werden @@ -64,4 +71,15 @@ public class CommandSend implements CommandInterface public void undo() { } -} + + void setTransmitter(TransmitterInterface transmitter) { + lg.info("Transmitter wird gesetzt"); + if(transmitter != null){ + this.transmitterInterface = transmitter; + + } + else{ + lg.info("der transmitter kommt hier als null an"); + } + } +} \ No newline at end of file diff --git a/src/ChatProgramm/model/GrafikModel.java b/src/ChatProgramm/model/GrafikModel.java index d5dedc7..3d32b4b 100644 --- a/src/ChatProgramm/model/GrafikModel.java +++ b/src/ChatProgramm/model/GrafikModel.java @@ -96,6 +96,11 @@ public class GrafikModel figuren.add(aktuelleFigur); aktuelleFigur = new Figur(); } + public void setFigur(Figur figur){ + aktuelleFigur = figur; + figuren.add(figur); + } + /** * Bestimmt die Adresse des zuletzt besuchten Ordners diff --git a/src/ChatProgramm/model/ReceiveAdapter.java b/src/ChatProgramm/model/ReceiveAdapter.java index 03141a7..444b753 100644 --- a/src/ChatProgramm/model/ReceiveAdapter.java +++ b/src/ChatProgramm/model/ReceiveAdapter.java @@ -4,21 +4,33 @@ */ package ChatProgramm.model; +import ChatProgramm.util.OhmLogger; import ChatProgramm.view.ChatView; +import ChatProgramm.view.GrafikView; import java.util.concurrent.Flow; import java.util.concurrent.Flow.Subscriber; +import java.util.logging.Logger; + /** * * @author ahren */ public class ReceiveAdapter implements Subscriber { + + private static Logger lg = OhmLogger.getLogger(); private ChatView view; + private GrafikModel model; + private GrafikView gView; private Flow.Subscription subscription; - public ReceiveAdapter(ChatView view) { + public ReceiveAdapter(ChatView view, GrafikModel model, GrafikView gView) { this.view = view; + this.model = model; + this.gView = gView; + + } @Override @@ -27,9 +39,11 @@ public class ReceiveAdapter implements Subscriber { this.subscription.request(1); } - public void onNext(Nachricht item) { + public void onNext(Figur item) { - //ToDo: hier muss der gFrame aufgerufen werden + lg.info("Figur wurde dem Grafikmodel hinzugefügt"); + model.setFigur(item); + gView.drawFigur(); // evtl muss die Figur aber zuerst serialisiert werden //view.getTxtChat().append(item.getNachricht()); this.subscription.request(1); @@ -43,8 +57,4 @@ public class ReceiveAdapter implements Subscriber { public void onComplete(){ } - @Override - public void onNext(Figur item) - { - } -} +} \ No newline at end of file diff --git a/src/ChatProgramm/model/Transmitter.java b/src/ChatProgramm/model/Transmitter.java index 5c271f4..fea7cda 100644 --- a/src/ChatProgramm/model/Transmitter.java +++ b/src/ChatProgramm/model/Transmitter.java @@ -5,6 +5,7 @@ package ChatProgramm.model; import ChatProgramm.view.ChatView; +import ChatProgramm.view.GrafikView; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; @@ -48,13 +49,16 @@ public abstract class Transmitter implements Runnable, Subscriber, Trans private ExecutorService eService; private String receivedString; private ChatView view; + private GrafikView gView; + private GrafikModel model; + private ReceiveAdapter receiveAdapter; public Transmitter(ChatView view) { socket = new Socket(); eService = null; - receiveAdapter = new ReceiveAdapter(view); + receiveAdapter = new ReceiveAdapter(view, model, gView); figurPublisher = new SubmissionPublisher<>(); this.view = view; addWertSubscription(receiveAdapter); @@ -74,16 +78,10 @@ public abstract class Transmitter implements Runnable, Subscriber, Trans InputStream is = socket.getInputStream(); OutputStream os = socket.getOutputStream(); - lg.info("1"); - BufferedOutputStream bos = new BufferedOutputStream(os); - - BufferedInputStream bis = new BufferedInputStream(is); - lg.info("2"); -// InputStreamReader isr = new InputStreamReader(is, "UTF-8"); -// OutputStreamWriter osr = new OutputStreamWriter(os, "UTF-8"); + writer = new ObjectOutputStream(os); + writer.flush(); + reader = new ObjectInputStream(is); - reader = new ObjectInputStream(bis); - writer = new ObjectOutputStream(bos); lg.info("Reader / Writer Initialisierung abgeschlossen"); startempfangen(); lg.info("Warte auf Nachricht"); @@ -115,12 +113,12 @@ public abstract class Transmitter implements Runnable, Subscriber, Trans figurPublisher.submit(figur); } public Figur receive(){ + Object receivedObject; try { - figur = (Figur) reader.readObject(); - if(!txtNachricht.isEmpty()){ - lg.info("Nachricht erhalten"); - - return figur; + receivedObject = reader.readObject(); + if(receivedObject instanceof Figur){ + lg.info("Figur erhalten"); + figur = (Figur) receivedObject; } } catch (IOException e) { diff --git a/src/ChatProgramm/view/GrafikView.java b/src/ChatProgramm/view/GrafikView.java index 969525c..ad75bb0 100644 --- a/src/ChatProgramm/view/GrafikView.java +++ b/src/ChatProgramm/view/GrafikView.java @@ -58,14 +58,23 @@ public class GrafikView extends JComponent implements Printable * Zeichnet den aktuellen Pfad (solange die maus gedrückt gehalten wird) * @param p -> Der aktuelle punkt als x-y-Koordinate */ - public void drawPoint(Point p) + public void drawFigur() + { + Graphics2D g2 = (Graphics2D)this.getGraphics(); // gefährlich! + + drawPath(model.getFiguren().getLast().getPunkte(),g2); + + g2.dispose(); //SEEEEHHHHRRRR WICHTIG!!!!!!! + } + public void drawPoint() { Graphics2D g2 = (Graphics2D)this.getGraphics(); // gefährlich! drawPath(model.getPunkte(),g2); - g2.dispose(); //SEEEEHHHHRRRR WICHTIG!!!!!!! + g2.dispose(); //SEEEEHHHHRRRR WICHTIG!!!!!!! } + /**