NodeView.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package View;
  2. import java.awt.BasicStroke;
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.Graphics;
  7. import java.awt.Graphics2D;
  8. import javax.swing.*;
  9. import Model.LayeredGraphNode;
  10. /**
  11. * A drawable representation of a node.
  12. * @author kolja
  13. *
  14. */
  15. public class NodeView extends JPanel {
  16. private static final long serialVersionUID = 1L;
  17. private LayeredGraphNode model;
  18. public NodeView( LayeredGraphNode model ) {
  19. this.model = model;
  20. model.setView( this );
  21. setSize( (int)model.getWidth(), (int)model.getHeight() );
  22. }
  23. @Override
  24. public int getX()
  25. {
  26. return (int)model.getX();
  27. }
  28. @Override
  29. public int getY()
  30. {
  31. return (int)model.getY();
  32. }
  33. @Override
  34. public Dimension getPreferredSize()
  35. {
  36. return new Dimension( (int)model.getWidth(), (int)model.getHeight() );
  37. }
  38. @Override
  39. public void paint( Graphics g )
  40. {
  41. System.out.println( super.getWidth() + " " + super.getHeight() );
  42. double scale = Math.min( (double)super.getWidth() / (int)model.getWidth(), (double)super.getHeight() / (int)model.getHeight());
  43. System.out.println( scale );
  44. ((Graphics2D)g).scale( scale, scale );
  45. paintComponent( g );
  46. for( Component c : getComponents() )
  47. {
  48. c.paint( g.create(
  49. c.getX() + 25,
  50. c.getY() + 25,
  51. Math.min( (int)model.getWidth() - 25, c.getPreferredSize().width + c.getX() + 25 ),
  52. Math.min( (int)model.getHeight() - 25, c.getPreferredSize().height + c.getY() + 25 ) ) );
  53. System.out.println( c.getX() + " " + c.getY() + " " + c.getPreferredSize() + " " + scale );
  54. }
  55. }
  56. @Override
  57. public void paintComponent( Graphics g )
  58. {
  59. /*else
  60. {
  61. g.setColor( Color.WHITE );
  62. g.fillRect( 0, 0, getWidth()-1, getHeight()-1 );
  63. }*/
  64. Graphics2D g2 = (Graphics2D)g;
  65. g2.setColor( model.getColor() );
  66. g2.setStroke(new BasicStroke(5));
  67. if( model.getContainedNodes().size() == 0 )
  68. g2.fillRect( 0, 0, (int)model.getWidth()-1, (int)model.getHeight()-1 );
  69. if( model.isSelected() )
  70. {
  71. g.setColor( Color.GRAY );
  72. g.fillRect( 0, 0, (int)model.getWidth()-1, (int)model.getHeight()-1 );
  73. }
  74. g2.setColor( model.getColor() );
  75. g2.drawRect( 0, 0, (int)model.getWidth()-1, (int)model.getHeight()-1 );
  76. }
  77. }