/* * HalfNES by Andrew Hoffman * Licensed under the GNU GPL Version 3. See LICENSE file */ package com.grapeshot.halfnes.ui; import com.grapeshot.halfnes.NES; import java.awt.*; import java.awt.image.*; import javax.swing.*; public class DebugUI extends JFrame { // StrokeInformer aStrokeInformer = new StrokeInformer(); private ShowFrame fbuf; private int xsize, ysize; private Repainter painter = new Repainter(); public DebugUI(int height, int width) { this.xsize = height; this.ysize = width; fbuf = new ShowFrame(); fbuf.setIgnoreRepaint(true); } public void run() { this.setTitle("HalfNES Debug " + NES.VERSION); this.setResizable(false); this.setDefaultCloseOperation(HIDE_ON_CLOSE); this.setContentPane(fbuf); this.pack(); this.setVisible(true); } public void messageBox(String s) { JOptionPane.showMessageDialog(fbuf, s); } public void setFrame(BufferedImage b) { fbuf.nextFrame = b; java.awt.EventQueue.invokeLater(painter); //do the actual screen update on the event thread, basically all this does is blit the new frame } public class Repainter implements Runnable { public void run() { fbuf.repaint(); } } public class ShowFrame extends javax.swing.JPanel { public BufferedImage nextFrame; /** * */ public ShowFrame() { this.setBounds(0, 0, xsize, ysize); this.setPreferredSize(new Dimension(xsize, ysize)); } @Override public void paint(final Graphics g) { g.drawImage(nextFrame, 0, 0, xsize, ysize, null); } } }