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)); g2.setColor(Color.LIGHT_GRAY); for (int i = 0; i < pointList.length; i++) { g2.drawLine((int)pointList[i].getX(), 0, (int)pointList[i].getX(), this.getHeight()); } g2.setColor(Color.BLACK); g2.setStroke(new BasicStroke(2)); 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()); } } @Override public void mouseDragged(MouseEvent e) { if (pointDrag && e.getY()>= this.getHeight()/3) { pointList[tempP].setLocation(pointList[tempP].getX(), e.getY()); } 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/2<=pointList[i].getX() && e.getX()+this.getWidth()/NUMBER/2>=pointList[i].getX() && e.getY()-10pointList[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-1),this.getHeight()/3); } repaint(); } @Override public void componentHidden(ComponentEvent e) { } @Override public void componentMoved(ComponentEvent e) { } @Override public void componentShown(ComponentEvent e) { } }