Compare commits

..

No commits in common. "64a6047ca4d7aeda7e53adbfaff67a740a5f0496" and "22efa7c18f5b7551b5143c68dcd1e5e454cb0e2a" have entirely different histories.

14 changed files with 180 additions and 719 deletions

View File

@ -1067,15 +1067,6 @@ is divided into following sections:
<propertyfile file="${built-jar.properties}">
<entry key="${basedir}" value=""/>
</propertyfile>
<antcall target="-maybe-call-dep">
<param name="call.built.properties" value="${built-jar.properties}"/>
<param location="${project.Aufgabe9_mvcGrafik}" name="call.subproject"/>
<param location="${project.Aufgabe9_mvcGrafik}/build.xml" name="call.script"/>
<param name="call.target" value="jar"/>
<param name="transfer.built-jar.properties" value="${built-jar.properties}"/>
<param name="transfer.not.archive.disabled" value="true"/>
<param name="transfer.do.jlink" value="false"/>
</antcall>
</target>
<target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
<target depends="init" name="-check-automatic-build">
@ -1747,15 +1738,6 @@ is divided into following sections:
<propertyfile file="${built-clean.properties}">
<entry key="${basedir}" value=""/>
</propertyfile>
<antcall target="-maybe-call-dep">
<param name="call.built.properties" value="${built-clean.properties}"/>
<param location="${project.Aufgabe9_mvcGrafik}" name="call.subproject"/>
<param location="${project.Aufgabe9_mvcGrafik}/build.xml" name="call.script"/>
<param name="call.target" value="clean"/>
<param name="transfer.built-clean.properties" value="${built-clean.properties}"/>
<param name="transfer.not.archive.disabled" value="true"/>
<param name="transfer.do.jlink" value="false"/>
</antcall>
</target>
<target depends="init" name="-do-clean">
<delete dir="${build.dir}"/>

View File

@ -1,8 +1,8 @@
build.xml.data.CRC32=d624b1fd
build.xml.data.CRC32=05f3ad23
build.xml.script.CRC32=1a88b66a
build.xml.stylesheet.CRC32=f85dc8f2@1.108.0.48
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=d624b1fd
nbproject/build-impl.xml.script.CRC32=476a1ac9
nbproject/build-impl.xml.data.CRC32=05f3ad23
nbproject/build-impl.xml.script.CRC32=fdc076e6
nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.108.0.48

View File

@ -37,8 +37,7 @@ endorsed.classpath=
excludes=
includes=**
jar.compress=false
javac.classpath=\
${reference.Aufgabe9_mvcGrafik.jar}
javac.classpath=
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
@ -79,8 +78,6 @@ manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=false
platform.active=default_platform
project.Aufgabe9_mvcGrafik=../../T9_mvcGrafik/Aufgabe9_mvcGrafik
reference.Aufgabe9_mvcGrafik.jar=${project.Aufgabe9_mvcGrafik}/dist/Aufgabe9_mvcGrafik.jar
run.classpath=\
${javac.classpath}:\
${build.classes.dir}

View File

@ -11,15 +11,5 @@
<root id="test.src.dir"/>
</test-roots>
</data>
<references xmlns="http://www.netbeans.org/ns/ant-project-references/1">
<reference>
<foreign-project>Aufgabe9_mvcGrafik</foreign-project>
<artifact-type>jar</artifact-type>
<script>build.xml</script>
<target>jar</target>
<clean-target>clean</clean-target>
<id>jar</id>
</reference>
</references>
</configuration>
</project>

View File

