diff --git a/src/ChatProgramm/Start.java b/src/ChatProgramm/Start.java index 7af4d5a..cab9bbe 100644 --- a/src/ChatProgramm/Start.java +++ b/src/ChatProgramm/Start.java @@ -6,10 +6,8 @@ package ChatProgramm; import ChatProgramm.controller.CommandController; -import ChatProgramm.controller.GrafikController; -import ChatProgramm.model.GrafikModel; +import ChatProgramm.model.ChatModel; import ChatProgramm.view.ChatView; -import ChatProgramm.view.GrafikView; import javax.swing.JOptionPane; import javax.swing.UIManager; @@ -21,21 +19,12 @@ public class Start { public Start() { - GrafikModel model = new GrafikModel(); ChatView view = new ChatView(); - GrafikView zeichenflaeche = view.getGvZeichenflaeche(); - zeichenflaeche.setModel(model); - - GrafikController controller = new GrafikController(zeichenflaeche, model); - controller.registerEvents(); - - CommandController controller_commands = new CommandController(view, model, controller, zeichenflaeche); + ChatModel model = new ChatModel(view); + view.getGvZeichenflaeche().setModel(model.getGrafikDaten()); + CommandController controller_commands = new CommandController(view, model); controller_commands.registerEvents(); controller_commands.registerCommands(); - - - - view.setVisible(true); } diff --git a/src/ChatProgramm/controller/CommandController.java b/src/ChatProgramm/controller/CommandController.java index 90365a1..69b6b5d 100644 --- a/src/ChatProgramm/controller/CommandController.java +++ b/src/ChatProgramm/controller/CommandController.java @@ -8,43 +8,45 @@ package ChatProgramm.controller; import ChatProgramm.controller.commands.CommandConnect; import ChatProgramm.controller.commands.CommandInvoker; import ChatProgramm.controller.commands.CommandSend; -import ChatProgramm.model.GrafikModel; +import ChatProgramm.model.ChatModel; import ChatProgramm.view.ChatView; -import ChatProgramm.view.GrafikView; import java.awt.Component; +import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import static java.awt.event.MouseEvent.MOUSE_RELEASED; +import java.awt.event.MouseMotionListener; /** * * @author ahren */ -public class CommandController implements ActionListener{ +public class CommandController extends MouseAdapter implements MouseMotionListener, ActionListener{ private ChatView view; - private GrafikModel model; - private GrafikView gView; + private ChatModel model; private CommandInvoker invoker; - private GrafikController controller; -public CommandController(ChatView view, GrafikModel model, GrafikController controller, GrafikView gView){ +public CommandController(ChatView view, ChatModel model){ this.view = view; this.model = model; - this.gView = gView; this.invoker = new CommandInvoker(); - this.controller = controller; } public void registerEvents(){ - view.getBtnConnect().addActionListener(this); + view.getBtnConnect().addActionListener(this); + view.addMouseMotionListener(this); + view.addMouseListener(this); } public void registerCommands(){ - CommandSend commandSend = new CommandSend(view.getGvZeichenflaeche(), model); - invoker.addCommand(view.getBtnConnect(), new CommandConnect(view, commandSend, model, gView)); - this.controller.setCommand(commandSend); + invoker.addCommand(view.getBtnConnect(), new CommandConnect(view, model)); + + invoker.addCommand(view.getGvZeichenflaeche(), new CommandSend(view, model)); } - + /** * Ausführen des jeweiligen Kommandos * @param e Referenz auf das Event @@ -55,6 +57,20 @@ public CommandController(ChatView view, GrafikModel model, GrafikController cont invoker.executeCommand(key); } + @Override + public void mouseDragged(MouseEvent evt) + { + Point p = evt.getPoint(); + model.getGrafikDaten().addPoint(p); + view.getGvZeichenflaeche().drawPoint(); + } + @Override + public void mouseReleased(MouseEvent evt) + { + model.getGrafikDaten().endShape(); + invoker.executeCommand(view.getGvZeichenflaeche()); + + } } diff --git a/src/ChatProgramm/controller/GrafikController.java b/src/ChatProgramm/controller/GrafikController.java deleted file mode 100644 index d490e74..0000000 --- a/src/ChatProgramm/controller/GrafikController.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license - * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template - */ - -package ChatProgramm.controller; - -import ChatProgramm.controller.commands.CommandSend; -import java.awt.Point; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.MouseMotionListener; -import ChatProgramm.model.GrafikModel; -import ChatProgramm.view.GrafikView; - -/** - * - * @author le - */ -public class GrafikController extends MouseAdapter implements MouseMotionListener -{ - private GrafikView view; - private GrafikModel model; - private CommandSend commandSend; - - public GrafikController(GrafikView view, GrafikModel model) - { - this.view = view; - this.model = model; - commandSend = null; - } - - void setCommand(CommandSend command){ - this.commandSend = command; - } - - public void registerEvents() - { - view.addMouseMotionListener(this); - view.addMouseListener(this); - } - - - - @Override - public void mouseDragged(MouseEvent evt) - { - Point p = evt.getPoint(); - model.addPoint(p); - view.drawPoint(); - } - - @Override - public void mouseMoved(MouseEvent e) - { - } - - @Override - public void mouseReleased(MouseEvent evt) - { - model.endShape(); - if(commandSend != null){ - commandSend.execute(); - } - - } -} diff --git a/src/ChatProgramm/controller/commands/CommandConnect.java b/src/ChatProgramm/controller/commands/CommandConnect.java index 99c9627..f4bbf3f 100644 --- a/src/ChatProgramm/controller/commands/CommandConnect.java +++ b/src/ChatProgramm/controller/commands/CommandConnect.java @@ -5,9 +5,11 @@ package ChatProgramm.controller.commands; +import ChatProgramm.model.ChatModel; import ChatProgramm.model.Client; -import ChatProgramm.model.GrafikModel; +import ChatProgramm.model.GrafikDaten; import ChatProgramm.model.Server; +import ChatProgramm.model.Transmitter; import ChatProgramm.util.OhmLogger; import ChatProgramm.view.ChatView; import ChatProgramm.view.GrafikView; @@ -26,22 +28,16 @@ public class CommandConnect implements CommandInterface private JRadioButton rBtnClient; private JDialog dialogFenster; private static Logger lg = OhmLogger.getLogger(); - private CommandSend commandSend; private ChatView view; - private GrafikModel model; - private GrafikView gView; + private ChatModel model; - public CommandConnect(ChatView view, CommandInterface value, GrafikModel model, GrafikView gView) + public CommandConnect(ChatView view, ChatModel model) { rBtnServer = view.getBtnServer(); rBtnClient = view.getBtnClient(); dialogFenster = view.getjDialog1(); - - commandSend = (CommandSend) value; - this.view = view; this.model = model; - this.gView = gView; } @Override @@ -50,7 +46,7 @@ public class CommandConnect implements CommandInterface if(rBtnServer.isSelected()){ lg.info("Server ausgewählt"); try { - commandSend.setTransmitter(new Server(view, model, gView)); + model.setTransmitterToServer(); } catch (IOException ex) { lg.info("Die Verbindung zum Server ist Fehlgeschlagen"); } @@ -59,13 +55,12 @@ public class CommandConnect implements CommandInterface if(rBtnClient.isSelected()){ lg.info("Client ausgewählt"); try { - commandSend.setTransmitter(new Client(view, model, gView)); + model.setTransmitterToClient(); } catch (IOException ex) { lg.info("Die Verbindung zum Client ist Fehlgeschlagen"); } } - dialogFenster.setVisible(false); } diff --git a/src/ChatProgramm/controller/commands/CommandSend.java b/src/ChatProgramm/controller/commands/CommandSend.java index 306c886..3db96dd 100644 --- a/src/ChatProgramm/controller/commands/CommandSend.java +++ b/src/ChatProgramm/controller/commands/CommandSend.java @@ -5,16 +5,11 @@ package ChatProgramm.controller.commands; -import ChatProgramm.model.Client; +import ChatProgramm.model.ChatModel; 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.view.GrafikView; /** * @@ -24,33 +19,22 @@ public class CommandSend implements CommandInterface { private static Logger lg = OhmLogger.getLogger(); - private GrafikView view; - private GrafikModel model; + private ChatView view; + private ChatModel model; - public TransmitterInterface transmitterInterface; - public Server server; - public Client client; - - - - - public CommandSend(GrafikView view, GrafikModel model) + public CommandSend(ChatView view, ChatModel model) { this.view = view; this.model = model; - //ToDo: Hier muss auch der gFrame referenziert werden - //this.eingabeFeld = view.getTfNachricht(); - transmitterInterface = null; } @Override public void execute() { - Figur aktuelleFigur = model.getFiguren().getLast(); + Figur aktuelleFigur = model.getGrafikDaten().getFiguren().getLast(); try { - transmitterInterface.send(aktuelleFigur); - + model.getTransmitter().send(aktuelleFigur); } catch(Exception NullPointerExeption) { @@ -58,7 +42,6 @@ public class CommandSend implements CommandInterface } } - @Override public boolean isUndoable() { @@ -69,15 +52,4 @@ 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"); - } - } } diff --git a/src/ChatProgramm/model/ChatModel.java b/src/ChatProgramm/model/ChatModel.java new file mode 100644 index 0000000..bc51ff4 --- /dev/null +++ b/src/ChatProgramm/model/ChatModel.java @@ -0,0 +1,49 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ + +package ChatProgramm.model; + +import ChatProgramm.util.OhmLogger; +import ChatProgramm.view.ChatView; +import java.io.IOException; +import java.util.logging.Logger; + +/** + * + * @author ahren + */ +public class ChatModel +{ + + private Transmitter transmitter; + private static Logger lg = OhmLogger.getLogger(); + private GrafikDaten grafikdaten = new GrafikDaten(); + private ChatView view; + + public ChatModel(ChatView view) + { + this.view = view; + } + + public GrafikDaten getGrafikDaten() + { + return grafikdaten; + } + + public void setTransmitterToClient() throws IOException + { + transmitter = new Client(view, this); + } + + public void setTransmitterToServer()throws IOException + { + transmitter = new Server(view, this); + } + + public Transmitter getTransmitter() + { + return transmitter; + } +} diff --git a/src/ChatProgramm/model/Client.java b/src/ChatProgramm/model/Client.java index 9675448..816598c 100644 --- a/src/ChatProgramm/model/Client.java +++ b/src/ChatProgramm/model/Client.java @@ -20,11 +20,11 @@ public class Client extends Transmitter { private static Logger lg = OhmLogger.getLogger(); private static final int PORT = 35000; //lt. iana port > 2¹⁵ - private static final String IP = "100.83.18.179"; + private static final String IP = "127.0.0.1"; - public Client(ChatView view, GrafikModel model, GrafikView gView) throws IOException { - super(view, model, gView); + public Client(ChatView view, ChatModel model) throws IOException { + super(view, model); connect(); initIO(); } diff --git a/src/ChatProgramm/model/GrafikModel.java b/src/ChatProgramm/model/GrafikDaten.java similarity index 96% rename from src/ChatProgramm/model/GrafikModel.java rename to src/ChatProgramm/model/GrafikDaten.java index 6a27a3d..58fa342 100644 --- a/src/ChatProgramm/model/GrafikModel.java +++ b/src/ChatProgramm/model/GrafikDaten.java @@ -24,14 +24,14 @@ import ChatProgramm.util.OhmLogger; * * @author le */ -public class GrafikModel { +public class GrafikDaten { private Figur aktuelleFigur; private ArrayList figuren; private Preferences pref; private static Logger lg = OhmLogger.getLogger(); - public GrafikModel() { + public GrafikDaten() { aktuelleFigur = new Figur(); figuren = new ArrayList<>(); } diff --git a/src/ChatProgramm/model/ReceiveAdapter.java b/src/ChatProgramm/model/ReceiveAdapter.java index 427d027..71d8c48 100644 --- a/src/ChatProgramm/model/ReceiveAdapter.java +++ b/src/ChatProgramm/model/ReceiveAdapter.java @@ -20,14 +20,12 @@ public class ReceiveAdapter implements Subscriber { private static Logger lg = OhmLogger.getLogger(); private ChatView view; - private GrafikModel model; - private GrafikView gView; + private ChatModel model; private Flow.Subscription subscription; - public ReceiveAdapter(ChatView view, GrafikModel model, GrafikView gView) { + public ReceiveAdapter(ChatView view, ChatModel model) { this.view = view; this.model = model; - this.gView = gView; } @Override @@ -37,8 +35,8 @@ public class ReceiveAdapter implements Subscriber { } public void onNext(Figur item) { - model.addFigure(item); - gView.drawFigur(); + model.getGrafikDaten().addFigure(item); + view.getGvZeichenflaeche().drawFigur(); lg.info("Figur wurde dem Grafikmodel hinzugefügt"); this.subscription.request(1); } diff --git a/src/ChatProgramm/model/Server.java b/src/ChatProgramm/model/Server.java index f0ea7aa..75f411a 100644 --- a/src/ChatProgramm/model/Server.java +++ b/src/ChatProgramm/model/Server.java @@ -21,8 +21,8 @@ public class Server extends Transmitter private static Logger lg = OhmLogger.getLogger(); private static final int PORT = 35000; //lt. iana port > 2¹⁵ - public Server(ChatView view, GrafikModel model, GrafikView gView) throws IOException { - super(view, model, gView); + public Server(ChatView view, ChatModel model) throws IOException { + super(view, model); connect(); initIO(); } diff --git a/src/ChatProgramm/model/Transmitter.java b/src/ChatProgramm/model/Transmitter.java index 4c4ffac..2b377ef 100644 --- a/src/ChatProgramm/model/Transmitter.java +++ b/src/ChatProgramm/model/Transmitter.java @@ -5,18 +5,11 @@ package ChatProgramm.model; import ChatProgramm.view.ChatView; -import ChatProgramm.view.GrafikView; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.Socket; import java.util.concurrent.ExecutorService; @@ -31,7 +24,7 @@ import java.util.logging.Logger; * * @author ahren */ -public abstract class Transmitter implements Runnable, Subscriber, TransmitterInterface { +public abstract class Transmitter implements Runnable, Subscriber { static final int timeout = 60000; private static final int PORT = 35000; @@ -47,14 +40,14 @@ public abstract class Transmitter implements Runnable, Subscriber, Transm private ExecutorService eService; private String receivedString; private ChatView view; - private GrafikModel model; + private ChatModel model; private ReceiveAdapter receiveAdapter; - public Transmitter(ChatView view, GrafikModel model, GrafikView gView) + public Transmitter(ChatView view, ChatModel model) { socket = new Socket(); eService = null; - receiveAdapter = new ReceiveAdapter(view, model, gView); + receiveAdapter = new ReceiveAdapter(view, model); figurPublisher = new SubmissionPublisher<>(); this.view = view; addWertSubscription(receiveAdapter); @@ -93,7 +86,6 @@ public abstract class Transmitter implements Runnable, Subscriber, Transm * @param figur * @throws IOException */ - @Override public void send(Figur figur){ try { diff --git a/src/ChatProgramm/model/TransmitterInterface.java b/src/ChatProgramm/model/TransmitterInterface.java deleted file mode 100644 index 1b88ebd..0000000 --- a/src/ChatProgramm/model/TransmitterInterface.java +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license - * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Interface.java to edit this template - */ -package ChatProgramm.model; - -/** - * - * @author ahren - */ -public interface TransmitterInterface -{ - public void send(Figur figur); - public Figur receive(); - -} diff --git a/src/ChatProgramm/view/GrafikView.java b/src/ChatProgramm/view/GrafikView.java index cc50f44..5083bc5 100644 --- a/src/ChatProgramm/view/GrafikView.java +++ b/src/ChatProgramm/view/GrafikView.java @@ -22,7 +22,7 @@ import javax.print.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.standard.DialogTypeSelection; import javax.swing.JComponent; import javax.swing.JOptionPane; -import ChatProgramm.model.GrafikModel; +import ChatProgramm.model.GrafikDaten; import ChatProgramm.util.OhmLogger; @@ -36,7 +36,7 @@ public class GrafikView extends JComponent private static Dimension EINS = new Dimension(1, 1); // Dimension ist eine Klasse die width udn height hält private Rectangle2D.Float pixel; private Line2D.Float line; - private GrafikModel model; + private GrafikDaten model; private Point from = null; private Point to = null; @@ -47,7 +47,7 @@ public class GrafikView extends JComponent line = new Line2D.Float(); } - public void setModel(GrafikModel model) + public void setModel(GrafikDaten model) { this.model = model; }