package ui.view; import java.awt.Graphics; import java.awt.Image; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.util.LinkedList; import javax.swing.ImageIcon; import javax.swing.JPanel; import classes.CpsObject; import classes.HolonObject; class MyCanvas extends JPanel implements MouseListener, MouseMotionListener { private Image img = null; // Contains the image to draw on MyCanvas private int x = 0; private int y = 0; LinkedList choords = new LinkedList<>(); boolean dragging = false; CpsObject tempCPS = null; public MyCanvas() { img = new ImageIcon(this.getClass().getResource("/Images/Dummy_House.png")).getImage().getScaledInstance(30, 30, java.awt.Image.SCALE_SMOOTH); this.addMouseListener(this); this.addMouseMotionListener(this); } public void paintComponent(Graphics g) { // Draws the image to the canvas super.paintComponent(g); for (CpsObject cps : choords){ g.drawImage(img, cps.getPos().x, cps.getPos().y, null); } } @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub HolonObject h = new HolonObject("Haus"); h.setPos(x-15, y-15); choords.add(h); System.out.println("Draw: "+e.getX()+" "+e.getY()+" "+h.getID()); repaint(); } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub x = e.getX(); y = e.getY(); for (CpsObject cps : choords){ int cx = cps.getPos().x; int cy = cps.getPos().y; if (x-img.getWidth(null)<=cx && y-img.getHeight(null) <=cy&& x+img.getWidth(null)>=cx && y+img.getHeight(null)>= cy) { tempCPS = cps; dragging = true; } } } @Override public void mouseReleased(MouseEvent e) { if(dragging){ x = e.getX(); y = e.getY(); dragging = false; tempCPS.setPos(e.getX()-15, e.getY()-15); tempCPS = null; repaint(); } } @Override public void mouseDragged(MouseEvent e) { // TODO Auto-generated method stub if(dragging){ tempCPS.setPos(e.getX()-15, e.getY()-15); repaint(); System.out.println("drag: "+e.getX()+" "+e.getY()); } } @Override public void mouseMoved(MouseEvent e) { // TODO Auto-generated method stub } }