@ -29,14 +29,13 @@ public class CommandController implements ActionListener{
public void registerEvents(){
view.getBtnConnect().addActionListener(this);
//ToDo: muss auf gFrame referenzieren
//view.getTfNachricht().addActionListener(this);
view.getTfNachricht().addActionListener(this);
}
public void registerCommands(){
CommandSend commandSend = new CommandSend(view);
invoker.addCommand(view.getBtnConnect(), new CommandConnect(view, commandSend));
//invoker.addCommand(view.getTfNachricht(), commandSend);
invoker.addCommand(view.getTfNachricht(), commandSend);
}
/**

View File

@ -34,21 +34,17 @@ public class CommandSend implements CommandInterface
public CommandSend(ChatView view)
{
this.view = view;
//ToDo: Hier muss auch der gFrame referenziert werden
//this.eingabeFeld = view.getTfNachricht();
this.eingabeFeld = view.getTfNachricht();
transmitterInterface = null;
}
@Override
public void execute()
{
//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("");
// }
if(transmitterInterface != null && !eingabeFeld.getText().isEmpty()){
transmitterInterface.send(eingabeFeld.getText());
eingabeFeld.setText("");
}
}

View File

@ -1,39 +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.model;
import java.awt.Point;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
*
* @author ahren
*/
public class Figur implements Serializable
{
private ArrayList<Point> punkte;
public Figur(){
punkte = new ArrayList<>();
}
public void addPoint(Point p){
punkte.add(p);
}
public List<Point> getPunkte()
{
return Collections.unmodifiableList(punkte);
}
public void clear(){
punkte.clear();
}
}

View File

@ -1,121 +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.model;
import java.awt.Point;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.logging.Logger;
import java.util.prefs.Preferences;
import ChatProgramm.util.OhmLogger;
/**
*
* @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);
}
/**
* Persistenz via Serialisierung
* @param dateiname
* @throws FileNotFoundException
* @throws IOException
*/
public void speicherePunkte(String dateiname) throws FileNotFoundException, IOException
{
// an Preferences denken!!
FileOutputStream fos = new FileOutputStream(dateiname);
//wichtig Puffer -> Performance
BufferedOutputStream bos = new BufferedOutputStream(fos);
//Serialisierung
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(figuren);
oos.flush(); // Puffer
oos.close();
}
public void lesePunkte(String dateiname) throws FileNotFoundException, IOException, ClassNotFoundException
{
// an Preferences denken!!
FileInputStream fis = new FileInputStream(dateiname);
//wichtig Puffer -> Performance
BufferedInputStream bis = new BufferedInputStream(fis);
//Serialisierung
ObjectInputStream ois = new ObjectInputStream(bis);
Object daten = ois.readObject(); // Achtung
// if (daten instanceof ArrayList)
// {
// punkte = (ArrayList<Point>)daten;
// }
//eleganter
if (daten instanceof ArrayList liste)
{
figuren = liste;
}
}
public void endShape() {
figuren.add(aktuelleFigur);
aktuelleFigur = new Figur();
}
/**
* Bestimmt die Adresse des zuletzt besuchten Ordners
* @return letzter Ordner
*/
public String getPref()
{
pref = Preferences.userNodeForPackage(getClass());
return pref.get("lastDirectory", null);
}
/**
* Setzt die Preferenz zu dem zuletzt besuchten Ordner
* @param lastDirectory Bezeichner "lastDirectory"
* @param lastAdress Adresse des zuletzt besuchten Ordners
*/
public void putPref(String lastDirectory, String lastAdress)
{
pref.put(lastDirectory, lastAdress);
}
}

View File

