Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
21f8bb449a | ||
|
|
6bdad9c08a | ||
|
|
e9941da388 | ||
|
|
b3d25ed538 | ||
|
|
7ea1da3ebd |
@@ -1 +1,2 @@
|
||||
/build/
|
||||
/dist/
|
||||
|
||||
@@ -26,7 +26,7 @@ public class Start
|
||||
GrafikView view = frm.getgZeichenflaeche();
|
||||
view.setModel(model);
|
||||
GrafikController controller = new GrafikController(view, model);
|
||||
CommandController controller_commands = new CommandController(frm, model);
|
||||
CommandController controller_commands = new CommandController(frm,view, model);
|
||||
controller.registerEvents();
|
||||
controller_commands.registerEvents();
|
||||
controller_commands.registerCommands();
|
||||
|
||||
@@ -10,9 +10,11 @@ import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import mvcgrafik.controller.commands.CommandInvoker;
|
||||
import mvcgrafik.controller.commands.OpenCommand;
|
||||
import mvcgrafik.controller.commands.PrintCommand;
|
||||
import mvcgrafik.controller.commands.SaveCommand;
|
||||
import mvcgrafik.model.GrafikModel;
|
||||
import mvcgrafik.view.GrafikFrame;
|
||||
import mvcgrafik.view.GrafikView;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -20,12 +22,14 @@ import mvcgrafik.view.GrafikFrame;
|
||||
*/
|
||||
public class CommandController implements ActionListener
|
||||
{
|
||||
private GrafikFrame view;
|
||||
private GrafikFrame frame;
|
||||
private GrafikView view;
|
||||
private GrafikModel model;
|
||||
private CommandInvoker invoker;
|
||||
|
||||
public CommandController(GrafikFrame view, GrafikModel model)
|
||||
public CommandController(GrafikFrame frame,GrafikView view, GrafikModel model)
|
||||
{
|
||||
this.frame = frame;
|
||||
this.view = view;
|
||||
this.model = model;
|
||||
this.invoker = new CommandInvoker();
|
||||
@@ -33,14 +37,18 @@ public class CommandController implements ActionListener
|
||||
|
||||
public void registerEvents()
|
||||
{
|
||||
view.getBtnFileOpen().addActionListener(this);
|
||||
view.getBtnFileSave().addActionListener(this);
|
||||
frame.getBtnFileOpen().addActionListener(this);
|
||||
frame.getBtnFileSave().addActionListener(this);
|
||||
frame.getBtnPrint().addActionListener(this);
|
||||
|
||||
}
|
||||
|
||||
public void registerCommands()
|
||||
{
|
||||
invoker.addCommand(view.getBtnFileOpen(), new OpenCommand(view, model));
|
||||
invoker.addCommand(view.getBtnFileSave(), new SaveCommand(view,model));
|
||||
invoker.addCommand(frame.getBtnFileOpen(), new OpenCommand(frame, model));
|
||||
invoker.addCommand(frame.getBtnFileSave(), new SaveCommand(frame,model));
|
||||
invoker.addCommand(frame.getBtnPrint(), new PrintCommand(view,model));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -51,7 +59,7 @@ public class CommandController implements ActionListener
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Component key = (Component)e.getSource();
|
||||
invoker.executeCommand(key);
|
||||
if(key == view.getBtnFileOpen()){
|
||||
if(key == frame.getBtnFileOpen()){
|
||||
invoker.deleteStack();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,9 +50,5 @@ public class GrafikController extends MouseAdapter implements MouseMotionListene
|
||||
public void mouseReleased(MouseEvent evt)
|
||||
{
|
||||
model.endShape();
|
||||
if (evt.getButton() == MouseEvent.BUTTON3)
|
||||
{
|
||||
view.doPrint();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* 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 mvcgrafik.controller.commands;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import javax.swing.JFileChooser;
|
||||
import mvcgrafik.model.GrafikModel;
|
||||
import mvcgrafik.view.GrafikFrame;
|
||||
import mvcgrafik.view.GrafikView;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author ahren
|
||||
*/
|
||||
public class PrintCommand implements CommandInterface
|
||||
{
|
||||
private GrafikView view;
|
||||
private GrafikModel model;
|
||||
|
||||
public PrintCommand(GrafikView view, GrafikModel model){
|
||||
this.view = view;
|
||||
this.model = model;
|
||||
}
|
||||
|
||||
/**
|
||||
* Aufrufen des File Choosers in zuletzt verwendeten Ordner, versuchen die
|
||||
* Tabellendatei zu speichern
|
||||
*/
|
||||
@Override
|
||||
public void execute() {
|
||||
this.view.doPrint();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void undo() {
|
||||
throw new UnsupportedOperationException("Not undoable."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
|
||||
}
|
||||
|
||||
@Override
|
||||
public void redo() {
|
||||
throw new UnsupportedOperationException("Not redoable."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUndoable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* 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 mvcgrafik.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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -17,35 +17,37 @@ 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 mvcgrafik.util.OhmLogger;
|
||||
/**
|
||||
*
|
||||
* @author le
|
||||
*/
|
||||
public class GrafikModel
|
||||
{
|
||||
private ArrayList<Point> punkte;
|
||||
private ArrayList<ArrayList> figuren;
|
||||
private Preferences pref;
|
||||
private Figur aktuelleFigur;
|
||||
private ArrayList<Figur> figuren;
|
||||
private Preferences pref;
|
||||
private static Logger lg = OhmLogger.getLogger();
|
||||
|
||||
public GrafikModel()
|
||||
{
|
||||
punkte = new ArrayList<>();
|
||||
aktuelleFigur = new Figur();
|
||||
figuren = new ArrayList<>();
|
||||
}
|
||||
|
||||
public void addPoint(Point p)
|
||||
{
|
||||
punkte.add(p);
|
||||
aktuelleFigur.addPoint(p);
|
||||
}
|
||||
|
||||
public List<Point> getPunkte()
|
||||
{
|
||||
return Collections.unmodifiableList(punkte);
|
||||
return aktuelleFigur.getPunkte();
|
||||
}
|
||||
|
||||
public List<ArrayList> getFiguren(){
|
||||
public List<Figur> getFiguren(){
|
||||
return Collections.unmodifiableList(figuren);
|
||||
}
|
||||
|
||||
@@ -86,13 +88,13 @@ public class GrafikModel
|
||||
if (daten instanceof ArrayList liste)
|
||||
{
|
||||
figuren = liste;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void endShape() {
|
||||
figuren.add(new ArrayList<Point>(punkte));
|
||||
punkte.clear();
|
||||
figuren.add(aktuelleFigur);
|
||||
aktuelleFigur = new Figur();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -114,6 +116,6 @@ public class GrafikModel
|
||||
{
|
||||
pref.put(lastDirectory, lastAdress);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -72,6 +72,17 @@
|
||||
<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>
|
||||
|
||||
@@ -56,39 +56,46 @@ public class GrafikFrame 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() {
|
||||
|
||||
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();
|
||||
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);
|
||||
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
|
||||
getContentPane().add(gZeichenflaeche, java.awt.BorderLayout.CENTER);
|
||||
|
||||
jToolBar1.setRollover(true);
|
||||
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);
|
||||
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);
|
||||
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);
|
||||
|
||||
getContentPane().add(jToolBar1, java.awt.BorderLayout.PAGE_START);
|
||||
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);
|
||||
|
||||
setSize(new java.awt.Dimension(540, 412));
|
||||
setLocationRelativeTo(null);
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
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
|
||||
@@ -139,11 +146,19 @@ public class GrafikFrame extends javax.swing.JFrame
|
||||
});
|
||||
}
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JFileChooser FcFileChooser;
|
||||
private javax.swing.JButton btnFileOpen;
|
||||
private javax.swing.JButton btnFileSave;
|
||||
private mvcgrafik.view.GrafikView gZeichenflaeche;
|
||||
private javax.swing.JToolBar jToolBar1;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,9 @@ public class GrafikView extends JComponent implements Printable
|
||||
private Line2D.Float line;
|
||||
private GrafikModel model;
|
||||
|
||||
private Point from = null;
|
||||
private Point to = null;
|
||||
|
||||
public GrafikView()
|
||||
{
|
||||
pixel = new Rectangle2D.Float();
|
||||
@@ -70,6 +73,7 @@ public class GrafikView extends JComponent implements Printable
|
||||
* 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;
|
||||
@@ -79,21 +83,22 @@ public class GrafikView extends JComponent implements Printable
|
||||
|
||||
model.getFiguren().forEach(figuren->
|
||||
{
|
||||
drawPath(figuren,g2);
|
||||
drawPath(figuren.getPunkte(),g2);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void drawPath(List<Point> path, Graphics2D g2){
|
||||
from = path.getFirst();
|
||||
to = null;
|
||||
|
||||
for(int i=0; i < path.size()-1; i++)
|
||||
{
|
||||
Point from = path.get(i);
|
||||
Point to = path.get(i+1);
|
||||
|
||||
line.setLine(from,to);
|
||||
g2.draw(line);
|
||||
}
|
||||
path.forEach(point->
|
||||
{
|
||||
to = point;
|
||||
line.setLine(from,to);
|
||||
g2.draw(line);
|
||||
from = to;
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 491 B |
Reference in New Issue
Block a user