package games.strategy.engine.framework.startup.mc; import java.awt.Component; import java.awt.Dimension; import java.util.Observable; import games.strategy.engine.framework.startup.ui.ClientSetupPanel; import games.strategy.engine.framework.startup.ui.ISetupPanel; import games.strategy.engine.framework.startup.ui.LocalSetupPanel; import games.strategy.engine.framework.startup.ui.MetaSetupPanel; import games.strategy.engine.framework.startup.ui.PBEMSetupPanel; import games.strategy.engine.framework.startup.ui.ServerSetupPanel; public class SetupPanelModel extends Observable { protected final GameSelectorModel m_gameSelectorModel; protected ISetupPanel m_panel = null; public SetupPanelModel(final GameSelectorModel gameSelectorModel) { m_gameSelectorModel = gameSelectorModel; } public GameSelectorModel getGameSelectorModel() { return m_gameSelectorModel; } public void setWidgetActivation() { if (m_panel != null) { m_panel.setWidgetActivation(); } } public void showSelectType() { setGameTypePanel(new MetaSetupPanel(this)); } public void showLocal() { setGameTypePanel(new LocalSetupPanel(m_gameSelectorModel)); } public void showPBEM() { setGameTypePanel(new PBEMSetupPanel(m_gameSelectorModel)); } public void showServer(final Component ui) { final ServerModel model = new ServerModel(m_gameSelectorModel, this); if (!model.createServerMessenger(ui)) { model.cancel(); return; } setGameTypePanel(new ServerSetupPanel(model, m_gameSelectorModel)); // for whatever reason, the server window is showing very very small, causing the nation info to be cut and // requiring scroll bars final int x = (ui.getPreferredSize().width > 800 ? ui.getPreferredSize().width : 800); final int y = (ui.getPreferredSize().height > 660 ? ui.getPreferredSize().height : 660); ui.setPreferredSize(new Dimension(x, y)); ui.setSize(new Dimension(x, y)); } public void showClient(final Component ui) { final ClientModel model = new ClientModel(m_gameSelectorModel, this); if (!model.createClientMessenger(ui)) { model.cancel(); return; } setGameTypePanel(new ClientSetupPanel(model)); } protected void setGameTypePanel(final ISetupPanel panel) { if (m_panel != null) { m_panel.cancel(); } m_panel = panel; super.setChanged(); super.notifyObservers(m_panel); super.clearChanged(); } public ISetupPanel getPanel() { return m_panel; } }