MyCanvas.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package ui.view;
  2. import java.awt.Graphics;
  3. import java.awt.Image;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import java.awt.event.MouseEvent;
  7. import java.awt.event.MouseListener;
  8. import java.awt.event.MouseMotionListener;
  9. import java.util.ArrayList;
  10. import java.util.LinkedList;
  11. import javax.swing.ImageIcon;
  12. import javax.swing.JMenuItem;
  13. import javax.swing.JPanel;
  14. import javax.swing.JPopupMenu;
  15. import classes.CpsObject;
  16. import classes.HolonObject;
  17. import ui.model.*;
  18. class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
  19. private Image img = null; // Contains the image to draw on MyCanvas
  20. private int x = 0;
  21. private int y = 0;
  22. Model model;
  23. boolean dragging = false;
  24. boolean dropDelete = false;
  25. CpsObject tempCps = null;
  26. // PopUpMenu
  27. JPopupMenu popmenu = new JPopupMenu();
  28. JMenuItem itemDelete = new JMenuItem("Delete Object");
  29. public MyCanvas(final Model model) {
  30. this.model = model;
  31. popmenu.add(itemDelete);
  32. itemDelete.setEnabled(false);
  33. itemDelete.addActionListener(new ActionListener() {
  34. @Override
  35. public void actionPerformed(ActionEvent e) {
  36. model.getObjectsOnCanvas().remove(tempCps);
  37. repaint();
  38. }
  39. });
  40. img = new ImageIcon(this.getClass().getResource("/Images/Dummy_House.png")).getImage().getScaledInstance(30, 30,
  41. java.awt.Image.SCALE_SMOOTH);
  42. this.addMouseListener(this);
  43. this.addMouseMotionListener(this);
  44. }
  45. public void paintComponent(Graphics g) {
  46. // Draws the image to the canvas
  47. super.paintComponent(g);
  48. for (CpsObject cps : model.getObjectsOnCanvas()) {
  49. g.drawImage(img, cps.getPos().x, cps.getPos().y, null);
  50. }
  51. }
  52. @Override
  53. public void mouseClicked(MouseEvent e) {
  54. // TODO Auto-generated method stub
  55. }
  56. @Override
  57. public void mouseEntered(MouseEvent e) {
  58. // TODO Auto-generated method stub
  59. }
  60. @Override
  61. public void mouseExited(MouseEvent e) {
  62. // TODO Auto-generated method stub
  63. }
  64. @Override
  65. public void mousePressed(MouseEvent e) {
  66. // TODO Auto-generated method stub
  67. x = e.getX();
  68. y = e.getY();
  69. dropDelete = false;
  70. for (CpsObject cps : model.getObjectsOnCanvas()) {
  71. int cx = cps.getPos().x;
  72. int cy = cps.getPos().y;
  73. if (x - img.getWidth(null) <= cx && y - img.getHeight(null) <= cy && x + img.getWidth(null) >= cx
  74. && y + img.getHeight(null) >= cy) {
  75. tempCps = cps;
  76. if (e.getButton() == e.BUTTON1) {
  77. dragging = true;
  78. } else {
  79. dropDelete = true;
  80. }
  81. }
  82. }
  83. }
  84. @Override
  85. public void mouseReleased(MouseEvent e) {
  86. if (dragging) {
  87. x = e.getX();
  88. y = e.getY();
  89. dragging = false;
  90. tempCps.setPos(e.getX() - 15, e.getY() - 15);
  91. tempCps = null;
  92. repaint();
  93. }
  94. // Rechtsklick Liste
  95. if (e.getButton() == e.BUTTON3) {
  96. if (dropDelete)itemDelete.setEnabled(true);
  97. popmenu.show(e.getComponent(), e.getX(), e.getY());
  98. }
  99. }
  100. @Override
  101. public void mouseDragged(MouseEvent e) {
  102. // TODO Auto-generated method stub
  103. if (dragging) {
  104. tempCps.setPos(e.getX() - 15, e.getY() - 15);
  105. repaint();
  106. System.out.println("drag: " + e.getX() + " " + e.getY());
  107. }
  108. }
  109. @Override
  110. public void mouseMoved(MouseEvent e) {
  111. // TODO Auto-generated method stub
  112. }
  113. }