
// ImageViewer.java
// Andrew Davison, Jan 2022, ad@coe.psu.ac.th

/* ImageViewer displays an image in a JPanel.
   Use ImageViewer.view() to invoke it inside a JFrame.
*/

import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.image.*;
import javax.imageio.*;



public class ImageViewer extends JPanel
{
  private int width, height; // of this panel
  private BufferedImage im = null;


  public ImageViewer(String fnm)
  {
    try {
      im = ImageIO.read(new File(fnm));
    }
    catch(Exception e) {
      System.out.println("Cannot load " + fnm + "\n");
      System.exit(1);
    }

    width = im.getWidth();
    height = im.getHeight();
  }  // end of ImageViewer()

   
  public Dimension getPreferredSize()
  {   return new Dimension(width, height); }
    

  public void paintComponent(Graphics g)
  {
    super.paintComponent(g); 
    g.drawImage(im, 0, 0, null);
  } 


  // -----------------------------------------
  // static invocation

  public static void view(String fnm)
  {
    JFrame f = new JFrame("ImageViewer");

    java.awt.Container c = f.getContentPane();
    c.add( new ImageViewer(fnm));

    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.pack();
    f.setResizable(false);
    f.setVisible(true);
  }  // end of view()


}  // end of ImageViewer class
