package org.lysty.ui; import java.awt.Component; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JPanel; import net.miginfocom.swing.MigLayout; import org.lysty.core.PlaylistGenerator; import org.lysty.core.StrategyFactory; import org.lysty.strategies.AbstractStrategySettingsPanel; import org.lysty.strategies.StrategyConfiguration; public class StrategySettingsWindow extends LFrame { private static final double CONTROL_PANEL_HEIGHT = 20; private static StrategySettingsWindow self = null; public static StrategySettingsWindow getInstance() { if (self == null) { self = new StrategySettingsWindow(); } return self; } private StrategySettingsListener playlistProfileWindow; private AbstractStrategySettingsPanel settingsPanel; private PlaylistGenerator strategy; private StrategySettingsWindow() { super("Fill Method Settings"); // TODO Auto-generated constructor stub } public void setListener(StrategySettingsListener playlistProfileWindow) { this.playlistProfileWindow = playlistProfileWindow; } public void showUi(Component parent) { double w = settingsPanel.getPreferredSize().getWidth(); double h = settingsPanel.getPreferredSize().getHeight() + CONTROL_PANEL_HEIGHT; this.setSize((int) w, (int) h); this.pack(); this.setVisible(true); this.setLocationRelativeTo(parent); } public void loadSettings(StrategyConfiguration config){ settingsPanel.setConfig(config); } public void createUi(PlaylistGenerator strategy, Component parent) { this.strategy = strategy; settingsPanel = StrategyFactory.getStrategySettingsPanel(strategy); JPanel contentPanel = new JPanel(new MigLayout("insets 6 6 6 6")); this.setContentPane(contentPanel); contentPanel.add(settingsPanel, "span"); contentPanel.add(getControlPanel(), "span"); showUi(parent); } private JPanel getControlPanel() { JPanel panel = new JPanel(); JButton btnRestor = new JButton(new AbstractAction( "Restore Defaults...") { @Override public void actionPerformed(ActionEvent e) { StrategySettingsWindow.getInstance().settingsPanel .setConfig(StrategyFactory.getDefaultSettings(strategy)); } }); JButton btnOk = new JButton(new AbstractAction("Ok") { @Override public void actionPerformed(ActionEvent e) { StrategySettingsWindow.getInstance().playlistProfileWindow .setCurrentProfileSettings(StrategySettingsWindow .getInstance().getStrategySettngs()); StrategySettingsWindow.getInstance().setVisible(false); } }); JButton btnCancel = new JButton(new AbstractAction("Cancel") { @Override public void actionPerformed(ActionEvent e) { StrategySettingsWindow.getInstance().setVisible(false); } }); panel.add(btnRestor); panel.add(btnOk); panel.add(btnCancel); return panel; } protected StrategyConfiguration getStrategySettngs() { return settingsPanel.getConfig(); } }