|
@@ -0,0 +1,140 @@
|
|
|
+package ui.view;
|
|
|
+
|
|
|
+import java.awt.BasicStroke;
|
|
|
+import java.awt.Color;
|
|
|
+import java.awt.Graphics;
|
|
|
+import java.awt.Graphics2D;
|
|
|
+import java.awt.RenderingHints;
|
|
|
+import java.awt.event.ComponentEvent;
|
|
|
+import java.awt.event.ComponentListener;
|
|
|
+import java.awt.event.MouseEvent;
|
|
|
+import java.awt.event.MouseListener;
|
|
|
+import java.awt.event.MouseMotionListener;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.awt.Point;
|
|
|
+
|
|
|
+import javax.swing.ImageIcon;
|
|
|
+import javax.swing.JButton;
|
|
|
+import javax.swing.JLabel;
|
|
|
+import javax.swing.JPanel;
|
|
|
+
|
|
|
+import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array;
|
|
|
+
|
|
|
+import classes.CpsObject;
|
|
|
+import ui.controller.Control;
|
|
|
+import ui.model.Model;
|
|
|
+
|
|
|
+class UnitGraph extends JPanel implements MouseListener, MouseMotionListener, ComponentListener {
|
|
|
+
|
|
|
+ private final int NUMBER = 50;
|
|
|
+ private static final long serialVersionUID = 1L;
|
|
|
+ private Control controller;
|
|
|
+ private Model model;
|
|
|
+ private Graphics2D g2;
|
|
|
+ Point[] pointList = new Point[NUMBER];
|
|
|
+
|
|
|
+ private boolean pointDrag = false;
|
|
|
+ private int tempP;
|
|
|
+
|
|
|
+ public UnitGraph(final Model model, Control control) {
|
|
|
+
|
|
|
+
|
|
|
+ this.controller = control;
|
|
|
+ this.model = model;
|
|
|
+ for (int i = 0; i < pointList.length; i++) {
|
|
|
+ pointList[i] = new Point(0,0);
|
|
|
+ }
|
|
|
+ this.addMouseListener(this);
|
|
|
+ this.addMouseMotionListener(this);
|
|
|
+ this.addComponentListener(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Paints all Components on the Canvas
|
|
|
+ *
|
|
|
+ * @param Graphics
|
|
|
+ *
|
|
|
+ */
|
|
|
+ public void paintComponent(Graphics g) {
|
|
|
+ super.paintComponent(g);
|
|
|
+ g2 = (Graphics2D) g;
|
|
|
+ RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
|
|
+ g2.setRenderingHints(rh);
|
|
|
+ g2.setStroke(new BasicStroke(1));
|
|
|
+
|
|
|
+ for (int i = 0; i < pointList.length-1; i++) {
|
|
|
+ g2.drawLine((int)pointList[i].getX(), (int)pointList[i].getY(), (int)pointList[i+1].getX(), (int)pointList[i+1].getY());
|
|
|
+ }
|
|
|
+ g2.drawLine((int)pointList[NUMBER-1].getX(), (int)pointList[NUMBER-1].getY(), this.getWidth(), this.getHeight()/2);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void mouseDragged(MouseEvent e) {
|
|
|
+ if (pointDrag) {
|
|
|
+ pointList[tempP].setLocation(pointList[tempP].getX(), e.getY());
|
|
|
+ pointList[tempP-1].setLocation(pointList[tempP-1].getX(), pointList[tempP-1].getY()+(e.getY()-pointList[tempP-1].getY())/10);
|
|
|
+ pointList[tempP+1].setLocation(pointList[tempP+1].getX(), pointList[tempP-1].getY()+(e.getY()-pointList[tempP-1].getY())/10);
|
|
|
+ }
|
|
|
+ repaint();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void mouseMoved(MouseEvent e) {
|
|
|
+ // TODO Auto-generated method stub
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void mouseClicked(MouseEvent e) {
|
|
|
+ // TODO Auto-generated method stub
|
|
|
+ }
|
|
|
+
|
|
|
+ @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){
|
|
|
+ for (int i = 0; i < pointList.length; i++) {
|
|
|
+ if(e.getX()-this.getWidth()/NUMBER<pointList[i].getX() && e.getX()+this.getWidth()/NUMBER>pointList[i].getX() && e.getY()-10<pointList[i].getY() && e.getY()+10>pointList[i].getY()){
|
|
|
+ pointDrag = true;
|
|
|
+ tempP = i;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void mouseReleased(MouseEvent e) {
|
|
|
+ if (pointDrag) {
|
|
|
+ pointDrag = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void componentResized(ComponentEvent e) {
|
|
|
+ // resize listener
|
|
|
+ System.out.println("resize");
|
|
|
+ for (int i = 0; i < pointList.length; i++) {
|
|
|
+ pointList[i] = new Point((i)*this.getWidth()/NUMBER,this.getHeight()/2);
|
|
|
+ }
|
|
|
+ repaint();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void componentHidden(ComponentEvent e) {
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void componentMoved(ComponentEvent e) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void componentShown(ComponentEvent e) {
|
|
|
+ }
|
|
|
+
|
|
|
+}
|