package org.jzy3d.bridge.swing;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;

import org.jzy3d.bridge.IFrame;
import org.jzy3d.chart.Chart;
import org.jzy3d.maths.Rectangle;

public class FrameSwing extends JFrame implements IFrame {

	// public constructor for easier construction by reflexion
	public FrameSwing() {
	}

	public FrameSwing(Chart chart, Rectangle bounds, String title) {
		initialize(chart, bounds, title);
	}

	@Override
    public void initialize(Chart chart, Rectangle bounds, String title) {
		this.chart = chart;

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container contentPane = getContentPane();
		BorderLayout layout = new BorderLayout();
		contentPane.setLayout(layout);

		addWindowListener(new WindowAdapter() {
			@Override
            public void windowClosing(WindowEvent e) {
				FrameSwing.this
						.remove((java.awt.Component) FrameSwing.this.chart
								.getCanvas());
				FrameSwing.this.chart.dispose();
				FrameSwing.this.chart = null;
				FrameSwing.this.dispose();
			}
		});

		JPanel panel3d = new JPanel();
		panel3d.setLayout(new java.awt.BorderLayout());
		panel3d.add((JComponent) chart.getCanvas());

		contentPane.add((JComponent) chart.getCanvas(), BorderLayout.CENTER);
		setVisible(true);
		setTitle(title + "[Swing]");
		pack();
		setBounds(bounds.x, bounds.y, bounds.width, bounds.height);
	}

	private Chart chart;
	private static final long serialVersionUID = 6474157681794629264L;

	@Override
	public void initialize(Chart chart, Rectangle bounds, String title,
			String message) {
		initialize(chart, bounds, title);
	}

}
 

Ads help maintain this website.