@@ -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); |
@@ -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(); | |||
// } | |||
} | |||
} | |||
@@ -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(); | |||
} | |||
} | |||
} |
@@ -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() | |||
{ |
@@ -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"); | |||
} | |||
} | |||
} |
@@ -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 |
@@ -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<Figur> { | |||
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<Figur> { | |||
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<Figur> { | |||
public void onComplete(){ | |||
} | |||
@Override | |||
public void onNext(Figur item) | |||
{ | |||
} | |||
} | |||
} |
@@ -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<String>, 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<String>, 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"); | |||
reader = new ObjectInputStream(bis); | |||
writer = new ObjectOutputStream(bos); | |||
writer = new ObjectOutputStream(os); | |||
writer.flush(); | |||
reader = new ObjectInputStream(is); | |||
lg.info("Reader / Writer Initialisierung abgeschlossen"); | |||
startempfangen(); | |||
lg.info("Warte auf Nachricht"); | |||
@@ -115,12 +113,12 @@ public abstract class Transmitter implements Runnable, Subscriber<String>, 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) { |
@@ -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.getPunkte(),g2); | |||
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!!!!!!! | |||
} | |||
/** |