@ -29,10 +29,8 @@ public class ReceiveAdapter implements Subscriber<Nachricht> {
@Override
public void onNext(Nachricht item) {
//ToDo: hier muss der gFrame aufgerufen werden
// evtl muss die Figur aber zuerst serialisiert werden
//view.getTxtChat().append(item.getNachricht());
view.getTxtChat().append(item.getNachricht());
this.subscription.request(1);
}

View File

@ -107,25 +107,45 @@
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
<SubComponents>
<Container class="javax.swing.JPanel" name="jPanel2">
<Component class="javax.swing.JTextField" name="tfNachricht">
<Properties>
<Property name="toolTipText" type="java.lang.String" value=""/>
</Properties>
<Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="tfNachrichtMouseClicked"/>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="tfNachrichtActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
<BorderConstraints direction="Last"/>
</Constraint>
</Constraints>
</Component>
<Container class="javax.swing.JScrollPane" name="jScrollPane2">
<Properties>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[238, 150]"/>
</Property>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
<BorderConstraints direction="Center"/>
</Constraint>
</Constraints>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="400" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="300" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextArea" name="txtChat">
<Properties>
<Property name="columns" type="int" value="20"/>
<Property name="rows" type="int" value="5"/>
<Property name="text" type="java.lang.String" value="Chat:"/>
</Properties>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Form>

View File

@ -25,91 +25,115 @@ public class ChatView extends javax.swing.JFrame
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents()
{
dialogChooseMode = new javax.swing.JDialog();
lblMode = new javax.swing.JLabel();
BtnServer = new javax.swing.JRadioButton();
BtnClient = new javax.swing.JRadioButton();
jPanel1 = new javax.swing.JPanel();
BtnConnect = new javax.swing.JButton();
BtnGrpMode = new javax.swing.ButtonGroup();
jPanel2 = new javax.swing.JPanel();
dialogChooseMode = new javax.swing.JDialog();
lblMode = new javax.swing.JLabel();
BtnServer = new javax.swing.JRadioButton();
BtnClient = new javax.swing.JRadioButton();
jPanel1 = new javax.swing.JPanel();
BtnConnect = new javax.swing.JButton();
BtnGrpMode = new javax.swing.ButtonGroup();
tfNachricht = new javax.swing.JTextField();
jScrollPane2 = new javax.swing.JScrollPane();
txtChat = new javax.swing.JTextArea();
dialogChooseMode.setMinimumSize(new java.awt.Dimension(278, 208));
dialogChooseMode.getContentPane().setLayout(new java.awt.GridLayout(0, 1));
dialogChooseMode.setMinimumSize(new java.awt.Dimension(278, 208));
dialogChooseMode.getContentPane().setLayout(new java.awt.GridLayout(0, 1));
lblMode.setText(" Choose your mode:");
dialogChooseMode.getContentPane().add(lblMode);
lblMode.setText(" Choose your mode:");
dialogChooseMode.getContentPane().add(lblMode);
BtnGrpMode.add(BtnServer);
BtnServer.setText("Server");
BtnServer.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtnServerActionPerformed(evt);
}
});
dialogChooseMode.getContentPane().add(BtnServer);
BtnGrpMode.add(BtnServer);
BtnServer.setText("Server");
BtnServer.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
BtnServerActionPerformed(evt);
}
});
dialogChooseMode.getContentPane().add(BtnServer);
BtnGrpMode.add(BtnClient);
BtnClient.setText("Client");
BtnClient.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtnClientActionPerformed(evt);
}
});
dialogChooseMode.getContentPane().add(BtnClient);
BtnGrpMode.add(BtnClient);
BtnClient.setText("Client");
BtnClient.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
BtnClientActionPerformed(evt);
}
});
dialogChooseMode.getContentPane().add(BtnClient);
BtnConnect.setText("Connect");
BtnConnect.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
BtnConnectActionPerformed(evt);
}
});
BtnConnect.setText("Connect");
BtnConnect.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
BtnConnectActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap(65, Short.MAX_VALUE)
.addComponent(BtnConnect)
.addContainerGap(76, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(BtnConnect)
.addContainerGap(57, Short.MAX_VALUE))
);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap(65, Short.MAX_VALUE)
.addComponent(BtnConnect)
.addContainerGap(76, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(BtnConnect)
.addContainerGap(57, Short.MAX_VALUE))
);
dialogChooseMode.getContentPane().add(jPanel1);
dialogChooseMode.getContentPane().add(jPanel1);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new java.awt.Dimension(568, 548));
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setMinimumSize(new java.awt.Dimension(568, 548));
addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowOpened(java.awt.event.WindowEvent evt)
{
formWindowOpened(evt);
}
});
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
tfNachricht.setToolTipText("");
tfNachricht.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mouseClicked(java.awt.event.MouseEvent evt)
{
tfNachrichtMouseClicked(evt);
}
});
tfNachricht.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
tfNachrichtActionPerformed(evt);
}
});
getContentPane().add(tfNachricht, java.awt.BorderLayout.PAGE_END);
getContentPane().add(jPanel2, java.awt.BorderLayout.CENTER);
jScrollPane2.setPreferredSize(new java.awt.Dimension(238, 150));
pack();
}// </editor-fold>//GEN-END:initComponents
txtChat.setColumns(20);
txtChat.setRows(5);
txtChat.setText("Chat:");
jScrollPane2.setViewportView(txtChat);
getContentPane().add(jScrollPane2, java.awt.BorderLayout.CENTER);
pack();
}// </editor-fold>//GEN-END:initComponents
private void BtnClientActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_BtnClientActionPerformed
{//GEN-HEADEREND:event_BtnClientActionPerformed
@ -121,11 +145,21 @@ public class ChatView extends javax.swing.JFrame
// TODO add your handling code here:
}//GEN-LAST:event_BtnServerActionPerformed
private void tfNachrichtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_tfNachrichtActionPerformed
{//GEN-HEADEREND:event_tfNachrichtActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_tfNachrichtActionPerformed
private void formWindowOpened(java.awt.event.WindowEvent evt)//GEN-FIRST:event_formWindowOpened
{//GEN-HEADEREND:event_formWindowOpened
dialogChooseMode.show();
}//GEN-LAST:event_formWindowOpened
private void tfNachrichtMouseClicked(java.awt.event.MouseEvent evt)//GEN-FIRST:event_tfNachrichtMouseClicked
{//GEN-HEADEREND:event_tfNachrichtMouseClicked
}//GEN-LAST:event_tfNachrichtMouseClicked
private void BtnConnectActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_BtnConnectActionPerformed
{//GEN-HEADEREND:event_BtnConnectActionPerformed
// TODO add your handling code here:
@ -180,16 +214,18 @@ public class ChatView extends javax.swing.JFrame
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JRadioButton BtnClient;
private javax.swing.JButton BtnConnect;
private javax.swing.ButtonGroup BtnGrpMode;
private javax.swing.JRadioButton BtnServer;
private javax.swing.JDialog dialogChooseMode;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JLabel lblMode;
// End of variables declaration//GEN-END:variables
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JRadioButton BtnClient;
private javax.swing.JButton BtnConnect;
private javax.swing.ButtonGroup BtnGrpMode;
private javax.swing.JRadioButton BtnServer;
private javax.swing.JDialog dialogChooseMode;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JLabel lblMode;
private javax.swing.JTextField tfNachricht;
private javax.swing.JTextArea txtChat;
// End of variables declaration//GEN-END:variables
/**
* @return the BtnClient
@ -231,19 +267,19 @@ public class ChatView extends javax.swing.JFrame
return dialogChooseMode;
}
// /**
// * @return the tfNachricht
// */
// public javax.swing.JTextField getTfNachricht()
// {
// return tfNachricht;
// }
//
// /**
// * @return the txtChat
// */
// public javax.swing.JTextArea getTxtChat()
// {
// return txtChat;
// }
/**
* @return the tfNachricht
*/
public javax.swing.JTextField getTfNachricht()
{
return tfNachricht;
}
/**
* @return the txtChat
*/
public javax.swing.JTextArea getTxtChat()
{
return txtChat;
}
}

View File

@ -1,89 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
<NonVisualComponents>
<Component class="javax.swing.JFileChooser" name="FcFileChooser">
</Component>
</NonVisualComponents>
<Properties>
<Property name="defaultCloseOperation" type="int" value="3"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-100,0,0,2,28"/>
<SyntheticProperty name="formSizePolicy" type="int" value="0"/>
<SyntheticProperty name="generateSize" type="boolean" value="true"/>
<SyntheticProperty name="generateCenter" type="boolean" value="true"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
<SubComponents>
<Container class="mvcgrafik.view.GrafikView" name="gZeichenflaeche">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
<BorderConstraints direction="Center"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
<Property name="useNullLayout" type="boolean" value="true"/>
</Layout>
</Container>
<Container class="javax.swing.JToolBar" name="jToolBar1">
<Properties>
<Property name="rollover" type="boolean" value="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
<BorderConstraints direction="First"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/>
<SubComponents>
<Component class="javax.swing.JButton" name="btnFileOpen">
<Properties>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/mvcgrafik/view/Open24.gif"/>
</Property>
<Property name="toolTipText" type="java.lang.String" value="Open File"/>
<Property name="focusable" type="boolean" value="false"/>
<Property name="horizontalTextPosition" type="int" value="0"/>
<Property name="verticalTextPosition" type="int" value="3"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="btnFileSave">
<Properties>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/mvcgrafik/view/Save24.gif"/>
</Property>
<Property name="toolTipText" type="java.lang.String" value="Safe File"/>
<Property name="horizontalTextPosition" type="int" value="0"/>
<Property name="verticalTextPosition" type="int" value="3"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="btnPrint">
<Properties>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/mvcgrafik/view/Print24.gif"/>
</Property>
<Property name="toolTipText" type="java.lang.String" value="Print File"/>
<Property name="focusable" type="boolean" value="false"/>
<Property name="horizontalTextPosition" type="int" value="0"/>
<Property name="verticalTextPosition" type="int" value="3"/>
</Properties>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Form>

View File

@ -1,165 +0,0 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/GUIForms/JFrame.java to edit this template
*/
package ChatProgramm.view;
/**
*
* @author le
*/
public class GrafikFrame extends javax.swing.JFrame
{
/**
* @return the FcFileChooser
*/
public javax.swing.JFileChooser getFcFileChooser()
{
return FcFileChooser;
}
/**
* @return the btnFileOpen
*/
public javax.swing.JButton getBtnFileOpen()
{
return btnFileOpen;
}
/**
* @return the btnFileSave
*/
public javax.swing.JButton getBtnFileSave()
{
return btnFileSave;
}
/**
* @return the gZeichenflaeche
*/
public mvcgrafik.view.GrafikView getgZeichenflaeche()
{
return gZeichenflaeche;
}
/**
* Creates new form GrafikFrame
*/
public GrafikFrame()
{
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
FcFileChooser = new javax.swing.JFileChooser();
gZeichenflaeche = new mvcgrafik.view.GrafikView();
jToolBar1 = new javax.swing.JToolBar();
btnFileOpen = new javax.swing.JButton();
btnFileSave = new javax.swing.JButton();
btnPrint = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().add(gZeichenflaeche, java.awt.BorderLayout.CENTER);
jToolBar1.setRollover(true);
btnFileOpen.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mvcgrafik/view/Open24.gif"))); // NOI18N
btnFileOpen.setToolTipText("Open File");
btnFileOpen.setFocusable(false);
btnFileOpen.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnFileOpen.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jToolBar1.add(btnFileOpen);
btnFileSave.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mvcgrafik/view/Save24.gif"))); // NOI18N
btnFileSave.setToolTipText("Safe File");
btnFileSave.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnFileSave.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jToolBar1.add(btnFileSave);
btnPrint.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mvcgrafik/view/Print24.gif"))); // NOI18N
btnPrint.setToolTipText("Print File");
btnPrint.setFocusable(false);
btnPrint.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
btnPrint.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jToolBar1.add(btnPrint);
getContentPane().add(jToolBar1, java.awt.BorderLayout.PAGE_START);
setSize(new java.awt.Dimension(540, 412));
setLocationRelativeTo(null);
}// </editor-fold>//GEN-END:initComponents
/**
* @param args the command line arguments
*/
public static void main(String args[])
{
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try
{
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels())
{
if ("Nimbus".equals(info.getName()))
{
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
}
catch (ClassNotFoundException ex)
{
java.util.logging.Logger.getLogger(GrafikFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
catch (InstantiationException ex)
{
java.util.logging.Logger.getLogger(GrafikFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
catch (IllegalAccessException ex)
{
java.util.logging.Logger.getLogger(GrafikFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
catch (javax.swing.UnsupportedLookAndFeelException ex)
{
java.util.logging.Logger.getLogger(GrafikFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
new GrafikFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JFileChooser FcFileChooser;
private javax.swing.JButton btnFileOpen;
private javax.swing.JButton btnFileSave;
private javax.swing.JButton btnPrint;
private mvcgrafik.view.GrafikView gZeichenflaeche;
private javax.swing.JToolBar jToolBar1;
// End of variables declaration//GEN-END:variables
/**
* @return the btnPrint
*/
public javax.swing.JButton getBtnPrint() {
return btnPrint;
}
}

View File

@ -1,143 +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.view;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Rectangle2D;
import java.awt.geom.Line2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
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.util.OhmLogger;
/**
*
* @author le
*/
public class GrafikView extends JComponent implements Printable
{
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 Rectangle2D.Float pixel;
private Line2D.Float line;
private GrafikModel model;
private Point from = null;
private Point to = null;
public GrafikView()
{
pixel = new Rectangle2D.Float();
line = new Line2D.Float();
}
public void setModel(GrafikModel model)
{
this.model = model;
}
/**
* 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)
{
Graphics2D g2 = (Graphics2D)this.getGraphics(); // gefährlich!
drawPath(model.getPunkte(),g2);
g2.dispose(); //SEEEEHHHHRRRR WICHTIG!!!!!!!
}
/**
* Hier werden alle Pfade aus dem model neu gezeichnet
* Jedes mal wenn die Maus los gelassen wird, wird dder aktuelle Pfad gespeichert
* @param g
*/
@Override
public void paintComponent(Graphics g)
{
if (model == null) return;
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
model.getFiguren().forEach(figuren->
{
drawPath(figuren.getPunkte(),g2);
});
}
public void drawPath(List<Point> path, Graphics2D g2){
from = path.getFirst();
to = null;
path.forEach(point->
{
to = point;
line.setLine(from,to);
g2.draw(line);
from = to;
});
}
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
}
}
}