
// OverlayCanvas.java
// Andrew Davison, April 2005, ad@fivedots.coe.psu.ac.th
/* 3D-canvas obsahuje v levém horním rohu statový řádek s
   červeným textem.

   Údaje o aktuálním stavu získá od objektu typu NetFourByFour
   při každém volání metody postSwap().
*/

import java.awt.*;
import java.awt.geom.*;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;


public class OverlayCanvas extends Canvas3D
{
  private final static int XPOS = 5;
  private final static int YPOS = 15;
  private final static Font MSGFONT = new Font( "SansSerif", Font.BOLD, 12);

  private NetFourByFour fbf;
  private String status;


  public OverlayCanvas(GraphicsConfiguration config, NetFourByFour fbf)
  { super(config);
    this.fbf = fbf;
  }


  public void postSwap()
  /* Volá se z vykreslovacího cyklu po dokončení
     vykreslení všech ploch. */
  {
    Graphics2D g = (Graphics2D) getGraphics();
    g.setColor(Color.red);
    g.setFont( MSGFONT );

    if ((status = fbf.getStatus()) != null)  // má nějakou hodnotu
      g.drawString(status, XPOS, YPOS);

    // toto volání je zde pouze pro kompenzaci překreslovací chyby balíčku javaw
    Toolkit.getDefaultToolkit().sync();
  }  // konec metody: postSwap()


  public void repaint()
  // Přetížením metody repaint() zmízí nejhorší pobklikávání
  { Graphics2D g = (Graphics2D) getGraphics();
    paint(g);
  }

  public void paint(Graphics g)
  // metodu pain() přetěžujeme kvůli chybě (v javaw) při překreslování
  { super.paint(g);
    Toolkit.getDefaultToolkit().sync();
  }

} // konec třídy: OverlayCanvas

