public void registerEvents(){ | public void registerEvents(){ | ||||
view.getBtnConnect().addActionListener(this); | view.getBtnConnect().addActionListener(this); | ||||
//ToDo: muss auf gFrame referenzieren | |||||
//view.getTfNachricht().addActionListener(this); | |||||
} | } | ||||
public void registerCommands(){ | public void registerCommands(){ |
lg.info("Server ausgewählt"); | lg.info("Server ausgewählt"); | ||||
try { | try { | ||||
commandSend.setTransmitter(new Server(view, model, gView)); | commandSend.setTransmitter(new Server(view, model, gView)); | ||||
//commandSend.transmitterInterface = new Server(view); | |||||
} catch (IOException ex) { | } catch (IOException ex) { | ||||
lg.info("Die Verbindung zum Server ist Fehlgeschlagen"); | lg.info("Die Verbindung zum Server ist Fehlgeschlagen"); | ||||
} | } | ||||
lg.info("Client ausgewählt"); | lg.info("Client ausgewählt"); | ||||
try { | try { | ||||
commandSend.setTransmitter(new Client(view, model, gView)); | commandSend.setTransmitter(new Client(view, model, gView)); | ||||
//commandSend.transmitterInterface = new Client(view); | |||||
} catch (IOException ex) { | } catch (IOException ex) { | ||||
lg.info("Die Verbindung zum Client ist Fehlgeschlagen"); | lg.info("Die Verbindung zum Client ist Fehlgeschlagen"); | ||||
import ChatProgramm.view.ChatView; | import ChatProgramm.view.ChatView; | ||||
import java.util.logging.Logger; | import java.util.logging.Logger; | ||||
import javax.swing.JTextField; | import javax.swing.JTextField; | ||||
import ChatProgramm.model.Nachricht; | |||||
import ChatProgramm.view.GrafikView; | import ChatProgramm.view.GrafikView; | ||||
/** | /** | ||||
public class CommandSend implements CommandInterface | public class CommandSend implements CommandInterface | ||||
{ | { | ||||
private static Logger lg = OhmLogger.getLogger(); | private static Logger lg = OhmLogger.getLogger(); | ||||
private JTextField eingabeFeld; | |||||
private String nachricht; | |||||
private GrafikView view; | private GrafikView view; | ||||
private GrafikModel model; | private GrafikModel model; | ||||
public TransmitterInterface transmitterInterface; | public TransmitterInterface transmitterInterface; | ||||
public Server server; | public Server server; | ||||
public Client client; | public Client client; | ||||
@Override | @Override | ||||
public void execute() | public void execute() | ||||
{ | { | ||||
lg.info("wir sind drin"); | |||||
Figur aktuelleFigur = model.getFiguren().getLast(); | Figur aktuelleFigur = model.getFiguren().getLast(); | ||||
if(transmitterInterface != null){ | |||||
try | |||||
{ | |||||
transmitterInterface.send(aktuelleFigur); | transmitterInterface.send(aktuelleFigur); | ||||
} | } | ||||
else{ | |||||
lg.info("Der Transmitter ist immernoch null"); | |||||
catch(Exception NullPointerExeption) | |||||
{ | |||||
lg.info("Der Transmitter ist null"); | |||||
} | } | ||||
//ToDo in dieser methode muss die Figur serialisiert werden und zum | |||||
//übermitteln bereitgestellt werden | |||||
// if(transmitterInterface != null && !eingabeFeld.getText().isEmpty()){ | |||||
// transmitterInterface.send(eingabeFeld.getText()); | |||||
// eingabeFeld.setText(""); | |||||
// } | |||||
} | } | ||||
*/ | */ | ||||
package ChatProgramm.model; | package ChatProgramm.model; | ||||
import ChatProgramm.util.OhmLogger; | |||||
import ChatProgramm.view.ChatView; | import ChatProgramm.view.ChatView; | ||||
import ChatProgramm.view.GrafikView; | import ChatProgramm.view.GrafikView; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
*/ | */ | ||||
public class Client extends Transmitter { | public class Client extends Transmitter { | ||||
private static Logger lg = Logger.getLogger("netz"); | |||||
private static Logger lg = OhmLogger.getLogger(); | |||||
private static final int PORT = 35000; //lt. iana port > 2¹⁵ | private static final int PORT = 35000; //lt. iana port > 2¹⁵ | ||||
private static final String IP = "127.0.0.1"; | |||||
private static final String IP = "141.75.213.191"; | |||||
public Client(ChatView view, GrafikModel model, GrafikView gView) throws IOException { | public Client(ChatView view, GrafikModel model, GrafikView gView) throws IOException { |
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license | * 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 | * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template | ||||
*/ | */ | ||||
package ChatProgramm.model; | package ChatProgramm.model; | ||||
import java.awt.Point; | import java.awt.Point; | ||||
import java.util.logging.Logger; | import java.util.logging.Logger; | ||||
import java.util.prefs.Preferences; | import java.util.prefs.Preferences; | ||||
import ChatProgramm.util.OhmLogger; | import ChatProgramm.util.OhmLogger; | ||||
/** | /** | ||||
* | * | ||||
* @author le | * @author le | ||||
*/ | */ | ||||
public class GrafikModel | |||||
{ | |||||
private Figur aktuelleFigur; | |||||
private ArrayList<Figur> figuren; | |||||
private Preferences pref; | |||||
private static Logger lg = OhmLogger.getLogger(); | |||||
public GrafikModel() | |||||
{ | |||||
aktuelleFigur = new Figur(); | |||||
figuren = new ArrayList<>(); | |||||
} | |||||
public void addPoint(Point p) | |||||
{ | |||||
aktuelleFigur.addPoint(p); | |||||
} | |||||
public List<Point> getPunkte() | |||||
{ | |||||
return aktuelleFigur.getPunkte(); | |||||
} | |||||
public List<Figur> getFiguren(){ | |||||
return Collections.unmodifiableList(figuren); | |||||
} | |||||
public class GrafikModel { | |||||
private Figur aktuelleFigur; | |||||
private ArrayList<Figur> figuren; | |||||
private Preferences pref; | |||||
private static Logger lg = OhmLogger.getLogger(); | |||||
public void endShape() { | |||||
figuren.add(aktuelleFigur); | |||||
public GrafikModel() { | |||||
aktuelleFigur = new Figur(); | aktuelleFigur = new Figur(); | ||||
figuren = new ArrayList<>(); | |||||
} | } | ||||
public void setFigur(Figur figur){ | |||||
//aktuelleFigur = figur; | |||||
public void addPoint(Point p) { | |||||
aktuelleFigur.addPoint(p); | |||||
} | |||||
public void addFigure(Figur figur) { | |||||
figuren.add(figur); | figuren.add(figur); | ||||
} | } | ||||
} | |||||
public List<Point> getPunkte() { | |||||
return aktuelleFigur.getPunkte(); | |||||
} | |||||
public List<Figur> getFiguren() { | |||||
return Collections.unmodifiableList(figuren); | |||||
} | |||||
public void endShape() { | |||||
figuren.add(aktuelleFigur); | |||||
aktuelleFigur = new Figur(); | |||||
} | |||||
} |
/* | |||||
* 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; | |||||
/** | |||||
* | |||||
* @author ahren | |||||
*/ | |||||
public class Nachricht | |||||
{ | |||||
private String nachricht; | |||||
public Nachricht(String nachricht) | |||||
{ | |||||
this.nachricht = nachricht; | |||||
} | |||||
/** | |||||
* @return the nachricht | |||||
*/ | |||||
public String getNachricht() { | |||||
return nachricht; | |||||
} | |||||
public void setNachricht(String nachricht) { | |||||
this.nachricht = nachricht; | |||||
} | |||||
} |
} | } | ||||
public void onNext(Figur item) { | public void onNext(Figur item) { | ||||
lg.info("Figur wurde dem Grafikmodel hinzugefügt"); | |||||
model.setFigur(item); | |||||
model.addFigure(item); | |||||
gView.drawFigur(); | gView.drawFigur(); | ||||
// evtl muss die Figur aber zuerst serialisiert werden | |||||
//view.getTxtChat().append(item.getNachricht()); | |||||
lg.info("Figur wurde dem Grafikmodel hinzugefügt"); | |||||
this.subscription.request(1); | this.subscription.request(1); | ||||
} | } | ||||
package ChatProgramm.model; | package ChatProgramm.model; | ||||
import ChatProgramm.util.OhmLogger; | |||||
import ChatProgramm.view.ChatView; | import ChatProgramm.view.ChatView; | ||||
import ChatProgramm.view.GrafikView; | import ChatProgramm.view.GrafikView; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
*/ | */ | ||||
public class Server extends Transmitter | public class Server extends Transmitter | ||||
{ | { | ||||
private static Logger lg = Logger.getLogger("netz"); | |||||
private static Logger lg = OhmLogger.getLogger(); | |||||
private static final int PORT = 35000; //lt. iana port > 2¹⁵ | private static final int PORT = 35000; //lt. iana port > 2¹⁵ | ||||
public Server(ChatView view, GrafikModel model, GrafikView gView) throws IOException { | |||||
super(view, model, gView); | |||||
connect(); | |||||
initIO(); | |||||
} | |||||
public void connect() throws IOException | public void connect() throws IOException | ||||
{ | { | ||||
try | try | ||||
{ | { | ||||
lg.warning("Timeout"+"("+timeout/1000+"s)"); | lg.warning("Timeout"+"("+timeout/1000+"s)"); | ||||
} | } | ||||
} | |||||
public Server(ChatView view, GrafikModel model, GrafikView gView) throws IOException { | |||||
super(view, model, gView); | |||||
connect(); | |||||
initIO(); | |||||
} | } | ||||
} | } |
InputStream is = socket.getInputStream(); | InputStream is = socket.getInputStream(); | ||||
OutputStream os = socket.getOutputStream(); | OutputStream os = socket.getOutputStream(); | ||||
// Bruh im ernst mann muss zuerst den writer und dann den reader initialisieren | |||||
// andersrum ist das blockiert weil die Streams von hinten nach vorne gelesen werden | |||||
writer = new ObjectOutputStream(os); | writer = new ObjectOutputStream(os); | ||||
writer.flush(); | writer.flush(); | ||||
reader = new ObjectInputStream(is); | reader = new ObjectInputStream(is); | ||||
lg.info("Reader / Writer Initialisierung abgeschlossen"); | lg.info("Reader / Writer Initialisierung abgeschlossen"); | ||||
startempfangen(); | startempfangen(); | ||||
lg.info("Warte auf Nachricht"); | |||||
} catch (UnsupportedEncodingException ex) { | } catch (UnsupportedEncodingException ex) { | ||||
Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex); | Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex); | ||||
if (receivedObject instanceof Figur) { | if (receivedObject instanceof Figur) { | ||||
lg.info("Figur erhalten"); | lg.info("Figur erhalten"); | ||||
figur = (Figur) receivedObject; | figur = (Figur) receivedObject; | ||||
// Verarbeiten Sie die empfangene Figur | |||||
} | } | ||||
} catch (IOException ex) { | } catch (IOException ex) { | ||||
Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex); | Logger.getLogger(Transmitter.class.getName()).log(Level.SEVERE, null, ex); | ||||
return figur; | return figur; | ||||
} | } | ||||
// public void disconnect (){ | |||||
// in.close(); | |||||
// out.close(); | |||||
// s.close(); | |||||
// } | |||||
@Override | @Override | ||||
public void run() { | public void run() { |
*/ | */ | ||||
package ChatProgramm.model; | package ChatProgramm.model; | ||||
import ChatProgramm.model.Nachricht; | |||||
/** | /** | ||||
* | * | ||||
* @author ahren | * @author ahren |
* | * | ||||
* @author le | * @author le | ||||
*/ | */ | ||||
public class GrafikView extends JComponent implements Printable | |||||
public class GrafikView extends JComponent | |||||
{ | { | ||||
private static Logger lg = OhmLogger.getLogger(); | private static Logger lg = OhmLogger.getLogger(); | ||||
private static Dimension EINS = new Dimension(1, 1); // Dimension ist eine Klasse die width udn height hält | private static Dimension EINS = new Dimension(1, 1); // Dimension ist eine Klasse die width udn height hält | ||||
}); | }); | ||||
} | } | ||||
public void doPrint() | |||||
{ | |||||
HashPrintRequestAttributeSet printSet = | |||||
new HashPrintRequestAttributeSet(); | |||||
printSet.add(DialogTypeSelection.NATIVE); | |||||
PrinterJob pj = PrinterJob.getPrinterJob(); | |||||
pj.setPrintable(this); | |||||
//Dialog | |||||
if (pj.printDialog(printSet)) | |||||
{ | |||||
try | |||||
{ | |||||
pj.print(printSet); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
JOptionPane.showMessageDialog(this, ex.toString()); | |||||
} | |||||
} | |||||
} | |||||
@Override | |||||
public int print(Graphics gp, PageFormat pf, int pageIndex) throws PrinterException | |||||
{ | |||||
Graphics2D g2p = (Graphics2D)gp; | |||||
if (pageIndex == 0) | |||||
{ | |||||
g2p.translate(pf.getImageableX(), pf.getImageableY()); | |||||
g2p.scale(pf.getImageableWidth() / this.getWidth(), | |||||
pf.getImageableHeight() / this.getHeight()); | |||||
super.print(g2p); | |||||
return Printable.PAGE_EXISTS; | |||||
} | |||||
else | |||||
{ | |||||
return Printable.NO_SUCH_PAGE; // wichtig sonst Papiervernichtung | |||||
} | |||||
} | |||||
} | } |