diff --git a/Applicatie/Panel.java b/Applicatie/Panel.java index a1a2679..a1119e9 100644 --- a/Applicatie/Panel.java +++ b/Applicatie/Panel.java @@ -1,12 +1,15 @@ package Applicatie; import java.awt.BasicStroke; + import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.TexturePaint; import java.awt.geom.AffineTransform; + import java.awt.geom.GeneralPath; + import java.awt.geom.NoninvertibleTransformException; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; @@ -25,6 +28,7 @@ import Listeners.MouseWheel; import Objects.Entrance; import Objects.Path; import Objects.Stage; + import Objects.Toilet; import Objects.Wall; @@ -91,7 +95,6 @@ public class Panel extends JPanel { addMouseMotionListener(new MouseMotion(this)); addMouseWheelListener(new MouseWheel(this)); - } public int getPanelInfoLength() { @@ -144,7 +147,8 @@ public class Panel extends JPanel { 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)); @@ -161,7 +165,9 @@ public class Panel extends JPanel { public AffineTransform getCamera() { AffineTransform tx = new AffineTransform(); - tx.translate(-cameraPoint.getX() + getWidth() / 2, -cameraPoint.getY() + getHeight() / 2); + tx.translate(-cameraPoint.getX() + getWidth() / 2, -cameraPoint.getY() + + getHeight() / 2); + tx.scale(cameraScale, cameraScale); return tx; } @@ -285,9 +291,9 @@ public class Panel extends JPanel { public void removeObject(DrawObject o) { Iterator itr = objects.iterator(); - while(itr.hasNext()) { + while (itr.hasNext()) { DrawObject nextObject = (DrawObject) itr.next(); - if(nextObject.equals(o)) { + if (nextObject.equals(o)) { pp.clearSelected(); itr.remove(); } diff --git a/Applicatie/PropertiesPanel.java b/Applicatie/PropertiesPanel.java index f3fc75d..3c8ad98 100644 --- a/Applicatie/PropertiesPanel.java +++ b/Applicatie/PropertiesPanel.java @@ -25,15 +25,15 @@ public class PropertiesPanel extends JPanel { DrawObject selectedObject = null; Panel p = null; - - Dimension spacerDimension = new Dimension(200,30); + + Dimension spacerDimension = new Dimension(200, 30); JLabel nameLabel; + JTextField locationXField; JTextField locationYField; JTextField scaleField; JTextField rotationField; - PropertiesPanel() { super(); @@ -52,8 +52,8 @@ public class PropertiesPanel extends JPanel { propPanel.setMaximumSize(new Dimension(200, 60)); propPanel.add(propLabel); add(propPanel); - - //NAME + + // NAME JPanel namePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); nameLabel = new JLabel("No Selection"); nameLabel.setFont(new Font("Segoe UI", Font.PLAIN, 20)); @@ -61,11 +61,11 @@ public class PropertiesPanel extends JPanel { namePanel.setMaximumSize(new Dimension(200, 40)); namePanel.add(nameLabel); add(namePanel); - + // SPACER add(Box.createRigidArea(spacerDimension)); - - //BUTTONS + + // BUTTONS JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); JLabel buttonLabel = new JLabel("Actions"); buttonLabel.setFont(new Font("Segoe UI", Font.ITALIC, 20)); @@ -73,8 +73,8 @@ public class PropertiesPanel extends JPanel { buttonPanel.setMaximumSize(new Dimension(200, 40)); buttonPanel.add(buttonLabel); add(buttonPanel); - - //DELETE + + // DELETE JPanel deletePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); JButton deleteButton = new JButton("Delete"); deleteButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); @@ -87,7 +87,7 @@ public class PropertiesPanel extends JPanel { deletePanel.setMaximumSize(new Dimension(200, 50)); deletePanel.add(deleteButton); add(deletePanel); - + // SPACER add(Box.createRigidArea(spacerDimension)); @@ -129,6 +129,7 @@ public class PropertiesPanel extends JPanel { public void keyPressed(KeyEvent e) { } + }); } locationXPanel.add(locationXField); @@ -307,17 +308,21 @@ public class PropertiesPanel extends JPanel { if (component instanceof JTextField) { ((JTextField) component).setText(""); ((JTextField) component).setBackground(Color.WHITE); + } if (component instanceof Container) { clearFields((Container) component); } } + nameLabel.setText("No Selection"); + } private void fillFields() { if (selectedObject != null) { nameLabel.setText(selectedObject.getName()); + locationXField.setText(Math.round(selectedObject.getPosition() .getX()) + ""); locationYField.setText(Math.round(selectedObject.getPosition() diff --git a/Applicatie/Window.java b/Applicatie/Window.java index e22ee95..03bc644 100644 --- a/Applicatie/Window.java +++ b/Applicatie/Window.java @@ -1,35 +1,37 @@ package Applicatie; + import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JPanel; +import Listeners.Keyboard; public class Window extends JFrame { private static final long serialVersionUID = -1324363758675184283L; - Window() - { + Window() { super("Festival Plannner"); setDefaultCloseOperation(EXIT_ON_CLOSE); - setSize(500,600); - setExtendedState( getExtendedState()|JFrame.MAXIMIZED_BOTH ); - - //CONTENT PANELS + setSize(500, 600); + setExtendedState(getExtendedState() | JFrame.MAXIMIZED_BOTH); + + // CONTENT PANELS JPanel contentPanel = new JPanel(new BorderLayout()); PropertiesPanel pp = new PropertiesPanel(); Panel fp = new Panel(pp); contentPanel.add(fp, BorderLayout.CENTER); contentPanel.add(pp, BorderLayout.EAST); - + + 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); } diff --git a/Listeners/Keyboard.java b/Listeners/Keyboard.java new file mode 100644 index 0000000..9c58ec5 --- /dev/null +++ b/Listeners/Keyboard.java @@ -0,0 +1,36 @@ +package Listeners; + +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + +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) { + System.out.println("lala"); + panel.removeObject(panel.getSelectedObject()); + } + } + } + + @Override + public void keyReleased(KeyEvent e) { + + } + + @Override + public void keyTyped(KeyEvent e) { + + } + +} diff --git a/Listeners/Mouse.java b/Listeners/Mouse.java index 30548ae..31ffd23 100644 --- a/Listeners/Mouse.java +++ b/Listeners/Mouse.java @@ -9,6 +9,7 @@ import java.util.Map; import Applicatie.DrawObject; import Applicatie.Panel; + import Objects.Stage; public class Mouse extends MouseAdapter { @@ -73,11 +74,13 @@ public class Mouse extends MouseAdapter { } if (selectedObject != null) selectedObject.setSelected(false); - panel.setDragObject(o); o.setSelected(true); selectedObject = o; panel.setDragObject(o); panel.getPP().setSelected(o); + + panel.setSelectedObject(o); + } } } diff --git a/Listeners/MouseMotion.java b/Listeners/MouseMotion.java index db1f9b2..ff3bf5a 100644 --- a/Listeners/MouseMotion.java +++ b/Listeners/MouseMotion.java @@ -1,4 +1,5 @@ package Listeners; + import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.awt.geom.Point2D; @@ -9,87 +10,138 @@ public class MouseMotion extends MouseMotionAdapter { private Panel panel; - public MouseMotion(Panel panel) - { + public MouseMotion(Panel panel) { this.panel = panel; } 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()) { - 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() )); - System.out.println(panel.getDragObject().getPosition().getX()); - System.out.println(panel.getLastClickPosition().getX()); - System.out.println(clickPoint.getX()); - System.out.println("----------'"); - break; - case "upperLeft": - 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(); - } - break; - case "upperRight": - 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(); - } - break; - 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(); - } - break; - case "bottomRight": - 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(); - } - break; - case "rotate": - double tempval = panel.getDragObject().getRotation() + (panel.getLastClickPosition().getX() - clickPoint.getX()); - panel.getDragObject().setRotation(tempval); - break; + if (panel.getDragObject() != null) { + Point2D objectPoint = panel.getDragObject().getObjectPoint( + panel.getDragObject().getPosition()); + 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())); + + break; + case "upperLeft": + 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(); + } + break; + case "upperRight": + 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(); + } + break; + 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(); + } + break; + case "bottomRight": + 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(); + } + break; + 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() { - double scale = panel.getDragObject().getScale()*1 + 0.02; + 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)); } - + private void resizeSmaller() { - if(panel.getDragObject().getScale() > 0.2) { - double scale = panel.getDragObject().getScale()*1 - 0.02; + 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)); } } } diff --git a/Listeners/MouseWheel.java b/Listeners/MouseWheel.java index c92c43f..59aa825 100644 --- a/Listeners/MouseWheel.java +++ b/Listeners/MouseWheel.java @@ -17,18 +17,6 @@ public class MouseWheel implements MouseWheelListener { } 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; - } - } - if (e.getY() < 150) { if (e.getPreciseWheelRotation() < 0) {