package net.sourceforge.subsonic.booter.mac;
import com.jgoodies.forms.factories.Borders;
import com.jgoodies.forms.factories.ButtonBarFactory;
import net.sourceforge.subsonic.booter.Main;
import net.sourceforge.subsonic.booter.deployer.SubsonicDeployerService;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
/**
* Frame with Subsonic status. Used on Mac installs.
*
* @author Sindre Mehus
*/
public class SubsonicFrame extends JFrame {
private final SubsonicDeployerService deployer;
private StatusPanel statusPanel;
private JButton hideButton;
private JButton exitButton;
public SubsonicFrame(SubsonicDeployerService deployer) {
super("Subsonic");
this.deployer = deployer;
createComponents();
layoutComponents();
addBehaviour();
URL url = Main.class.getResource("/images/subsonic-512.png");
setIconImage(Toolkit.getDefaultToolkit().createImage(url));
}
public void setActive(boolean active) {
if (active) {
pack();
centerComponent();
setVisible(true);
toFront();
} else {
dispose();
}
}
private void centerComponent() {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setLocation(screenSize.width / 2 - getWidth() / 2,
screenSize.height / 2 - getHeight() / 2);
}
private void createComponents() {
statusPanel = new StatusPanel(deployer);
hideButton = new JButton("Hide");
exitButton = new JButton("Exit");
}
private void layoutComponents() {
JPanel pane = (JPanel) getContentPane();
pane.setLayout(new BorderLayout(10, 10));
pane.add(statusPanel, BorderLayout.CENTER);
pane.add(ButtonBarFactory.buildRightAlignedBar(hideButton, exitButton), BorderLayout.SOUTH);
pane.setBorder(Borders.DIALOG_BORDER);
}
private void addBehaviour() {
hideButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setActive(false);
}
});
exitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
}