package com.sleazyweasel.applescriptifier;
import com.sleazyweasel.applescriptifier.preferences.MuseControllerPreferences;
import layout.TableLayout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class PandoraPasswordUI implements MuseControllerFrame {
private final MusicPlayer musicPlayer;
private final MuseControllerPreferences preferences;
private final Widgets widgets = new Widgets();
private final JMenuBar mainMenuBar;
private final JMenuItem pandoraMenuItem;
private final MuseControllerMain main;
public PandoraPasswordUI(MusicPlayer musicPlayer, MuseControllerPreferences preferences, JMenuBar mainMenuBar, JMenuItem pandoraMenuItem, MuseControllerMain main) {
this.musicPlayer = musicPlayer;
this.preferences = preferences;
this.mainMenuBar = mainMenuBar;
this.pandoraMenuItem = pandoraMenuItem;
this.main = main;
initUserInterface();
initLayout();
}
private void initUserInterface() {
initWindow();
initUsernameField();
initPasswordField();
initNeverShowAgainCheckbox();
initOkButton();
initCancelButton();
}
private void initWindow() {
widgets.window = new JFrame("Pandora Login");
widgets.window.setResizable(false);
}
private void initUsernameField() {
widgets.usernameField = new JTextField();
}
private void initPasswordField() {
widgets.passwordField = new JPasswordField();
}
private void initNeverShowAgainCheckbox() {
widgets.neverShowAgainCheckbox = new JCheckBox("I don't use Pandora. Don't ask again.");
}
private void initOkButton() {
widgets.okButton = new JButton("OK");
widgets.okButton.addActionListener(new SetupMusicPlayerConfigAction(widgets.window, musicPlayer, widgets.usernameField, widgets.passwordField, preferences, mainMenuBar, pandoraMenuItem, widgets.neverShowAgainCheckbox, main));
}
private void initCancelButton() {
widgets.cancelButton = new JButton("Cancel");
widgets.cancelButton.addActionListener(new DisablePandoraAction());
}
public JFrame getWindow() {
return widgets.window;
}
private void initLayout() {
Container contentPane = widgets.window.getContentPane();
contentPane.setLayout(new TableLayout(new double[][]{
{4, TableLayout.PREFERRED, 2, TableLayout.PREFERRED, 2, TableLayout.PREFERRED, 4},
{4, 30, 2, 30, 2, 25, 2, 30, 4}
}));
contentPane.add(new JLabel("Username:"), "1, 1");
contentPane.add(widgets.usernameField, "3, 1, 5, 1");
contentPane.add(new JLabel("Password:"), "1, 3");
contentPane.add(widgets.passwordField, "3, 3, 5, 3");
contentPane.add(widgets.neverShowAgainCheckbox, "3, 5");
contentPane.add(widgets.cancelButton, "3, 7, r");
contentPane.add(widgets.okButton, "5, 7, l");
widgets.window.getRootPane().setDefaultButton(widgets.okButton);
widgets.window.pack();
}
public void close() {
widgets.window.dispose();
pandoraMenuItem.setEnabled(true);
}
private static class Widgets {
private JFrame window;
private JPasswordField passwordField;
private JTextField usernameField;
private JCheckBox neverShowAgainCheckbox;
private JButton okButton;
private JButton cancelButton;
}
private class DisablePandoraAction implements ActionListener {
public void actionPerformed(ActionEvent e) {
widgets.window.dispose();
if (widgets.neverShowAgainCheckbox.isSelected()) {
preferences.enablePandora(false);
}
}
}
}