Interface.java 1.62 KB
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Interface extends JFrame{
	private static final long serialVersionUID = 1L;
	private static final Font titleFont = new Font(new JLabel().getFont().getName(), Font.BOLD, 14);
	private static final Font defaultFont = new Font(new JLabel().getFont().getName(), Font.PLAIN, new JLabel().getFont().getSize());

	public Interface(final Runnable executeOnClose) {
		super("VRGNYMusicLights");
		//this.actionList = actionList;
		setResizable(false);
		populateWindow();
		pack();
		setLocationRelativeTo(null); // center window
        
		addWindowListener(new WindowAdapter() {
        	@Override
        	public void windowClosing(WindowEvent e) {
        		if(executeOnClose != null)
        			executeOnClose.run();
        		dispose();
        	}
		});
	}
	
	private void populateWindow() {
		JPanel mainPanel = new JPanel(new BorderLayout());
		addPlayPanel(mainPanel);
		add(mainPanel);
	}
	
	private void addPlayPanel(JPanel parent) {
		JPanel playPanel = new JPanel(new BorderLayout());
		
		// title
		JLabel title = new JLabel("Player :");
		title.setFont(titleFont);
		playPanel.add(title, BorderLayout.NORTH);
		
		// lights
		playPanel.add(new LightCanvasJPanel(), BorderLayout.CENTER);
		
		// controls
		AnimationPlayer animPlayer = new AnimationPlayer();
		animPlayer.setAlignmentX(CENTER_ALIGNMENT);
		playPanel.add(animPlayer, BorderLayout.SOUTH);
		
		parent.add(playPanel, BorderLayout.SOUTH);
	}
}