EdgeView.java 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package View;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Graphics;
  5. import java.awt.Graphics2D;
  6. import java.awt.Point;
  7. import java.util.ArrayList;
  8. import javax.swing.JPanel;
  9. import Model.LayeredGraphEdge;
  10. public class EdgeView extends JPanel {
  11. /**
  12. *
  13. */
  14. private static final long serialVersionUID = 1L;
  15. private LayeredGraphEdge model;
  16. public EdgeView( LayeredGraphEdge model ) {
  17. this.model = model;
  18. }
  19. @Override
  20. public int getX()
  21. {
  22. ArrayList<Point> bps = model.getLinePoints();
  23. double min = bps.get( 0 ).getX();
  24. for( Point p : bps )
  25. min = Math.min( min, p.getX() );
  26. return (int)min - 5;
  27. }
  28. @Override
  29. public int getY()
  30. {
  31. ArrayList<Point> bps = model.getLinePoints();
  32. double min = bps.get( 0 ).getY();
  33. for( Point p : bps )
  34. min = Math.min( min, p.getY() );
  35. return (int)min - 5;
  36. }
  37. @Override
  38. public int getWidth()
  39. {
  40. ArrayList<Point> bps = model.getLinePoints();
  41. double max = bps.get( 0 ).getX();
  42. for( Point p : bps )
  43. max = Math.max( max, p.getX() );
  44. return (int)max + 10;
  45. }
  46. @Override
  47. public int getHeight()
  48. {
  49. ArrayList<Point> bps = model.getLinePoints();
  50. double max = bps.get( 0 ).getY();
  51. for( Point p : bps )
  52. max = Math.max( max, p.getY() );
  53. return (int)max + 10;
  54. }
  55. @Override
  56. public void paint( Graphics g )
  57. {
  58. paintComponent( g );
  59. for( Component c : getComponents() )
  60. c.paint( g.create(
  61. c.getX() + 10,
  62. c.getY() + 10,
  63. Math.min( getWidth() - 10, c.getWidth() + c.getX() + 10 ),
  64. Math.min( getHeight() - 10, c.getHeight() + c.getY() + 10 ) ) );
  65. }
  66. @Override
  67. public void paintComponent( Graphics g )
  68. {
  69. System.out.println( "Clipping: x:" + g.getClip().getBounds().getX() + " y:" + g.getClip().getBounds().getY() + " w:" + g.getClip().getBounds().getWidth() + " h:" + g.getClip().getBounds().getHeight() );
  70. g.setColor( Color.GREEN );
  71. ArrayList<Point> bps = model.getLinePoints();
  72. for( int i = 1; i < bps.size(); i++ )
  73. {
  74. System.out.println( "Draw a Line from (" + (int)bps.get( i - 1 ).getX() + "," + (int)bps.get( i - 1 ).getY() + ") to (" + (int)bps.get( i ).getX() + "," + (int)bps.get( i ).getY() + ")" );
  75. g.drawLine( (int)bps.get( i - 1 ).getX() - getX(), (int)bps.get( i - 1 ).getY() - getY(), (int)bps.get( i ).getX() - getX(), (int)bps.get( i ).getY() - getY() );
  76. }
  77. ((Graphics2D)g).fill( RenderHelper.createArrowShape( new Point( bps.get( bps.size() - 2 ).x - getX(), bps.get( bps.size() - 2 ).y - getY() ), new Point( bps.get( bps.size() - 1 ).x - getX(), bps.get( bps.size() - 1 ).y - getY() ) ) );
  78. }
  79. }