package net.sourceforge.subsonic.booter.mac;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import net.sourceforge.subsonic.booter.Main;
import net.sourceforge.subsonic.booter.deployer.SubsonicDeployerService;
import com.jgoodies.forms.builder.ButtonBarBuilder;
import com.jgoodies.forms.factories.Borders;
/**
* 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("Madsonic");
this.deployer = deployer;
createComponents();
layoutComponents();
addBehaviour();
URL url = Main.class.getResource("/images/madsonic-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);
JPanel buttons = new ButtonBarBuilder()
.addGlue()
.addButton(hideButton)
.addRelatedGap()
.addButton(exitButton)
.build();
pane.add(buttons, 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);
}
});
}
}