From c29ccec7890cfb6b94bbd4574c7490806c001a68 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 7 Apr 2015 14:58:47 +0200 Subject: [PATCH] ok --- Agenda/Window.java | 3 +- Applicatie/Action.java | 32 +- Applicatie/ControlPanel.java | 131 +++++++ Applicatie/DrawObject.java | 245 -------------- Applicatie/Images.java | 25 +- Applicatie/Main.java | 9 +- Applicatie/MenuBar.java | 73 ++-- Applicatie/Panel.java | 582 ++++++++++++++++++++++---------- Applicatie/PropertiesPanel.java | 471 ++++++++++++++++++++------ Applicatie/SaveLoad.java | 14 +- Applicatie/Visitor.java | 188 ++++++----- Applicatie/Window.java | 44 ++- Listeners/Keyboard.java | 80 +++++ Listeners/Mouse.java | 175 ++++++---- Listeners/MouseMotion.java | 98 ++++-- Listeners/MouseWheel.java | 64 ++-- Objects/DrawObject.java | 347 +++++++++++++++++++ Objects/Entrance.java | 16 +- Objects/Food.java | 15 + Objects/OldPath.java | 19 ++ Objects/Path.java | 119 ++++++- Objects/Podium.java | 19 -- Objects/Stage.java | 19 +- Objects/Toilet.java | 16 +- Objects/Wall.java | 15 +- 25 files changed, 1946 insertions(+), 873 deletions(-) create mode 100644 Applicatie/ControlPanel.java delete mode 100644 Applicatie/DrawObject.java create mode 100644 Listeners/Keyboard.java create mode 100644 Objects/DrawObject.java create mode 100644 Objects/Food.java create mode 100644 Objects/OldPath.java delete mode 100644 Objects/Podium.java diff --git a/Agenda/Window.java b/Agenda/Window.java index 9e83653..9a2df79 100644 --- a/Agenda/Window.java +++ b/Agenda/Window.java @@ -205,7 +205,8 @@ public class Window extends JFrame { public void onExit() { if(JOptionPane.showConfirmDialog(null, "Are you sure you want to close this program?", "Close Agenda", JOptionPane.YES_NO_OPTION) == JOptionPane.OK_OPTION) { - System.exit(0); + setVisible(false); + dispose(); } } diff --git a/Applicatie/Action.java b/Applicatie/Action.java index 0509592..089755a 100644 --- a/Applicatie/Action.java +++ b/Applicatie/Action.java @@ -2,31 +2,37 @@ package Applicatie; import java.awt.geom.Point2D; -public class Action { - +public class Action +{ + private Point2D position; private int starttime; private int duration; - - public Action(Point2D position, int starttime, int duration){ + + public Action(Point2D position, int starttime, int duration) + { this.position = position; this.starttime = starttime; this.duration = duration; } - - public Point2D getPosition(){ + + public Point2D getPosition() + { return position; } - - public int getStartTime(){ + + public int getStartTime() + { return starttime; } - - public int getStoptime(){ + + public int getStoptime() + { return (starttime + duration); } - - public int getDuration(){ + + public int getDuration() + { return duration; } -} +} \ No newline at end of file diff --git a/Applicatie/ControlPanel.java b/Applicatie/ControlPanel.java new file mode 100644 index 0000000..dbacaa5 --- /dev/null +++ b/Applicatie/ControlPanel.java @@ -0,0 +1,131 @@ +package Applicatie; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.BorderFactory; +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; + +public class ControlPanel extends JPanel +{ + private static final long serialVersionUID = 6805244250902524351L; + + private Panel p; + + public ControlPanel(Panel p) + { + super(); + BoxLayout box = new BoxLayout(this, BoxLayout.X_AXIS); + setLayout(box); + this.p = p; + setPreferredSize(new Dimension(0,50)); + setBorder(BorderFactory.createLineBorder(new Color(180, 180, 180))); + setBackground(new Color(220, 220, 220)); + + + JPanel simulatorPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + simulatorPanel.setPreferredSize(new Dimension(350,50)); + simulatorPanel.setMaximumSize(new Dimension(350,50)); + add(simulatorPanel); + { + JLabel simulatorLabel = new JLabel("Simulator: "); + simulatorLabel.setFont(new Font("Segoe UI", Font.ITALIC, 20)); + simulatorPanel.add(simulatorLabel); + + JButton playButton = new JButton("Play"); + playButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); + playButton.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e) + { + p.getT().start(); + } + }); + simulatorPanel.add(playButton); + + JButton pauseButton = new JButton("Pause"); + pauseButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); + pauseButton.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e) + { + p.getT().stop(); + } + }); + simulatorPanel.add(pauseButton); + + JButton stopButton = new JButton("Stop"); + stopButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); + stopButton.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e) + { + p.getT().stop(); + } + }); + simulatorPanel.add(stopButton); + } + + add(Box.createRigidArea(new Dimension(10,50))); + + JPanel timePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + timePanel.setPreferredSize(new Dimension(280,50)); + timePanel.setMaximumSize(new Dimension(280,50)); + add(timePanel); + { + JLabel timeLabel = new JLabel("00:00 00-00-000"); + timeLabel.setFont(new Font("Segoe UI", Font.PLAIN, 20)); + timePanel.add(timeLabel); + + JButton dateButton = new JButton("Pick Date"); + dateButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); + dateButton.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e) + { + ///TODO implement + } + }); + timePanel.add(dateButton); + } + + add(Box.createRigidArea(new Dimension(10,50))); + + JPanel peoplePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + peoplePanel.setPreferredSize(new Dimension(285,50)); + peoplePanel.setMaximumSize(new Dimension(285,50)); + add(peoplePanel); + { + JLabel peopleLabel = new JLabel("0/0 People"); + peopleLabel.setFont(new Font("Segoe UI", Font.PLAIN, 20)); + peoplePanel.add(peopleLabel); + + JButton peopleButton = new JButton("Set People"); + peopleButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); + peopleButton.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e) + { + p.addVisitors(300); + } + }); + peoplePanel.add(peopleButton); + } + + add(Box.createHorizontalGlue()); + + JPanel runningPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + runningPanel.setPreferredSize(new Dimension(195,50)); + runningPanel.setMaximumSize(new Dimension(195,50)); + add(runningPanel); + { + JLabel runningLabel = new JLabel("Simulation stopped"); + runningLabel.setFont(new Font("Segoe UI", Font.PLAIN, 20)); + runningPanel.add(runningLabel); + } + + } +} diff --git a/Applicatie/DrawObject.java b/Applicatie/DrawObject.java deleted file mode 100644 index 18ad0dc..0000000 --- a/Applicatie/DrawObject.java +++ /dev/null @@ -1,245 +0,0 @@ -package Applicatie; -import java.awt.BasicStroke; -import java.awt.Color; -import java.awt.Graphics2D; -import java.awt.Image; -import java.awt.Shape; -import java.awt.geom.AffineTransform; -import java.awt.geom.Ellipse2D; -import java.awt.geom.NoninvertibleTransformException; -import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; -import java.io.Serializable; - -import javax.swing.ImageIcon; - - -public abstract class DrawObject implements Serializable{ - /** - * - */ - private static final long serialVersionUID = 1L; - Point2D position; - double rotation; - double scale; - private String filename; - //private Image rotateImage; - protected boolean selected; - private Rectangle2D rektAngle; - private Rectangle2D upperLeftCorner; - private Rectangle2D upperRightCorner; - private Rectangle2D bottomLeftCorner; - private Rectangle2D bottomRightCorner; - private Ellipse2D rotateDot; - static final int UPPERLEFT = 0; - static final int UPPERRIGHT = 1; - static final int BOTTOMLEFT = 2; - static final int BOTTOMRIGHT = 3; - - public DrawObject(String filename, Point2D position) - { - this.filename = filename; - //rotateImage = new ImageIcon("rotate.png").getImage(); - scale = 1; - rotation = 0; - this.position = position; - } - - public abstract String getName(); - - public void draw(Graphics2D g) - { - AffineTransform tx = getTransform(); - Image image = Images.getImage(filename); - g.drawImage(image, tx, null); - if(selected) { -// g.rotate(Math.toRadians(rotation), image.getWidth(null)/2, image.getHeight(null)/2); - - AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(rotation), position.getX() + image.getWidth(null)/2, position.getY() +image.getHeight(null)/2); - g.transform(rotate); - g.setColor(Color.BLACK); - g.setStroke(new BasicStroke(7)); - rektAngle = new Rectangle2D.Double((int) position.getX(), (int) position.getY(), image.getWidth(null), image.getHeight(null)); - tx = getTransformRectangle(); - rektAngle.setFrame(tx.createTransformedShape(rektAngle).getBounds()); - g.draw(rektAngle); - g.setColor(Color.YELLOW); - upperLeftCorner = new Rectangle2D.Double(rektAngle.getX()-7,rektAngle.getY()-7,15,15); - upperRightCorner = new Rectangle2D.Double(rektAngle.getX() + rektAngle.getWidth()-8,rektAngle.getY()-7,15,15); - bottomLeftCorner = new Rectangle2D.Double(rektAngle.getX()-7,rektAngle.getY() + rektAngle.getHeight()-8,15,15); - bottomRightCorner = new Rectangle2D.Double(rektAngle.getX() + rektAngle.getWidth()-8,rektAngle.getY() + rektAngle.getHeight()-8,15,15); - g.fill(upperLeftCorner); //upperleft - g.fill(upperRightCorner); //upperright - g.fill(bottomLeftCorner); //bottomleft - g.fill(bottomRightCorner); //bottomright - g.setColor(Color.RED); - rotateDot = new Ellipse2D.Double((rektAngle.getX() + (rektAngle.getWidth()/2))-8,rektAngle.getY()-8,15,15); - g.fill(rotateDot); - } - } - - protected AffineTransform getTransform() { - AffineTransform tx = new AffineTransform(); - tx.scale(scale, scale); - tx.translate(position.getX(), position.getY()); - Image image = new ImageIcon(filename).getImage(); - tx.rotate(Math.toRadians(rotation), image.getWidth(null) / 2, image.getHeight(null) / 2); - return tx; - } - - protected AffineTransform getTransformSelection() { - AffineTransform tx = new AffineTransform(); - tx.scale(scale, scale); - tx.translate(position.getX(), position.getY()); - return tx; - } - - /** - * Special transformation for the selection rectangle, because the translation of the image one places the rectangle translated from the image. - * @return affineTransform - */ - private AffineTransform getTransformRectangle() { - AffineTransform tx = new AffineTransform(); - tx.scale(scale, scale); - return tx; - } - - public boolean contains(Point2D clickPoint) { - Shape shape; - Image image = Images.getImage(filename); - if(rektAngle == null) { - shape = new Rectangle2D.Double(0,0,image.getWidth(null), image.getHeight(null)); - return getTransform().createTransformedShape(shape).contains(clickPoint); - } - else { - shape = new Rectangle2D.Double(-7,-7,image.getWidth(null)+7, image.getHeight(null)+7); - return getTransformSelection().createTransformedShape(shape).contains(clickPoint); - } - - } - - public Point2D getObjectPoint(Point2D point) { - try { - return getTransform().inverseTransform(point, null); - } catch (NoninvertibleTransformException e) { - e.printStackTrace(); - } - return null; - } - - /** - * This method checks if the place thats clicked is inside one of the corners. - * - * @param point - * @param corner - * @return if the clicked point is inside one of the corners - */ - public boolean containsCorner(Point2D point, int corner) { - Rectangle2D chosenCorner = null; - switch(corner) { - case 0: - chosenCorner = upperLeftCorner; - break; - case 1: - chosenCorner = upperRightCorner; - break; - case 2: - chosenCorner = bottomLeftCorner; - break; - case 3: - chosenCorner = bottomRightCorner; - break; - case 4: - if(point.getX() > rotateDot.getX() && point.getX() < rotateDot.getX() + rotateDot.getWidth() - && point.getY() > rotateDot.getY() && point.getY() < rotateDot.getY() + rotateDot.getHeight()) - return true; - else - return false; - } - if(point.getX() > chosenCorner.getX() && point.getX() < chosenCorner.getX() + chosenCorner.getWidth() - && point.getY() > chosenCorner.getY() && point.getY() < chosenCorner.getY() + chosenCorner.getHeight()) - return true; - else - return false; - } - - public void setSelected(boolean b) { - selected = b; - } - - public Point2D getPosition() { - return position; - } - - public void setPosition(Point2D position) { - this.position = position; - } - - public double getRotation() { - return rotation; - } - - public void setRotation(double rotation) { - this.rotation = rotation; - } - - public double getScale() { - return scale; - } - - public void setScale(double scale) { - this.scale = scale; - } - - public Image getImage() { - Image image = Images.getImage(filename); - return image; - } - - //public void setImage(Image image) { - // this.image = image; - //} - - public boolean isSelected() { - return selected; - } - - public Rectangle2D getRectangle() { - return rektAngle; - } - - public void setRectangle(Rectangle2D rectangle) { - rektAngle = rectangle; - } - - public int getX(){ - return (int) position.getX(); - } - - public int getY(){ - return (int) position.getY(); - } - - public int getEndX(){ - Image image = Images.getImage(filename); - //return (int) (position.getX() + (image.getWidth(null) * scale)); - return (int) (position.getX() + image.getWidth(null)); - } - - public int getEndY(){ - Image image = Images.getImage(filename); - //return (int) (position.getY() + (image.getHeight(null) * scale)); - return (int) (position.getY() + image.getHeight(null)); - } - - public String getFileName(){ - return filename; - } - - public Point2D getMiddlePoint(){ - Image image = Images.getImage(filename); - Point2D p = new Point2D.Double((position.getX() + (image.getWidth(null)/2)), (position.getY() + (image.getHeight(null)/2))); - return p; - } - -} \ No newline at end of file diff --git a/Applicatie/Images.java b/Applicatie/Images.java index 355823f..4bb45ff 100644 --- a/Applicatie/Images.java +++ b/Applicatie/Images.java @@ -6,13 +6,15 @@ import java.util.Map; import javax.swing.ImageIcon; -public class Images{ - +public class Images +{ + private static Map images; - - public Images() { + + public Images() + { images = new HashMap(); - + images.put("entrance", loadImage("images/entrance.png")); images.put("wc", loadImage("images/wc.png")); images.put("path", loadImage("images/path.jpg")); @@ -20,13 +22,16 @@ public class Images{ images.put("wall", loadImage("images/wall.png")); images.put("stage1", loadImage("images/stage3.png")); images.put("visitor", loadImage("images/visitor.png")); + images.put("food", loadImage("images/food.png")); } - - public static Image loadImage(String path) { + + public static Image loadImage(String path) + { return new ImageIcon(path).getImage(); } - - public static Image getImage(String getter) { + + public static Image getImage(String getter) + { return images.get(getter); } -} +} \ No newline at end of file diff --git a/Applicatie/Main.java b/Applicatie/Main.java index e72306f..7966d16 100644 --- a/Applicatie/Main.java +++ b/Applicatie/Main.java @@ -1,8 +1,11 @@ - package Applicatie; -public class Main { - public static void main(String[] args) { +public class Main +{ + + public static void main(String[] args) + { new Window(); } + } \ No newline at end of file diff --git a/Applicatie/MenuBar.java b/Applicatie/MenuBar.java index 96a48d3..9a01e88 100644 --- a/Applicatie/MenuBar.java +++ b/Applicatie/MenuBar.java @@ -1,4 +1,5 @@ package Applicatie; + import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -6,61 +7,69 @@ import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; - -public class MenuBar extends JMenuBar { - - +public class MenuBar extends JMenuBar +{ private static final long serialVersionUID = 1L; public MenuBar(Window w) { super(); - + JMenu file = new JMenu("File"); - - JMenuItem exit = new JMenuItem("Exit"); - exit.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { + + JMenuItem exit = new JMenuItem("Exit"); + exit.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { w.setVisible(false); w.dispose(); } }); - JMenuItem agenda = new JMenuItem("Open Agenda"); - agenda.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - new Agenda.Window(); + JMenuItem agenda = new JMenuItem("Open Agenda"); + agenda.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + new Agenda.Window(); } }); - - JMenuItem save = new JMenuItem("Save"); - save.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - SaveLoad.save(w.fp); + + JMenuItem save = new JMenuItem("Save terrain"); + save.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + SaveLoad.save(w.getPanel()); } }); - - JMenuItem load = new JMenuItem("Load terrain"); - load.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - SaveLoad.load(w.fp); + + JMenuItem load = new JMenuItem("Load terrain"); + load.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + SaveLoad.load(w.getPanel()); } }); - - JMenuItem loadagenda = new JMenuItem("Load agenda"); - loadagenda.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - w.fp.agenda.loadAgenda(); - w.fp.addVisitors(); + + JMenuItem loadagenda = new JMenuItem("Load agenda"); + loadagenda.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + w.getPanel().getAgenda().loadAgenda(); + w.getPanel().addVisitors(); } }); - + file.add(agenda); - file.add(load); file.add(loadagenda); + file.add(load); file.add(save); file.add(exit); - + add(file); } } \ No newline at end of file diff --git a/Applicatie/Panel.java b/Applicatie/Panel.java index d114894..e5c554b 100644 --- a/Applicatie/Panel.java +++ b/Applicatie/Panel.java @@ -1,8 +1,12 @@ package Applicatie; + import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; +import java.awt.Stroke; import java.awt.TexturePaint; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -14,6 +18,7 @@ import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Iterator; import javax.imageio.ImageIO; import javax.swing.JPanel; @@ -23,60 +28,79 @@ import Agenda.Agenda; import Listeners.Mouse; import Listeners.MouseMotion; import Listeners.MouseWheel; +import Objects.DrawObject; import Objects.Entrance; +import Objects.Food; +import Objects.OldPath; import Objects.Path; -import Objects.Podium; +import Objects.Stage; import Objects.Toilet; import Objects.Wall; - @SuppressWarnings("serial") -public class Panel extends JPanel implements ActionListener { +public class Panel extends JPanel implements ActionListener +{ BufferedImage background; - BufferedImage podiumImage, toiletImage, entranceImage, pathImage, - wallImage; + BufferedImage podiumImage, toiletImage, entranceImage, pathImage, wallImage, foodImage; private int panelInfox, panelInfoy, scrollfactor; private ArrayList panelInfo = new ArrayList(); // private ArrayList panelTypes = new ArrayList(); + ArrayList visitors = new ArrayList<>(); ArrayList objects = new ArrayList<>(); - ArrayList visitors = new ArrayList<>(); + ArrayList paths = new ArrayList<>(); DrawObject dragObject = null; private DrawObject selectedObject; private String clickedOption = "drag"; + private Path currentPath; Point2D cameraPoint = new Point2D.Double(getWidth() / 2, getHeight() / 2); float cameraScale = 1; - PropertiesPanel pp; - + Agenda agenda; Point2D lastClickPosition = new Point(0, 0); Point lastMousePosition = new Point(0, 0); - Agenda agenda; + Point2D selectionPosition = new Point(0, 0); + Images images = new Images(); + javax.swing.Timer t; + int currentTime = 540; int tick = 0; - // how to nieuwe dingen aan het panel toe te voegen: // maak bufferedimage global aan, voeg er een image aan toe, en voeg de // image aan panelInfo toe en het object aan panelTypes. // en maak een case statement die een new Object returnt in // createNewDrawObject. - Panel(PropertiesPanel pp) { + public Point2D getSelectionPosition() + { + return selectionPosition; + } + + public void setSelectionPosition(Point2D selectionPosition) + { + this.selectionPosition = selectionPosition; + } + + Panel(PropertiesPanel pp) + { this.pp = pp; - new Images(); pp.setPanel(this); - try { + try + { background = ImageIO.read(new File("images/grass.jpg")); podiumImage = ImageIO.read(new File("images/stageIcon.png")); toiletImage = ImageIO.read(new File("images/wcIcon.png")); entranceImage = ImageIO.read(new File("images/entranceIcon.png")); pathImage = ImageIO.read(new File("images/pathIcon.png")); wallImage = ImageIO.read(new File("images/wallIcon.png")); - } catch (IOException e) { + foodImage = ImageIO.read(new File("images/foodIcon.png")); + } + catch (IOException e) + { e.printStackTrace(); } panelInfo.add(podiumImage); @@ -84,6 +108,9 @@ public class Panel extends JPanel implements ActionListener { panelInfo.add(entranceImage); panelInfo.add(pathImage); panelInfo.add(wallImage); + panelInfo.add(foodImage); + + agenda = new Agenda(); panelInfox = 0; panelInfoy = 0; @@ -96,59 +123,74 @@ public class Panel extends JPanel implements ActionListener { addMouseListener(new Mouse(this)); addMouseMotionListener(new MouseMotion(this)); - agenda = new Agenda(); - addMouseWheelListener(new MouseWheel(this)); - new Timer(1000/20, this).start(); - + t = new Timer(1000/100, this); } + - public void addVisitors(){ - visitors.add(new Visitor("visitor", new Point(100,300), agenda, objects)); - } - - public int getPanelInfoLength() { + + public int getPanelInfoLength() + { int panelInfoLength = 0; - for (BufferedImage image : panelInfo) { + for (BufferedImage image : panelInfo) + { panelInfoLength += image.getWidth(); } return panelInfoLength; } - public DrawObject createNewDrawObject(int index) { - switch (index) { - case 0: - return new Podium(null); - case 1: - return new Toilet(null); - case 2: - return new Entrance(null); - case 3: - return new Path(null); - case 4: - return new Wall(null); - default: - return null; + public DrawObject createNewDrawObject(int index) + { + switch (index) + { + case 0: + return new Stage(null); + case 1: + return new Toilet(null); + case 2: + return new Entrance(null); + case 3: + return new OldPath(null); + case 4: + return new Wall(null); + case 5: + return new Food(null); + default: + return null; } } - public void add(DrawObject dragObject) { + public void add(DrawObject dragObject) + { objects.add(dragObject); } - public void paintComponent(Graphics g) { + public void addVisitors() + { + visitors.add(new Visitor("visitor", new Point(100, 300), agenda, objects)); + } + + public void addVisitors(int count) + { + for(int i = 0 ; i < count ; i++) + { + visitors.add(new Visitor("visitor", new Point(100, 300), agenda, objects)); + } + } + + public void paintComponent(Graphics g) + { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.setClip(new Rectangle2D.Double(0, 0, getWidth(), 300)); - - // g2.fill(new Ellipse2D.Double(0,0,300,300)); - - // g2.drawImage(podiumImage, 0, 0, null); - + Stroke old = g2.getStroke(); + g2.setStroke(new BasicStroke(10)); g2.drawLine(0, 150, getWidth(), 150); - for (BufferedImage image : panelInfo) { + g2.setStroke(old); + for (BufferedImage image : panelInfo) + { g2.drawImage(image, panelInfox + scrollfactor, panelInfoy, null); panelInfox += image.getWidth(); } @@ -158,26 +200,329 @@ public class Panel extends JPanel implements ActionListener { AffineTransform oldTransform = g2.getTransform(); g2.setTransform(getCamera()); - TexturePaint p = new TexturePaint(background, new Rectangle2D.Double(0,0, 100, 100)); + TexturePaint p = new TexturePaint(background, new Rectangle2D.Double(0, 0, 100, 100)); g2.setPaint(p); g2.fill(new Rectangle2D.Double(-1920, -1080, 3840, 2160)); BasicStroke stroke = new BasicStroke(10); g2.setStroke(stroke); - for (DrawObject o : objects) { + for (Path path : paths) + { + path.draw(g2); + } + for (DrawObject o : objects) + { o.draw(g2); } for (Visitor v : visitors){ v.draw(g2); } - - g2.setClip(null); + g2.setTransform(oldTransform); + if (currentPath != null) + { // Display text while in path making modes. + g2.setColor(Color.WHITE); + g2.setFont(new Font("Verdana", Font.ITALIC, 25)); + g2.drawString("Press enter to finish the path.", 20, 185); + } + g2.setClip(null); + } - - + + public AffineTransform getCamera() + { + AffineTransform tx = new AffineTransform(); + tx.translate(-cameraPoint.getX() + getWidth() / 2, -cameraPoint.getY() + getHeight() / 2); + tx.scale(cameraScale, cameraScale); + return tx; + } + + public Point2D getClickPoint(Point point) + { + try + { + return getCamera().inverseTransform(point, null); + } + catch (NoninvertibleTransformException e1) + { + e1.printStackTrace(); + } + return null; + } + + public void setBackground(BufferedImage background) + { + this.background = background; + } + + public ArrayList getObjects() + { + return objects; + } + + public void setObjects(ArrayList objects) + { + this.objects = objects; + } + + public DrawObject getDragObject() + { + return dragObject; + } + + public void setDragObject(DrawObject dragObject) + { + this.dragObject = dragObject; + } + + public Point2D getCameraPoint() + { + return cameraPoint; + } + + public void setCameraPoint(Point2D cameraPoint) + { + this.cameraPoint = cameraPoint; + } + + public float getCameraScale() + { + return cameraScale; + } + + public void setCameraScale(float cameraScale) + { + this.cameraScale = cameraScale; + } + + public Point2D getLastClickPosition() + { + return lastClickPosition; + } + + public void setLastClickPosition(Point2D lastClickPosition) + { + this.lastClickPosition = lastClickPosition; + } + + public void clearObjects() + { + objects.clear(); + } + + public Point getLastMousePosition() + { + return lastMousePosition; + } + + public void setLastMousePosition(Point lastMousePosition) + { + this.lastMousePosition = lastMousePosition; + } + + public BufferedImage getPodiumImage() + { + return podiumImage; + } + + public void setPodiumImage(BufferedImage podiumImage) + { + this.podiumImage = podiumImage; + } + + public ArrayList getPanelInfo() + { + return panelInfo; + } + + public void setPanelInfo(ArrayList panelInfo) + { + this.panelInfo = panelInfo; + } + + public int getScrollfactor() + { + return scrollfactor; + } + + public void setScrollfactor(int scrollfactor) + { + this.scrollfactor = scrollfactor; + } + + public int getPanelInfox() + { + return panelInfox; + } + + public void setPanelInfox(int panelInfox) + { + this.panelInfox = panelInfox; + } + + public PropertiesPanel getPP() + { + return pp; + } + + public void update() + { + repaint(); + } + + public DrawObject getSelectedObject() + { + return selectedObject; + } + + public void setSelectedObject(DrawObject selectedObject) + { + this.selectedObject = selectedObject; + } + + public String getClickedOption() + { + return clickedOption; + } + + public void setClickedOption(String clickedOption) + { + this.clickedOption = clickedOption; + } + + /** + * Remove a DrawObject from the list. + * + * @param o + * - the DrawObject you want to remove from the list. + */ + public void removeObject(DrawObject o) + { + Iterator itr = objects.iterator(); + while (itr.hasNext()) + { + DrawObject nextObject = (DrawObject) itr.next(); + if (nextObject.equals(o)) + { + pp.clearSelected(); + itr.remove(); + } + repaint(); + } + } + + public void clearObjectSelection() + { + for (DrawObject o : objects) + { + o.setSelected(false); + } + } + + public void checkCollision() + { + boolean collision = false; + for (DrawObject o : getObjects()) + { + if (getSelectedObject().collision(o) && o != getSelectedObject()) + { + collision = true; + getSelectedObject().setRectangleColor(Color.RED); + break; + } + if (!collision) + getSelectedObject().setRectangleColor(Color.BLACK); + } + } + + /** + * Begin making a new path. + */ + public void startPath() + { + setClickedOption("Path"); + currentPath = new Path(); + paths.add(currentPath); + pp.setSelectedPath(currentPath); + } + + /** + * Get the current selected Path. + * + * @return - the selected Path. + */ + public Path getCurrentPath() + { + return currentPath; + } + + /** + * Set the selected Path object. + * + * @param path + * - the selected Path object. + */ + public void setcurrentPath(Path path) + { + currentPath = path; + pp.setSelectedPath(currentPath); + } + + /** + * Checks if the point is contained in one of the path's. + * + * @param point + * - The point to check for. + * @return if the point is contained in one of the path's. + */ + public boolean checkPath(Point2D point) + { + for (Path path : paths) + { + if (path.containsPoint(point)) + { + setcurrentPath(path); + setClickedOption("Path"); + return true; + } + } + return false; + } + + /** + * Remove a path from the list. + * + * @param path + * - the path you want to remove from the list. + */ + public void removePath(Path path) + { + Iterator it = paths.iterator(); + while (it.hasNext()) + { + if (it.next().equals(path)) + { + pp.clearSelected(); + setClickedOption("drag"); + currentPath = null; + it.remove(); + } + repaint(); + } + } + + public Agenda getAgenda() + { + return agenda; + } + + public void setAgenda(Agenda agenda) + { + this.agenda = agenda; + } + @Override public void actionPerformed(ActionEvent e) { tick++; @@ -190,134 +535,17 @@ public class Panel extends JPanel implements ActionListener { for (Visitor v: visitors){ v.update(objects, currentTime, visitors); } - repaint(); - } - - public AffineTransform getCamera() { - AffineTransform tx = new AffineTransform(); - tx.translate(-cameraPoint.getX() + getWidth() / 2, -cameraPoint.getY() + getHeight() / 2); - tx.scale(cameraScale, cameraScale); - return tx; - } - - public Point2D getClickPoint(Point point) { - try { - return getCamera().inverseTransform(point, null); - } catch (NoninvertibleTransformException e1) { - e1.printStackTrace(); - } - return null; - } - - public void setBackground(BufferedImage background) { - this.background = background; - } - - public ArrayList getObjects() { - return objects; - } - - public void setObjects(ArrayList objects) { - this.objects = objects; - } - - public DrawObject getDragObject() { - return dragObject; - } - - public void setDragObject(DrawObject dragObject) { - this.dragObject = dragObject; - } - - public Point2D getCameraPoint() { - return cameraPoint; - } - - public void setCameraPoint(Point2D cameraPoint) { - this.cameraPoint = cameraPoint; - } - - public float getCameraScale() { - return cameraScale; - } - - public void setCameraScale(float cameraScale) { - this.cameraScale = cameraScale; - } - - public Point2D getLastClickPosition() { - return lastClickPosition; - } - - public void setLastClickPosition(Point2D lastClickPosition) { - this.lastClickPosition = lastClickPosition; - } - - public Point getLastMousePosition() { - return lastMousePosition; - } - - public void setLastMousePosition(Point lastMousePosition) { - this.lastMousePosition = lastMousePosition; - } - - public BufferedImage getPodiumImage() { - return podiumImage; - } - - public void setPodiumImage(BufferedImage podiumImage) { - this.podiumImage = podiumImage; - } - - public ArrayList getPanelInfo() { - return panelInfo; - } - - public void setPanelInfo(ArrayList panelInfo) { - this.panelInfo = panelInfo; - } - - public int getScrollfactor() { - return scrollfactor; - } - - public void setScrollfactor(int scrollfactor) { - this.scrollfactor = scrollfactor; - } - - public int getPanelInfox() { - return panelInfox; - } - - public void setPanelInfox(int panelInfox) { - this.panelInfox = panelInfox; - } - - public PropertiesPanel getPP() { - return pp; - } - - public void update() { repaint(); + } - public DrawObject getSelectedObject() { - return selectedObject; + public javax.swing.Timer getT() + { + return t; } - public void setSelectedObject(DrawObject selectedObject) { - this.selectedObject = selectedObject; + public void setT(javax.swing.Timer t) + { + this.t = t; } - - public String getClickedOption() { - return clickedOption; - } - - public void setClickedOption(String clickedOption) { - this.clickedOption = clickedOption; - } - - public void clearObjects(){ - objects.clear(); - } -} \ No newline at end of file +} diff --git a/Applicatie/PropertiesPanel.java b/Applicatie/PropertiesPanel.java index 049a6a8..218a208 100644 --- a/Applicatie/PropertiesPanel.java +++ b/Applicatie/PropertiesPanel.java @@ -1,32 +1,56 @@ package Applicatie; + import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.geom.Point2D; import javax.swing.BorderFactory; +import javax.swing.Box; import javax.swing.BoxLayout; +import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; +import Objects.DrawObject; +import Objects.Path; + + @SuppressWarnings("serial") -public class PropertiesPanel extends JPanel { +public class PropertiesPanel extends JPanel +{ DrawObject selectedObject = null; + Path selectedPath = null; + Panel p = null; + Dimension spacerDimension = new Dimension(200, 10); + + + JLabel nameLabel; + JPanel areaPanel; + Component rigidArea; + JTextField locationXField; JTextField locationYField; JTextField scaleField; JTextField rotationField; + JTextField areaTopField; + JTextField areaBottomField; + JTextField areaLeftField; + JTextField areaRightField; - PropertiesPanel() { + PropertiesPanel() + { super(); BoxLayout box = new BoxLayout(this, BoxLayout.PAGE_AXIS); setLayout(box); @@ -44,17 +68,224 @@ public class PropertiesPanel extends JPanel { propPanel.add(propLabel); add(propPanel); + // NAME + JPanel namePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + nameLabel = new JLabel("No Selection"); + nameLabel.setFont(new Font("Segoe UI", Font.PLAIN, 20)); + namePanel.setPreferredSize(new Dimension(200, 40)); + namePanel.setMaximumSize(new Dimension(200, 40)); + namePanel.add(nameLabel); + add(namePanel); + + // SPACER + add(Box.createRigidArea(spacerDimension)); + + // BUTTONS + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + JLabel buttonLabel = new JLabel("Actions"); + buttonLabel.setFont(new Font("Segoe UI", Font.ITALIC, 20)); + buttonPanel.setPreferredSize(new Dimension(200, 40)); + buttonPanel.setMaximumSize(new Dimension(200, 40)); + buttonPanel.add(buttonLabel); + add(buttonPanel); + + //AREA PANEL: AVAILABLE FOR ACTIONLISTENER + areaPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + areaPanel.setVisible(false); + rigidArea = Box.createRigidArea(spacerDimension); + rigidArea.setVisible(false); + + // BUTTONS ROW 1 + JPanel row1ButtonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + JButton deleteButton = new JButton("Delete"); + deleteButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); + deleteButton.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + if(selectedObject != null) + p.removeObject(selectedObject); + else if(selectedPath != null) { + p.removePath(selectedPath); + } + } + }); + JButton areaButton = new JButton("Area"); + areaButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); + areaButton.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + areaPanel.setVisible(!areaPanel.isVisible()); + rigidArea.setVisible(!rigidArea.isVisible()); + } + }); + row1ButtonPanel.setPreferredSize(new Dimension(200, 50)); + row1ButtonPanel.setMaximumSize(new Dimension(200, 50)); + row1ButtonPanel.add(deleteButton); + row1ButtonPanel.add(areaButton); + add(row1ButtonPanel); + + add(rigidArea); + + //AREA PANEL + JLabel areaLabel = new JLabel("Area size"); + areaLabel.setFont(new Font("Segoe UI", Font.ITALIC, 20)); + areaPanel.setPreferredSize(new Dimension(200, 180)); + areaPanel.setMaximumSize(new Dimension(200, 180)); + areaPanel.add(areaLabel); + add(areaPanel); + { + JPanel areaTopPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + areaTopPanel.setPreferredSize(new Dimension(200, 30)); + areaPanel.add(areaTopPanel); + + JLabel areaTopLabel = new JLabel("Top "); + areaTopPanel.add(areaTopLabel); + areaTopField = new JTextField(); + areaTopField.setPreferredSize(new Dimension(120, 25)); + { + areaTopField.addKeyListener(new KeyListener() + { + + public void keyTyped(KeyEvent e){} + + public void keyReleased(KeyEvent e) + { + try + { + areaTopField.setBackground(Color.WHITE); + int top = Integer.parseInt(areaTopField.getText()); + selectedObject.setAreaTop(top); + p.update(); + } catch (NumberFormatException nfe) + { + areaTopField.setBackground(Color.RED); + } + } + + public void keyPressed(KeyEvent e){} + }); + } + areaTopPanel.add(areaTopField); + } + { + JPanel areaBottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + areaBottomPanel.setPreferredSize(new Dimension(200, 30)); + areaPanel.add(areaBottomPanel); + + JLabel areaBottomLabel = new JLabel("Bottom"); + areaBottomPanel.add(areaBottomLabel); + areaBottomField = new JTextField(); + areaBottomField.setPreferredSize(new Dimension(120, 25)); + { + areaBottomField.addKeyListener(new KeyListener() + { + + public void keyTyped(KeyEvent e){} + + public void keyReleased(KeyEvent e) + { + try + { + areaBottomField.setBackground(Color.WHITE); + int bottom = Integer.parseInt(areaBottomField.getText()); + selectedObject.setAreaBottom(bottom); + p.update(); + } catch (NumberFormatException nfe) + { + areaBottomField.setBackground(Color.RED); + } + } + + public void keyPressed(KeyEvent e){} + }); + } + areaBottomPanel.add(areaBottomField); + } + { + JPanel areaLeftPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + areaLeftPanel.setPreferredSize(new Dimension(200, 30)); + areaPanel.add(areaLeftPanel); + + JLabel areaLeftLabel = new JLabel("Left "); + areaLeftPanel.add(areaLeftLabel); + areaLeftField = new JTextField(); + areaLeftField.setPreferredSize(new Dimension(120, 25)); + { + areaLeftField.addKeyListener(new KeyListener() + { + + public void keyTyped(KeyEvent e){} + + public void keyReleased(KeyEvent e) + { + try + { + areaLeftField.setBackground(Color.WHITE); + int left = Integer.parseInt(areaLeftField.getText()); + selectedObject.setAreaLeft(left); + p.update(); + } catch (NumberFormatException nfe) + { + areaLeftField.setBackground(Color.RED); + } + } + + public void keyPressed(KeyEvent e){} + }); + } + areaLeftPanel.add(areaLeftField); + } + { + JPanel areaRightPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + areaRightPanel.setPreferredSize(new Dimension(200, 30)); + areaPanel.add(areaRightPanel); + + JLabel areaRightLabel = new JLabel("Right "); + areaRightPanel.add(areaRightLabel); + areaRightField = new JTextField(); + areaRightField.setPreferredSize(new Dimension(120, 25)); + { + areaRightField.addKeyListener(new KeyListener() + { + + public void keyTyped(KeyEvent e){} + + public void keyReleased(KeyEvent e) + { + try + { + areaRightField.setBackground(Color.WHITE); + int right = Integer.parseInt(areaRightField.getText()); + selectedObject.setAreaRight(right); + p.update(); + } catch (NumberFormatException nfe) + { + areaRightField.setBackground(Color.RED); + } + } + + public void keyPressed(KeyEvent e){} + }); + } + areaRightPanel.add(areaRightField); + } + + // SPACER + add(Box.createRigidArea(spacerDimension)); + // LOCATION JPanel locationPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); JLabel locationLabel = new JLabel("Location"); locationLabel.setFont(new Font("Segoe UI", Font.ITALIC, 20)); - locationPanel.setPreferredSize(new Dimension(200, 150)); - locationPanel.setMaximumSize(new Dimension(200, 150)); + locationPanel.setPreferredSize(new Dimension(200, 110)); + locationPanel.setMaximumSize(new Dimension(200, 110)); locationPanel.add(locationLabel); add(locationPanel); { JPanel locationXPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); - locationXPanel.setPreferredSize(new Dimension(200, 50)); + locationXPanel.setPreferredSize(new Dimension(200, 30)); locationPanel.add(locationXPanel); JLabel locationXLabel = new JLabel("X"); @@ -62,27 +293,29 @@ public class PropertiesPanel extends JPanel { locationXField = new JTextField(); locationXField.setPreferredSize(new Dimension(150, 25)); { - locationXField.addKeyListener(new KeyListener() { + locationXField.addKeyListener(new KeyListener() + { - public void keyTyped(KeyEvent e) { + public void keyTyped(KeyEvent e) + { + } - try { + public void keyReleased(KeyEvent e) + { + try + { locationXField.setBackground(Color.WHITE); - double xpos = Double.parseDouble(locationXField - .getText()); - selectedObject.setPosition(new Point2D.Double(xpos, - selectedObject.getPosition().getY())); + double xpos = Double.parseDouble(locationXField.getText()); + selectedObject.setPosition(new Point2D.Double(xpos, selectedObject.getPosition().getY())); p.update(); - } catch (NumberFormatException nfe) { + } catch (NumberFormatException nfe) + { locationXField.setBackground(Color.RED); } - } - public void keyReleased(KeyEvent e) { - } - - public void keyPressed(KeyEvent e) { + public void keyPressed(KeyEvent e) + { } }); } @@ -90,7 +323,7 @@ public class PropertiesPanel extends JPanel { } { JPanel locationYPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); - locationYPanel.setPreferredSize(new Dimension(200, 50)); + locationYPanel.setPreferredSize(new Dimension(200, 30)); locationPanel.add(locationYPanel); JLabel locationYLabel = new JLabel("Y"); @@ -98,28 +331,32 @@ public class PropertiesPanel extends JPanel { locationYField = new JTextField(); locationYField.setPreferredSize(new Dimension(150, 25)); { - locationYField.addKeyListener(new KeyListener() { + locationYField.addKeyListener(new KeyListener() + { - public void keyTyped(KeyEvent e) { - try { + public void keyTyped(KeyEvent e) + { + } + + public void keyReleased(KeyEvent e) + { + try + { locationYField.setBackground(Color.WHITE); - double ypos = Double.parseDouble(locationYField - .getText()); - selectedObject.setPosition(new Point2D.Double( - selectedObject.getPosition().getX(), ypos)); + double ypos = Double.parseDouble(locationYField.getText()); + selectedObject.setPosition(new Point2D.Double(selectedObject.getPosition().getX(), ypos)); ; p.update(); - } catch (NumberFormatException nfe) { + } catch (NumberFormatException nfe) + { locationYField.setBackground(Color.RED); } } - public void keyReleased(KeyEvent e) { - } - - public void keyPressed(KeyEvent e) { + public void keyPressed(KeyEvent e) + { } }); } @@ -130,13 +367,13 @@ public class PropertiesPanel extends JPanel { JPanel scalePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); JLabel scaleLabel = new JLabel("Scale"); scaleLabel.setFont(new Font("Segoe UI", Font.ITALIC, 20)); - scalePanel.setPreferredSize(new Dimension(200, 100)); - scalePanel.setMaximumSize(new Dimension(200, 100)); + scalePanel.setPreferredSize(new Dimension(200, 70)); + scalePanel.setMaximumSize(new Dimension(200, 70)); scalePanel.add(scaleLabel); add(scalePanel); { JPanel scalePanel2 = new JPanel(new FlowLayout(FlowLayout.LEFT)); - scalePanel2.setPreferredSize(new Dimension(200, 50)); + scalePanel2.setPreferredSize(new Dimension(200, 30)); scalePanel.add(scalePanel2); JLabel scale2Label = new JLabel(" "); @@ -144,26 +381,29 @@ public class PropertiesPanel extends JPanel { scaleField = new JTextField(); scaleField.setPreferredSize(new Dimension(150, 25)); { - scaleField.addKeyListener(new KeyListener() { + scaleField.addKeyListener(new KeyListener() + { - public void keyTyped(KeyEvent e) { + public void keyTyped(KeyEvent e) + { + } - try { + public void keyReleased(KeyEvent e) + { + try + { scaleField.setBackground(Color.WHITE); - double scale = Double.parseDouble(scaleField - .getText()); + double scale = Double.parseDouble(scaleField.getText()); selectedObject.setScale(scale); p.update(); - } catch (NumberFormatException nfe) { + } catch (NumberFormatException nfe) + { scaleField.setBackground(Color.RED); } - } - public void keyReleased(KeyEvent e) { - } - - public void keyPressed(KeyEvent e) { + public void keyPressed(KeyEvent e) + { } }); } @@ -174,13 +414,13 @@ public class PropertiesPanel extends JPanel { JPanel rotationPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); JLabel rotationLabel = new JLabel("Rotation"); rotationLabel.setFont(new Font("Segoe UI", Font.ITALIC, 20)); - rotationPanel.setPreferredSize(new Dimension(200, 100)); - rotationPanel.setMaximumSize(new Dimension(200, 100)); + rotationPanel.setPreferredSize(new Dimension(200, 80)); + rotationPanel.setMaximumSize(new Dimension(200, 80)); rotationPanel.add(rotationLabel); add(rotationPanel); { JPanel rotationPanel2 = new JPanel(new FlowLayout(FlowLayout.LEFT)); - rotationPanel2.setPreferredSize(new Dimension(200, 50)); + rotationPanel2.setPreferredSize(new Dimension(200, 30)); rotationPanel.add(rotationPanel2); JLabel rotation2Label = new JLabel(" "); @@ -188,27 +428,30 @@ public class PropertiesPanel extends JPanel { rotationField = new JTextField(); rotationField.setPreferredSize(new Dimension(150, 25)); { - rotationField.addKeyListener(new KeyListener() { + rotationField.addKeyListener(new KeyListener() + { - public void keyTyped(KeyEvent e) { + public void keyTyped(KeyEvent e) + { + } - try { + public void keyReleased(KeyEvent e) + { + try + { rotationField.setBackground(Color.WHITE); - int rotation = Integer.parseInt(rotationField - .getText()) % 360; + int rotation = Integer.parseInt(rotationField.getText()) % 360; rotationField.setText(rotation + ""); selectedObject.setRotation(rotation); p.update(); - } catch (NumberFormatException nfe) { + } catch (NumberFormatException nfe) + { rotationField.setBackground(Color.RED); } - } - public void keyReleased(KeyEvent e) { - } - - public void keyPressed(KeyEvent e) { + public void keyPressed(KeyEvent e) + { } }); } @@ -216,79 +459,111 @@ public class PropertiesPanel extends JPanel { } // SPACER - JPanel spacerPanel = new JPanel(); - spacerPanel.setPreferredSize(new Dimension(200, 50)); - spacerPanel.setMaximumSize(new Dimension(200, 50)); - spacerPanel.setBackground(new Color(220, 220, 220)); - add(spacerPanel); + add(Box.createRigidArea(spacerDimension)); - // EXAMPLE - JPanel examplePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); - JLabel exampleLabel = new JLabel("Example"); - exampleLabel.setFont(new Font("Segoe UI", Font.ITALIC, 20)); - examplePanel.setPreferredSize(new Dimension(200, 100)); - examplePanel.setMaximumSize(new Dimension(200, 100)); - examplePanel.add(exampleLabel); - add(examplePanel); + // AGENDA + JPanel agendaPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + JLabel agendaLabel = new JLabel("Agenda"); + agendaLabel.setFont(new Font("Segoe UI", Font.ITALIC, 20)); + agendaPanel.setPreferredSize(new Dimension(200, 100)); + agendaPanel.setMaximumSize(new Dimension(200, 100)); + agendaPanel.add(agendaLabel); + add(agendaPanel); enableComponents(this, false); } - public void setSelected(DrawObject drOb) { + public void setSelected(DrawObject drOb) + { selectedObject = drOb; + selectedPath = null; fillFields(); enableComponents(this, true); } - public void clearSelected() { + public void clearSelected() + { enableComponents(this, false); clearFields(this); selectedObject = null; + selectedPath = null; } - public void update() { - fillFields(); + public void update() + { + if(selectedObject != null) + fillFields(); } - private void enableComponents(Container container, boolean enable) { + private void enableComponents(Container container, boolean enable) + { Component[] components = container.getComponents(); - for (Component component : components) { + for (Component component : components) + { component.setEnabled(enable); - if (component instanceof Container) { + if (component instanceof Container) + { enableComponents((Container) component, enable); } } } - private void clearFields(Container container) { + private void clearFields(Container container) + { Component[] components = container.getComponents(); - for (Component component : components) { - if (component instanceof JTextField) { + for (Component component : components) + { + if (component instanceof JTextField) + { ((JTextField) component).setText(""); + ((JTextField) component).setBackground(Color.WHITE); + } - if (component instanceof Container) { + if (component instanceof Container) + { clearFields((Container) component); } } + + nameLabel.setText("No Selection"); + areaPanel.setVisible(false); + rigidArea.setVisible(false); } - private void fillFields() { - if (selectedObject != null) { - locationXField.setText(Math.round(selectedObject.getPosition() - .getX()) + ""); - locationYField.setText(Math.round(selectedObject.getPosition() - .getY()) + ""); - scaleField - .setText((double) Math.round(selectedObject.getScale() * 10) - / 10 + ""); - rotationField - .setText(Math.round(selectedObject.getRotation() % 360) - + ""); - } + private void fillFields() + { + + nameLabel.setText(selectedObject.getName()); + + locationXField.setText(Math.round(selectedObject.getPosition().getX()) + ""); + locationYField.setText(Math.round(selectedObject.getPosition().getY()) + ""); + scaleField.setText((double) Math.round(selectedObject.getScale() * 10) / 10 + ""); + rotationField.setText(Math.round(selectedObject.getRotation() % 360) + ""); + + areaTopField.setText(selectedObject.getAreaTop() + ""); + areaBottomField.setText(selectedObject.getAreaBottom() + ""); + areaLeftField.setText(selectedObject.getAreaLeft() + ""); + areaRightField.setText(selectedObject.getAreaRight() + ""); } - public void setPanel(Panel p) { + public void setPanel(Panel p) + { this.p = p; } -} \ No newline at end of file + + public void setSelectedPath(Path path) { + selectedObject = null; + selectedPath = path; + fillPathFields(); + } + + private void fillPathFields() { + nameLabel.setText("Path"); + enableComponents(this, true); + locationXField.setEnabled(false); + locationYField.setEnabled(false); + scaleField.setEnabled(false); + rotationField.setEnabled(false); + } +} diff --git a/Applicatie/SaveLoad.java b/Applicatie/SaveLoad.java index cdc6a63..76c422e 100644 --- a/Applicatie/SaveLoad.java +++ b/Applicatie/SaveLoad.java @@ -11,6 +11,8 @@ import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.filechooser.FileFilter; +import Objects.DrawObject; + public class SaveLoad { @@ -21,7 +23,7 @@ public class SaveLoad { fileChooser.setFileFilter(new FileFilter() { @Override public boolean accept(File pathname) { - if(pathname.isFile() && pathname.getName().endsWith(".agn")) + if(pathname.isFile() && pathname.getName().endsWith(".ter")) { return true; }else if(pathname.isDirectory()){return true;}else{return false;} @@ -29,7 +31,7 @@ public class SaveLoad { @Override public String getDescription() { - return ".agn"; + return ".ter"; } }); @@ -39,9 +41,9 @@ public class SaveLoad { if(userSelection == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); - if(!file.getName().endsWith(".agn")) + if(!file.getName().endsWith(".ter")) { - file = new File(file.getAbsolutePath() + ".agn"); + file = new File(file.getAbsolutePath() + ".ter"); } if(file.exists()) @@ -80,7 +82,7 @@ public class SaveLoad { fileChooser.setFileFilter(new FileFilter() { @Override public boolean accept(File pathname) { - if(pathname.isFile() && pathname.getName().endsWith(".agn")) + if(pathname.isFile() && pathname.getName().endsWith(".ter")) { return true; }else if(pathname.isDirectory()){return true;}else{return false;} @@ -88,7 +90,7 @@ public class SaveLoad { @Override public String getDescription() { - return ".agn"; + return ".ter"; } }); diff --git a/Applicatie/Visitor.java b/Applicatie/Visitor.java index 9916f40..da82621 100644 --- a/Applicatie/Visitor.java +++ b/Applicatie/Visitor.java @@ -7,54 +7,60 @@ import java.awt.geom.AffineTransform; import java.awt.geom.Point2D; import java.util.ArrayList; -import javax.swing.ImageIcon; - import Agenda.Agenda; import Agenda.Event; +import Objects.DrawObject; -public class Visitor { +public class Visitor +{ Point2D position; double rotation; + double scale; double speed; String filename; ArrayList actions; Agenda agenda; ArrayList objects; - public Visitor(String filename, Point2D position, Agenda agenda, - ArrayList objects) { + public Visitor(String filename, Point2D position, Agenda agenda, ArrayList objects) + { this.position = position; this.filename = filename; this.rotation = 0; - this.speed = 1 + Math.random()*5; + this.speed = 1 + Math.random() * 4; + scale = 1; actions = new ArrayList(); this.agenda = agenda; this.objects = objects; fillActions(); } - public void draw(Graphics2D g2) + public void draw(Graphics2D g2) { AffineTransform tx = getTransform(); Image image = Images.getImage(filename); g2.drawImage(image, tx, null); } - - private AffineTransform getTransform() { - AffineTransform tx = new AffineTransform(); - tx.translate(position.getX(), position.getY()); + + private AffineTransform getTransform() + { Image image = Images.getImage(filename); + AffineTransform tx = new AffineTransform(); + tx.scale(scale, scale); + tx.translate(position.getX(), position.getY()); +// System.out.println(position.getX()); tx.rotate(rotation, image.getWidth(null) / 2, image.getHeight(null) / 2); return tx; } - public void update(ArrayList objects, int currentTime, - ArrayList visitors) { - Point2D target = new Point(-100, -100); - for (Action a : actions) { - if (currentTime >= a.getStartTime() - && currentTime < a.getStoptime()) { + public void update(ArrayList objects, int currentTime, ArrayList visitors) + { + Point2D target = new Point(500, 500); + for (Action a : actions) + { + if (currentTime >= a.getStartTime() && currentTime < a.getStoptime()) + { target = a.getPosition(); } @@ -62,93 +68,119 @@ public class Visitor { moveToTarget(target, objects, visitors); } - public void moveToTarget(Point2D target, ArrayList objects, ArrayList visitors) { + public void moveToTarget(Point2D target, ArrayList objects, ArrayList visitors) + { - double newRot = Math.atan2(target.getY()-position.getY(), target.getX()- position.getX()); - - int difx = (int)(target.getX() - position.getX()); - int dify = (int)(target.getY() - position.getY()); - int distance = (int) Math.sqrt((difx*difx)+(dify*dify)); - - if (rotation > newRot && distance > 15){ + double newRot = Math.atan2(target.getY() - position.getY(), target.getX() - position.getX()); + + int difx = (int) (target.getX() - position.getX()); + int dify = (int) (target.getY() - position.getY()); + int distance = (int) Math.sqrt((difx * difx) + (dify * dify)); + + if (rotation > newRot && distance > 10) + { rotation -= 0.15; - } else if (rotation < newRot && distance > 15){ + } + else if (rotation < newRot && distance > 10) + { rotation += 0.15; } Point2D oldPosition = position; - //face direction - float directionX = (float)Math.cos(rotation); - float directionY = (float)Math.sin(rotation); - - if (distance > 15){ - position = new Point2D.Double((position.getX() + directionX * speed),(position.getY() + directionY * speed)); + // face direction + float directionX = (float) Math.cos(rotation); + float directionY = (float) Math.sin(rotation); + + if (distance > 10) + { + position = new Point2D.Double((position.getX() + directionX * speed), (position.getY() + directionY * speed)); } - - + boolean possible = true; - for (DrawObject object : objects) { - if (hitTest(object)) { + for (DrawObject object : objects) + { + if (hitTest(object)) + { possible = false; } } - for (Visitor object : visitors) { - if (hitTestVisitor(object) && object != this) { - possible = false; - } - } - if (possible == false) { +// for (Visitor object : visitors) +// { +// if (hitTestVisitor(object) && object != this) +// { +// possible = false; +// } +// } + if (possible == false) + { position = oldPosition; + rotation += 0.2; } } - public void fillActions() { + public void fillActions() + { int startTime = 540; int stopTime = 1260; - while (startTime < stopTime) { + while (startTime < stopTime) + { int random = (int) Math.floor(Math.random() * 51); - if (random < 30) { + if (random < 30) + { Point2D position = null; - for (Event e : agenda.getEvents()) { - if (convertMinutesToHours(startTime) > e.getStart() - && convertMinutesToHours(startTime) < e.getStop()) { - for (DrawObject d : objects) { - if (d.getFileName().equals(e.getStage().getName())) { - position = d.getMiddlePoint(); + for (Event e : agenda.getEvents()) + { + if (convertMinutesToHours(startTime) > e.getStart() && convertMinutesToHours(startTime) < e.getStop()) + { + for (DrawObject d : objects) + { + if (d.getFileName().equals(e.getStage().getName())) + { + position = d.getPosition(); } } } } int randomtime = (int) (40 + (Math.random() * (60 - 40))); - if (position != null) { + if (position != null) + { actions.add(new Action(position, startTime, randomtime)); } startTime = startTime + randomtime; - } else if (random >= 30 && random < 35) { + } + else if (random >= 30 && random < 35) + { Point2D position = null; - for (DrawObject d : objects) { - if (d.getFileName().equals("entrance")) { - position = d.getMiddlePoint(); + for (DrawObject d : objects) + { + if (d.getFileName().equals("entrance")) + { + position = d.getPosition(); } } - if (position != null) { + if (position != null) + { actions.add(new Action(position, startTime, 35)); startTime = startTime + 35; } startTime = startTime + 35; - } else if (random > 35) { + } + else if (random > 35) + { Point2D position = null; - for (DrawObject d : objects) { - if (d.getFileName().equals("wc")) { - position = d.getMiddlePoint(); - + for (DrawObject d : objects) + { + if (d.getFileName().equals("wc")) + { + position = d.getPosition(); } } - if (position != null) { + if (position != null) + { actions.add(new Action(position, startTime, 35)); } startTime = startTime + 35; @@ -157,7 +189,8 @@ public class Visitor { } } - public int convertMinutesToHours(int startTime) { + public int convertMinutesToHours(int startTime) + { int time = 0; int hours = startTime / 60; int minutes = startTime % 60; @@ -165,27 +198,26 @@ public class Visitor { return time; } - public int getEndX() { + public int getEndX() + { Image image = Images.getImage(filename); return (int) (position.getX() + image.getWidth(null)); } - public int getEndY() { + public int getEndY() + { Image image = Images.getImage(filename); return (int) (position.getY() + image.getHeight(null)); } - public boolean hitTest(DrawObject to2) { - return (getEndX() >= to2.getX() && getEndY() >= to2.getY() - && to2.getEndX() >= position.getX() && to2.getEndY() >= position - .getY()); - + public boolean hitTest(DrawObject to2) + { + return (getEndX() >= to2.getPosition().getX() && getEndY() >= to2.getPosition().getY() && to2.getEndX() >= position.getX() && to2.getEndY() >= position.getY()); + } - public boolean hitTestVisitor(Visitor v) { - return (getEndX() >= v.position.getX() - && getEndY() >= v.position.getY() - && v.getEndX() >= position.getX() && v.getEndY() >= position - .getY()); - } -} +// public boolean hitTestVisitor(Visitor v) +// { +// return (getEndX() >= v.position.getX() && getEndY() >= v.position.getY() && v.getEndX() >= position.getX() && v.getEndY() >= position.getY()); +// } +} \ No newline at end of file diff --git a/Applicatie/Window.java b/Applicatie/Window.java index a6b81f6..0539319 100644 --- a/Applicatie/Window.java +++ b/Applicatie/Window.java @@ -1,38 +1,50 @@ package Applicatie; + import java.awt.BorderLayout; +import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JPanel; +import Listeners.Keyboard; -public class Window extends JFrame { +public class Window extends JFrame +{ private static final long serialVersionUID = -1324363758675184283L; - - Panel fp; - Window() - { + private Panel fp; + + Window() { super("Festival Plannner"); setDefaultCloseOperation(EXIT_ON_CLOSE); - setSize(500,600); - setExtendedState( getExtendedState()|JFrame.MAXIMIZED_BOTH ); - - //CONTENT PANELS + //setSize(500, 600); + setMinimumSize(new Dimension(1160, 680)); + setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH); + + // CONTENT PANELS JPanel contentPanel = new JPanel(new BorderLayout()); PropertiesPanel pp = new PropertiesPanel(); fp = new Panel(pp); contentPanel.add(fp, BorderLayout.CENTER); + ControlPanel cp = new ControlPanel(fp); + contentPanel.add(cp, BorderLayout.SOUTH); contentPanel.add(pp, BorderLayout.EAST); + contentPanel.add(fp, BorderLayout.CENTER); + + addKeyListener(new Keyboard(fp)); setContentPane(contentPanel); - //END CONTENT PANELS - - - //MENUBAR + // END CONTENT PANELS + + // MENUBAR setJMenuBar(new MenuBar(this)); - //END MENUBAR - + // END MENUBAR + setFocusable(true); setVisible(true); } -} \ No newline at end of file + + public Panel getPanel() { + return fp; + } +} diff --git a/Listeners/Keyboard.java b/Listeners/Keyboard.java new file mode 100644 index 0000000..b2c5984 --- /dev/null +++ b/Listeners/Keyboard.java @@ -0,0 +1,80 @@ +package Listeners; + +import java.awt.Color; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.geom.Point2D; + +import Applicatie.Panel; + +public class Keyboard implements KeyListener { + + private Panel panel; + + public Keyboard(Panel panel) { + this.panel = panel; + } + + @Override + public void keyPressed(KeyEvent e) { + if(e.getKeyCode() == e.VK_DELETE ) { + if(panel.getSelectedObject() != null) + panel.removeObject(panel.getSelectedObject()); + else if(panel.getCurrentPath() != null) + panel.removePath(panel.getCurrentPath()); + } + else if(e.getKeyCode() == e.VK_LEFT) { + if(panel.getSelectedObject() != null) + panel.getSelectedObject().setPosition(new Point2D.Double(panel.getSelectedObject().getPosition().getX()-5,panel.getSelectedObject().getPosition().getY())); + panel.checkCollision(); + } + else if(e.getKeyCode() == e.VK_RIGHT) { + if(panel.getSelectedObject() != null) + panel.getSelectedObject().setPosition(new Point2D.Double(panel.getSelectedObject().getPosition().getX()+5,panel.getSelectedObject().getPosition().getY())); + panel.checkCollision(); + } + else if(e.getKeyCode() == e.VK_UP) { + if(panel.getSelectedObject() != null) + panel.getSelectedObject().setPosition(new Point2D.Double(panel.getSelectedObject().getPosition().getX(),panel.getSelectedObject().getPosition().getY()-5)); + panel.checkCollision(); + } + else if(e.getKeyCode() == e.VK_DOWN) { + if(panel.getSelectedObject() != null) + panel.getSelectedObject().setPosition(new Point2D.Double(panel.getSelectedObject().getPosition().getX(),panel.getSelectedObject().getPosition().getY()+5)); + panel.checkCollision(); + } + else if(e.getKeyCode() == e.VK_ENTER) { + if(panel.getClickedOption().equals("Path")) { + panel.setClickedOption("drag"); + panel.getCurrentPath().setTempPoint(null); + panel.setcurrentPath(null); + panel.getPP().clearSelected(); + } + } + else if(e.getKeyCode() == e.VK_P) { + panel.startPath(); + } + panel.repaint(); + } + + @Override + public void keyReleased(KeyEvent e) { + //if(e.getKeyCode() == e.VK_LEFT) { + checkCollision(); + //} + } + + @Override + public void keyTyped(KeyEvent e) { + } + + private void checkCollision() { + if(panel.getSelectedObject() != null) { + if(panel.getSelectedObject().getRectangleColor() != Color.BLACK) { + panel.getSelectedObject().setPosition(panel.getSelectionPosition()); + panel.getSelectedObject().setRectangleColor(Color.BLACK); + } + panel.repaint(); + } + } +} diff --git a/Listeners/Mouse.java b/Listeners/Mouse.java index 74d6dfa..e611c2c 100644 --- a/Listeners/Mouse.java +++ b/Listeners/Mouse.java @@ -1,96 +1,139 @@ package Listeners; +import java.awt.Color; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.geom.Point2D; import java.awt.image.BufferedImage; -import java.util.Iterator; -import java.util.Map; -import Applicatie.DrawObject; import Applicatie.Panel; -import Objects.Podium; +import Objects.DrawObject; +import Objects.Stage; -public class Mouse extends MouseAdapter { +public class Mouse extends MouseAdapter +{ private Panel panel; private DrawObject selectedObject; - public Mouse(Panel panel) { + public Mouse(Panel panel) + { this.panel = panel; selectedObject = null; } - public void mousePressed(MouseEvent e) { + public void mousePressed(MouseEvent e) + { Point2D clickPoint = panel.getClickPoint(e.getPoint()); panel.setLastClickPosition(clickPoint); panel.setLastMousePosition(e.getPoint()); - if (e.getY() < 150) { - // if(e.getX() < 51) //51 = width podium image - // panel.setDragObject(new Podium(clickPoint)); - // else - // panel.setDragObject(new Toilet(clickPoint)); - int i = 0; - int last = 0; - for (BufferedImage image : panel.getPanelInfo()) { - if (e.getX() >= panel.getScrollfactor() - && e.getX() < last + image.getWidth() - + panel.getScrollfactor()) { - DrawObject tempDrawObj = panel.createNewDrawObject(i); - tempDrawObj.setPosition(clickPoint); - panel.setDragObject(tempDrawObj); - break; - } - i++; - last += image.getWidth(); - - } - if (panel.getDragObject() != null) { - panel.add(panel.getDragObject()); - } - } else { - for (DrawObject o : panel.getObjects()) { - if (o.contains(clickPoint)) { - if (o == selectedObject) { - boolean upperLeft = o.containsCorner(clickPoint, 0); - boolean upperRight = o.containsCorner(clickPoint, 1); - boolean bottomLeft = o.containsCorner(clickPoint, 2); - boolean bottomRight = o.containsCorner(clickPoint, 3); - boolean rotate = o.containsCorner(clickPoint, 4); - if (upperLeft) { - panel.setClickedOption("upperLeft"); - } else if (upperRight) { - panel.setClickedOption("upperRight"); - } else if (bottomLeft) { - panel.setClickedOption("bottomLeft"); - } else if (bottomRight) { - panel.setClickedOption("bottomRight"); - } else if (rotate) { - panel.setClickedOption("rotate"); - } else { - panel.setClickedOption("drag"); - } + if(!panel.getClickedOption().equals("Path")) { + if (e.getY() < 150) + { + int i = 0; + int last = 0; + for (BufferedImage image : panel.getPanelInfo()) + { + if (e.getX() >= panel.getScrollfactor() && e.getX() < last + image.getWidth() + panel.getScrollfactor()) + { + DrawObject tempDrawObj = panel.createNewDrawObject(i); + tempDrawObj.setPosition(clickPoint); + if(!panel.getObjects().isEmpty()) + panel.clearObjectSelection(); + panel.setDragObject(tempDrawObj); + panel.getDragObject().setSelected(true); + panel.getPP().setSelected(tempDrawObj); + panel.setSelectedObject(tempDrawObj); + selectedObject = tempDrawObj; + break; } - if (selectedObject != null) - selectedObject.setSelected(false); - panel.setDragObject(o); - o.setSelected(true); - selectedObject = o; - panel.setDragObject(o); - panel.getPP().setSelected(o); + i++; + last += image.getWidth(); + } + if (panel.getDragObject() != null) + { + panel.add(panel.getDragObject()); } } + else + { + for (DrawObject o : panel.getObjects()) + { + if (o.contains(clickPoint)) + { + if (o == selectedObject) + { + boolean upperLeft = o.containsCorner(clickPoint, 0); + boolean upperRight = o.containsCorner(clickPoint, 1); + boolean bottomLeft = o.containsCorner(clickPoint, 2); + boolean bottomRight = o.containsCorner(clickPoint, 3); + boolean rotate = o.containsCorner(clickPoint, 4); + if (upperLeft) + { + panel.setClickedOption("upperLeft"); + } + else if (upperRight) + { + panel.setClickedOption("upperRight"); + } + else if (bottomLeft) + { + panel.setClickedOption("bottomLeft"); + } + else if (bottomRight) + { + panel.setClickedOption("bottomRight"); + } + else if (rotate) + { + panel.setClickedOption("rotate"); + } + else + { + panel.setClickedOption("drag"); + } + } + if (selectedObject != null) + selectedObject.setSelected(false); + o.setSelected(true); + selectedObject = o; + panel.setDragObject(o); + panel.getPP().setSelected(o); + panel.setSelectedObject(o); + panel.setSelectionPosition(panel.getDragObject().getPosition()); + + } + } + panel.checkPath(clickPoint); + } + if (panel.getDragObject() == null && selectedObject != null) + { + selectedObject.setSelected(false); + panel.setSelectedObject(null); + panel.getPP().clearSelected(); + selectedObject = null; + } } - if (panel.getDragObject() == null && selectedObject != null) { - selectedObject.setSelected(false); - selectedObject = null; + else { //Making path. + panel.getCurrentPath().addPoint(new Point2D.Double(clickPoint.getX(),clickPoint.getY())); } panel.repaint(); } - public void mouseReleased(MouseEvent e) { - panel.setDragObject(null); - panel.setClickedOption("drag"); + + public void mouseReleased(MouseEvent e) + { + if(panel.getDragObject() != null) { + if(panel.getDragObject().getRectangleColor() != Color.RED) { + panel.setDragObject(null); + panel.setClickedOption("drag"); + } + else { + panel.getDragObject().setPosition(panel.getSelectionPosition()); + panel.getDragObject().setRectangleColor(Color.BLACK); + } + panel.setSelectionPosition(panel.getSelectedObject().getPosition()); + } panel.repaint(); } -} \ No newline at end of file +} diff --git a/Listeners/MouseMotion.java b/Listeners/MouseMotion.java index 4e459c8..cd6ae6f 100644 --- a/Listeners/MouseMotion.java +++ b/Listeners/MouseMotion.java @@ -1,11 +1,15 @@ package Listeners; + +import java.awt.Color; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.awt.geom.Point2D; import Applicatie.Panel; +import Objects.DrawObject; -public class MouseMotion extends MouseMotionAdapter { +public class MouseMotion extends MouseMotionAdapter +{ private Panel panel; @@ -14,78 +18,98 @@ public class MouseMotion extends MouseMotionAdapter { this.panel = panel; } - public void mouseDragged(MouseEvent e) { + public void mouseDragged(MouseEvent e) + { Point2D clickPoint = panel.getClickPoint(e.getPoint()); - if(panel.getDragObject() != null) { - Point2D objectPoint = panel.getDragObject().getObjectPoint(panel.getDragObject().getPosition()); - switch(panel.getClickedOption()) { + if (panel.getDragObject() != null) + { + switch (panel.getClickedOption()) + { case "drag": - if(panel.getDragObject() != null) - panel.getDragObject().setPosition(new Point2D.Double( - (panel.getDragObject().getPosition().getX() ) - ((panel.getLastClickPosition().getX() - clickPoint.getX()) ) / panel.getDragObject().getScale(), - (panel.getDragObject().getPosition().getY()) - (panel.getLastClickPosition().getY() - clickPoint.getY()) / panel.getDragObject().getScale() )); + if (panel.getDragObject() != null) + panel.getDragObject().setPosition(new Point2D.Double((panel.getDragObject().getPosition().getX()) - ((panel.getLastClickPosition().getX() - clickPoint.getX())) / panel.getDragObject().getScale(), (panel.getDragObject().getPosition().getY()) - (panel.getLastClickPosition().getY() - clickPoint.getY()) / panel.getDragObject().getScale())); + panel.checkCollision(); break; case "upperLeft": - if(clickPoint.getX() < panel.getDragObject().getPosition().getX() && clickPoint.getY() < panel.getDragObject().getPosition().getY()) { + if (clickPoint.getX() < panel.getDragObject().getPosition().getX() && clickPoint.getY() < panel.getDragObject().getPosition().getY()) + { resizeBigger(); } - else if (clickPoint.getX() > panel.getDragObject().getPosition().getX() && clickPoint.getY() > panel.getDragObject().getPosition().getY()) { - resizeSmaller(); + else if (clickPoint.getX() > panel.getDragObject().getPosition().getX() && clickPoint.getY() > panel.getDragObject().getPosition().getY()) + { + resizeSmaller(clickPoint); } break; case "upperRight": - if(clickPoint.getX() > panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() < panel.getDragObject().getRectangle().getY()) { + if (clickPoint.getX() > panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() < panel.getDragObject().getRectangle().getY()) + { resizeBigger(); } - else if (clickPoint.getX() < panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() > panel.getDragObject().getRectangle().getY()) { - resizeSmaller(); + else if (clickPoint.getX() < panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() > panel.getDragObject().getRectangle().getY()) + { + resizeSmaller(clickPoint); } break; - case "bottomLeft": - if(clickPoint.getX() < panel.getDragObject().getRectangle().getX() && clickPoint.getY() > panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) { + case "bottomLeft": + if (clickPoint.getX() < panel.getDragObject().getRectangle().getX() && clickPoint.getY() > panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) + { resizeBigger(); } - else if (clickPoint.getX() > panel.getDragObject().getRectangle().getX() && clickPoint.getY() < panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) { - resizeSmaller(); + else if (clickPoint.getX() > panel.getDragObject().getRectangle().getX() && clickPoint.getY() < panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) + { + resizeSmaller(clickPoint); } break; case "bottomRight": - if(clickPoint.getX() > panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() > panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) { + if (clickPoint.getX() > panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() > panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) + { resizeBigger(); } - else if (clickPoint.getX() < panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() < panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) { - resizeSmaller(); + else if (clickPoint.getX() < panel.getDragObject().getRectangle().getX() + panel.getDragObject().getRectangle().getWidth() && clickPoint.getY() < panel.getDragObject().getRectangle().getY() + panel.getDragObject().getRectangle().getHeight()) + { + resizeSmaller(clickPoint); } break; - case "rotate": - double tempval = panel.getDragObject().getRotation() + (panel.getLastClickPosition().getX() - clickPoint.getX()); + case "rotate": + double tempval = panel.getDragObject().getRotation() - (panel.getLastClickPosition().getX() - clickPoint.getX()); panel.getDragObject().setRotation(tempval); break; } } - else { - panel.setCameraPoint(new Point2D.Double( - panel.getCameraPoint().getX() + (panel.getLastMousePosition().getX() - e.getX()), - panel.getCameraPoint().getY() + (panel.getLastMousePosition().getY() - e.getY()) - )); - } + else + { + panel.setCameraPoint(new Point2D.Double(panel.getCameraPoint().getX() + (panel.getLastMousePosition().getX() - e.getX()), panel.getCameraPoint().getY() + (panel.getLastMousePosition().getY() - e.getY()))); + } + panel.repaint(); panel.setLastMousePosition(e.getPoint()); panel.setLastClickPosition(clickPoint); panel.getPP().update(); } - private void resizeBigger() { + public void mouseMoved(MouseEvent e) { + if(panel.getClickedOption().equals("Path")) + panel.getCurrentPath().setTempPoint(panel.getClickPoint(e.getPoint())); + panel.repaint(); + } + + private void resizeBigger() + { double scale = panel.getDragObject().getScale()*1 + 0.02; panel.getDragObject().setScale(scale); - panel.getDragObject().setPosition(new Point2D.Double(panel.getDragObject().getPosition().getX()-2,panel.getDragObject().getPosition().getY()-2)); + panel.getDragObject().setPosition(new Point2D.Double(panel.getDragObject().getPosition().getX() -2, panel.getDragObject().getPosition().getY() - 2)); + panel.checkCollision(); } - - private void resizeSmaller() { - if(panel.getDragObject().getScale() > 0.2) { + + private void resizeSmaller(Point2D clickPoint) + { + System.out.println(clickPoint.getX()); + if (panel.getDragObject().getScale() > 0.2) + { double scale = panel.getDragObject().getScale()*1 - 0.02; panel.getDragObject().setScale(scale); - panel.getDragObject().setPosition(new Point2D.Double(panel.getDragObject().getPosition().getX()+2,panel.getDragObject().getPosition().getY()+2)); + panel.getDragObject().setPosition(new Point2D.Double(panel.getDragObject().getPosition().getX() +2, panel.getDragObject().getPosition().getY() +2 )); + panel.checkCollision(); } } -} \ No newline at end of file +} diff --git a/Listeners/MouseWheel.java b/Listeners/MouseWheel.java index c92c43f..b71ab7b 100644 --- a/Listeners/MouseWheel.java +++ b/Listeners/MouseWheel.java @@ -1,59 +1,61 @@ package Listeners; +import java.awt.Point; import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; import java.awt.geom.Point2D; -import Applicatie.DrawObject; import Applicatie.Panel; -public class MouseWheel implements MouseWheelListener { +public class MouseWheel implements MouseWheelListener +{ private Panel panel; private int scrollfactor; - public MouseWheel(Panel panel) { + public MouseWheel(Panel panel) + { this.panel = panel; scrollfactor = 20; } - public void mouseWheelMoved(MouseWheelEvent e) { - Point2D clickPoint = panel.getClickPoint(e.getPoint()); - for (DrawObject o : panel.getObjects()) { - if (o.contains(clickPoint)) { - double scale = o.getScale() * 1 - + (e.getPreciseWheelRotation() / 10.0); - o.setScale(scale); - panel.getPP().update(); - panel.repaint(); - return; - } - } + public void mouseWheelMoved(MouseWheelEvent e) + { + if (e.getY() < 150) + { - if (e.getY() < 150) { - - if (e.getPreciseWheelRotation() < 0) { - if (panel.getScrollfactor() + scrollfactor - + panel.getPanelInfoLength() < panel.getWidth()) { - panel.setScrollfactor(panel.getScrollfactor() - + scrollfactor); + if (e.getPreciseWheelRotation() < 0) + { + if (panel.getScrollfactor() + scrollfactor + panel.getPanelInfoLength() < panel.getWidth()) + { + panel.setScrollfactor(panel.getScrollfactor() + scrollfactor); } - } else { - if (panel.getScrollfactor() - scrollfactor >= 0) { - panel.setScrollfactor(panel.getScrollfactor() - - scrollfactor); + } else + { + if (panel.getScrollfactor() - scrollfactor >= 0) + { + panel.setScrollfactor(panel.getScrollfactor() - scrollfactor); } } - } else { + } else + { // cameraPoint - double cameraScale = panel.getCameraScale() * 1 - - (e.getPreciseWheelRotation() / 10); - panel.setCameraScale((float) cameraScale); + double cameraScale = panel.getCameraScale() * 1 - (e.getPreciseWheelRotation() / 10); + if (cameraScale >= 0.1 && cameraScale < 4) + { + panel.setCameraScale((float) cameraScale); + //panel.setCameraPoint(new Point2D.Double(e.getX()-(panel.getWidth()/2)-panel.getCameraPoint().getX(), e.getY()-(panel.getHeight()/2) - panel.getCameraPoint().getY())); + //panel.setCameraPoint( new Point2D.Double( + // -panel.getClickPoint(new Point(e.getX(), e.getY())).getX(), + // -panel.getClickPoint(new Point(e.getX(), e.getY())).getY() + // )); + //TODO FIX + } } panel.repaint(); } -} \ No newline at end of file +} diff --git a/Objects/DrawObject.java b/Objects/DrawObject.java new file mode 100644 index 0000000..9e1c9c6 --- /dev/null +++ b/Objects/DrawObject.java @@ -0,0 +1,347 @@ +package Objects; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Shape; +import java.awt.geom.AffineTransform; +import java.awt.geom.Ellipse2D; +import java.awt.geom.NoninvertibleTransformException; +import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; +import java.io.Serializable; + +import javax.swing.ImageIcon; + +import Applicatie.Images; + +public abstract class DrawObject implements Serializable +{ + Point2D position; + double rotation; + double scale; + int width; + int height; +// private Image image; + protected boolean selected; + private String filename; + + protected int areaTop; + protected int areaBottom; + protected int areaLeft; + protected int areaRight; + + private Rectangle2D rektAngle; + private Rectangle2D upperLeftCorner; + private Rectangle2D upperRightCorner; + private Rectangle2D bottomLeftCorner; + private Rectangle2D bottomRightCorner; + private Ellipse2D rotateDot; + + static final int UPPERLEFT = 0; + static final int UPPERRIGHT = 1; + static final int BOTTOMLEFT = 2; + static final int BOTTOMRIGHT = 3; + private Color rectangleColor; + + public DrawObject(String filename, Point2D position) + { +// image = new ImageIcon(filename).getImage(); + + Image image = Images.getImage(filename); + width = image.getWidth(null); + height = image.getHeight(null); + this.filename = filename; + scale = 1; + rotation = 0; + this.position = position; + rectangleColor = Color.BLACK; + + areaTop = 0; + areaBottom = 0; + areaLeft = 0; + areaRight = 0; + } + + public abstract String getName(); + + public void draw(Graphics2D g) + { + AffineTransform tx = getTransform(); + Image image = Images.getImage(filename); + g.drawImage(image, tx, null); + if (selected) + { + // g.rotate(Math.toRadians(rotation), width/2, + // height/2); + AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(rotation), position.getX() + image.getWidth(null) / 2, position.getY() + image.getHeight(null) / 2); + // g.transform(rotate); + g.setColor(rectangleColor); + g.setStroke(new BasicStroke(7)); + rektAngle = new Rectangle2D.Double((int) position.getX() - areaLeft, (int) position.getY() - areaTop, width + areaLeft + areaRight, height + areaTop + areaBottom); + tx = getTransformRectangle(); + rektAngle.setFrame(tx.createTransformedShape(rektAngle).getBounds()); + g.draw(rektAngle); + g.setColor(Color.YELLOW); + upperLeftCorner = new Rectangle2D.Double(rektAngle.getX() - 7, rektAngle.getY() - 7, 15, 15); + upperRightCorner = new Rectangle2D.Double(rektAngle.getX() + rektAngle.getWidth() - 8, rektAngle.getY() - 7, 15, 15); + bottomLeftCorner = new Rectangle2D.Double(rektAngle.getX() - 7, rektAngle.getY() + rektAngle.getHeight() - 8, 15, 15); + bottomRightCorner = new Rectangle2D.Double(rektAngle.getX() + rektAngle.getWidth() - 8, rektAngle.getY() + rektAngle.getHeight() - 8, 15, 15); + g.fill(upperLeftCorner); // upperleft + g.fill(upperRightCorner); // upperright + g.fill(bottomLeftCorner); // bottomleft + g.fill(bottomRightCorner); // bottomright + g.setColor(Color.RED); + rotateDot = new Ellipse2D.Double((rektAngle.getX() + (rektAngle.getWidth() / 2)) - 8, rektAngle.getY() - 8, 15, 15); + g.fill(rotateDot); + + } + } + + protected AffineTransform getTransform() + { + AffineTransform tx = new AffineTransform(); + tx.scale(scale, scale); + tx.translate(position.getX(), position.getY()); + System.out.println(position.getX()); + tx.rotate(Math.toRadians(rotation), (width + areaLeft + areaRight) / 2, (height + areaTop + areaBottom) / 2); + return tx; + } + + protected AffineTransform getTransformSelection() + { + AffineTransform tx = new AffineTransform(); + tx.scale(scale, scale); + tx.translate(position.getX(), position.getY()); + return tx; + } + + /** + * Special transformation for the selection rectangle, because the + * translation of the image one places the rectangle translated from the + * image. + * + * @return affineTransform + */ + private AffineTransform getTransformRectangle() + { + AffineTransform tx = new AffineTransform(); + tx.scale(scale, scale); + return tx; + } + + public boolean contains(Point2D clickPoint) + { + Shape shape; + if (rektAngle == null) + { + shape = new Rectangle2D.Double(0 - areaLeft, 0 - areaTop, width + areaLeft + areaRight, height + areaTop + areaBottom); + return getTransform().createTransformedShape(shape).contains(clickPoint); + + } + else + { + shape = new Rectangle2D.Double(-9 - areaLeft, -9 - areaTop, width + 13 + areaLeft + areaRight, height + 13 + areaTop + areaBottom); + return getTransformSelection().createTransformedShape(shape).contains(clickPoint); + } + + } + + public Point2D getObjectPoint(Point2D point) + { + try + { + return getTransform().inverseTransform(point, null); + + } + catch (NoninvertibleTransformException e) + { + e.printStackTrace(); + } + return null; + } + + /** + * Checking collision. + * + * @param object + * . the drawObject to check collision with. + * @return if there is a collision. + */ + public boolean collision(DrawObject object) + { + Shape ownShape = getRectangle(); + Rectangle2D otherRectangle = object.getTransform().createTransformedShape(object.getImageRectangle()).getBounds2D(); + if(ownShape != null && otherRectangle != null) { + if (ownShape.intersects(otherRectangle)) + return true; + else + return false; + } + else + return false; + } + + /** + * This method checks if the place thats clicked is inside one of the + * corners. + * + * @param point + * @param corner + * @return if the clicked point is inside one of the corners + */ + public boolean containsCorner(Point2D point, int corner) + { + Rectangle2D chosenCorner = null; + switch (corner) + { + case 0: + chosenCorner = upperLeftCorner; + break; + case 1: + chosenCorner = upperRightCorner; + break; + case 2: + chosenCorner = bottomLeftCorner; + break; + case 3: + chosenCorner = bottomRightCorner; + break; + case 4: + if (point.getX() > rotateDot.getX() && point.getX() < rotateDot.getX() + rotateDot.getWidth() && point.getY() > rotateDot.getY() && point.getY() < rotateDot.getY() + rotateDot.getHeight()) + return true; + else + return false; + + } + if (point.getX() > chosenCorner.getX() && point.getX() < chosenCorner.getX() + chosenCorner.getWidth() && point.getY() > chosenCorner.getY() && point.getY() < chosenCorner.getY() + chosenCorner.getHeight()) + return true; + else + return false; + } + + public void setSelected(boolean b) + { + selected = b; + } + + public Point2D getPosition() + { + return position; + } + + public void setPosition(Point2D position) + { + this.position = position; + } + + public double getRotation() + { + return rotation; + } + + public void setRotation(double rotation) + { + this.rotation = rotation; + } + + public double getScale() + { + return scale; + } + + public void setScale(double scale) + { + this.scale = scale; + } + + public boolean isSelected() + { + return selected; + } + + public Rectangle2D getRectangle() + { + return rektAngle; + } + + public void setRectangle(Rectangle2D rectangle) + { + rektAngle = rectangle; + } + + public Color getRectangleColor() + { + return rectangleColor; + } + + public void setRectangleColor(Color rectangleColor) + { + this.rectangleColor = rectangleColor; + } + + public Rectangle2D getImageRectangle() + { + Image image = Images.getImage(filename); + return new Rectangle2D.Double(0, 0, image.getWidth(null), image.getHeight(null)); + } + + public int getAreaTop() + { + return areaTop; + } + + public void setAreaTop(int areaTop) + { + this.areaTop = areaTop; + } + + public int getAreaBottom() + { + return areaBottom; + } + + public void setAreaBottom(int areaBottom) + { + this.areaBottom = areaBottom; + } + + public int getAreaLeft() + { + return areaLeft; + } + + public void setAreaLeft(int areaLeft) + { + this.areaLeft = areaLeft; + } + + public int getAreaRight() + { + return areaRight; + } + + public void setAreaRight(int areaRight) + { + this.areaRight = areaRight; + } + + public int getEndX() + { + Image image = Images.getImage(filename); + return (int) (position.getX() + image.getWidth(null)); + } + + public int getEndY() + { + Image image = Images.getImage(filename); + return (int) (position.getY() + image.getHeight(null)); + } + + public String getFileName() + { + return filename; + } + +} diff --git a/Objects/Entrance.java b/Objects/Entrance.java index ee2e3ce..f4de61b 100644 --- a/Objects/Entrance.java +++ b/Objects/Entrance.java @@ -1,17 +1,19 @@ package Objects; + import java.awt.geom.Point2D; -import Applicatie.DrawObject; +public class Entrance extends DrawObject +{ - -public class Entrance extends DrawObject { - - public Entrance(Point2D position) { + public Entrance(Point2D position) + { super("entrance", position); } @Override - public String getName() { + public String getName() + { return "Entrance"; } -} \ No newline at end of file + +} diff --git a/Objects/Food.java b/Objects/Food.java new file mode 100644 index 0000000..3ef3973 --- /dev/null +++ b/Objects/Food.java @@ -0,0 +1,15 @@ +package Objects; +import java.awt.geom.Point2D; + + +public class Food extends DrawObject { + + public Food(Point2D position) { + super("food", position); + } + + public String getName() { + return "Food"; + } + +} diff --git a/Objects/OldPath.java b/Objects/OldPath.java new file mode 100644 index 0000000..c966ee4 --- /dev/null +++ b/Objects/OldPath.java @@ -0,0 +1,19 @@ +package Objects; + +import java.awt.geom.Point2D; + +public class OldPath extends DrawObject +{ + + public OldPath(Point2D position) + { + super("path", position); + } + + @Override + public String getName() + { + return "Path"; + } + +} diff --git a/Objects/Path.java b/Objects/Path.java index 16770cf..67cbe12 100644 --- a/Objects/Path.java +++ b/Objects/Path.java @@ -1,17 +1,118 @@ package Objects; + +import java.awt.BasicStroke; +import java.awt.Graphics2D; +import java.awt.Shape; +import java.awt.TexturePaint; +import java.awt.geom.Line2D; import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; -import Applicatie.DrawObject; +import javax.imageio.ImageIO; + +/** + * Create's a path. + * @author Wesley de Hek + * @version 1.2 + */ +public class Path { -public class Path extends DrawObject { - - public Path(Point2D position) { - super("path", position); + private ArrayList points; + private ArrayList lines; + private Point2D tempPoint; + private BufferedImage pathBackground; + + /** + * Constructor. + */ + public Path() { + points = new ArrayList<>(); + lines = new ArrayList<>(); + try { + pathBackground = ImageIO.read(new File("images/newPath.png")); + } catch (IOException e) { + e.printStackTrace(); + } } - - public String getName() { - return "Path"; + + /** + * Draws the path. + * @param g2 - the Graphics2D object. + */ + public void draw(Graphics2D g2) { + TexturePaint paint = new TexturePaint(pathBackground,new Rectangle2D.Double(0,0,128,128)); + g2.setPaint(paint); + g2.setStroke(new BasicStroke(30,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND)); + if(!points.isEmpty()) { + for(int i = 1; i < points.size(); i++) { + Point2D previousPoint = points.get(i-1); + Point2D point = points.get(i); + g2.drawLine((int) previousPoint.getX(),(int) previousPoint.getY(),(int) point.getX(),(int) point.getY()); + } + //Drawing line that follows the mouse: + if(tempPoint != null) { + Point2D lastPoint = points.get(points.size()-1); + g2.drawLine((int) lastPoint.getX(),(int) lastPoint.getY(),(int) tempPoint.getX(),(int) tempPoint.getY()); + } + } } - + + /** + * Check if one of the lines contains the given point. + * @param point - the point you want to containment with. + * @return if the path contains the point. + */ + public boolean containsPoint(Point2D point) { + for(Shape line : getPath()) { + if(line.contains(point)) { + return true; + } + } + return false; + } + + /** + * Get array with line's from the points. + * @return a array with all the lines of the path. + */ + public ArrayList getPath() { + lines.clear(); + for(int i = 1; i < points.size(); i++) { + Point2D previousPoint = points.get(i-1); + Point2D point = points.get(i); + Line2D line = new Line2D.Double((int) previousPoint.getX(),(int) previousPoint.getY(),(int) point.getX(),(int) point.getY()); + BasicStroke stroke = new BasicStroke(30,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND); + lines.add(stroke.createStrokedShape(line)); + } + return lines; + } + + /** + * Add a point to the path. + * @param point - the point you want the path to pass. + */ + public void addPoint(Point2D point) { + points.add(point); + } + + /** + * Get all the path points. + * @return all the points of the path. + */ + public ArrayList getPoints() { + return points; + } + + /** + * Set the temporary point, useful for following the mouse while drawing the path. + * @param point - the point of the mouse. + */ + public void setTempPoint(Point2D point) { + tempPoint = point; + } } \ No newline at end of file diff --git a/Objects/Podium.java b/Objects/Podium.java deleted file mode 100644 index c311496..0000000 --- a/Objects/Podium.java +++ /dev/null @@ -1,19 +0,0 @@ -package Objects; -import java.awt.geom.Point2D; - -import Applicatie.DrawObject; - - -public class Podium extends DrawObject { - - public Podium(Point2D position) { - super("stage", position); - } - - @Override - public String getName() { - - return "stage"; - } - -} \ No newline at end of file diff --git a/Objects/Stage.java b/Objects/Stage.java index c543ada..c006d71 100644 --- a/Objects/Stage.java +++ b/Objects/Stage.java @@ -1,19 +1,18 @@ package Objects; + import java.awt.geom.Point2D; -import Applicatie.DrawObject; - - -public class Stage extends DrawObject { - - public Stage(Point2D position) { - super("stage1", position); +public class Stage extends DrawObject +{ + public Stage(Point2D position) + { + super("stage", position); } @Override - public String getName() { + public String getName() + { return "Stage"; } - -} \ No newline at end of file +} diff --git a/Objects/Toilet.java b/Objects/Toilet.java index 141af2f..f15000f 100644 --- a/Objects/Toilet.java +++ b/Objects/Toilet.java @@ -1,19 +1,19 @@ package Objects; + import java.awt.geom.Point2D; -import Applicatie.DrawObject; +public class Toilet extends DrawObject +{ - -public class Toilet extends DrawObject { - - public Toilet(Point2D position) { + public Toilet(Point2D position) + { super("wc", position); } @Override - public String getName() { + public String getName() + { return "Toilet"; } - -} \ No newline at end of file +} diff --git a/Objects/Wall.java b/Objects/Wall.java index aae5ba2..a1341f1 100644 --- a/Objects/Wall.java +++ b/Objects/Wall.java @@ -1,18 +1,19 @@ package Objects; + import java.awt.geom.Point2D; -import Applicatie.DrawObject; +public class Wall extends DrawObject +{ - -public class Wall extends DrawObject { - - public Wall(Point2D position) { + public Wall(Point2D position) + { super("wall", position); } @Override - public String getName() { + public String getName() + { return "Wall"; } -} \ No newline at end of file +}