package org.freehep.graphicsbase.swing;

import javax.swing.JComponent;
import javax.swing.JInternalFrame;

/**
 * A class which aids in creating swing components in a "headless" environment.
 * Useful for using swing components to export graphics to a file, without requiring
 * a connection to a display (i.e. with -Djava.awt.headless=true).
 * @author Tony Johnson
 * @author Mark Donszelmann
 */
@SuppressWarnings("serial")
public class Headless extends JInternalFrame {

    public Headless(JComponent component) {
        setContentPane(component);
    }
    // Note, this must override the (deprecated) method show, not setVisible
    public void show() {
        super.show();
        // Although the above calculates the size of the components, it does not lay them out.
        // For some reason frame.validate simply delegates to Container.validate(), which does nothing
        // if there is no peer defined.
        addNotify();
        synchronized(super.getTreeLock()) {
            super.validateTree();
        }
    }
}
