Files
narya/src/java/com/threerings/media/ManagedJFrame.java
T
Michael Bayne c69a7b0f7c Allow the frame to be constructed with a graphics configuration.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2346 542714f4-19e9-0310-aa3c-eee0fc999fb1
2003-03-30 00:00:00 +00:00

92 lines
2.0 KiB
Java

//
// $Id: ManagedJFrame.java,v 1.5 2003/03/30 00:00:00 mdb Exp $
package com.threerings.media;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.Shape;
import javax.swing.JFrame;
import com.samskivert.util.StringUtil;
import com.threerings.media.Log;
/**
* When using the {@link FrameManager}, one must use this top-level frame
* class.
*/
public class ManagedJFrame extends JFrame
{
/**
* Constructs a managed frame with no title.
*/
public ManagedJFrame ()
{
this("");
}
/**
* Constructs a managed frame with the specified title.
*/
public ManagedJFrame (String title)
{
super(title);
}
/**
* Constructs a managed frame in the specified graphics configuration.
*/
public ManagedJFrame (GraphicsConfiguration gc)
{
super(gc);
}
/**
* Called by our frame manager when it's ready to go.
*/
public void init (FrameManager fmgr)
{
_fmgr = fmgr;
}
/**
* We catch paint requests and forward them on to the repaint
* infrastructure.
*/
public void paint (Graphics g)
{
update(g);
}
/**
* We catch update requests and forward them on to the repaint
* infrastructure.
*/
public void update (Graphics g)
{
Shape clip = g.getClip();
Rectangle dirty;
if (clip != null) {
dirty = clip.getBounds();
} else {
dirty = getRootPane().getBounds();
// account for our frame insets
Insets insets = getInsets();
dirty.x += insets.left;
dirty.y += insets.top;
}
if (_fmgr != null) {
_fmgr.restoreFromBack(dirty);
} else {
Log.info("Dropping AWT dirty rect " + StringUtil.toString(dirty) +
" [clip=" + StringUtil.toString(clip) + "].");
}
}
protected FrameManager _fmgr;
}