MyCanvas.java 3.3 KB

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