Adjust SettingsPanel player settings tab for game offer panel

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@432 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Matthias Schiffer 2011-06-14 02:43:53 +02:00
parent d2e65f4346
commit f6b1c638a1
2 changed files with 90 additions and 22 deletions

View file

@ -16,6 +16,7 @@ public class GameOfferControl {
this.view = view; this.view = view;
view.getSettingsPanel().setSettingsMode(SettingsMode.NETWORK_OFFER); view.getSettingsPanel().setSettingsMode(SettingsMode.NETWORK_OFFER);
view.getSettingsPanel().enableAddPlayerButton(false);
view.getSettingsPanel().setGameSettings(settings); view.getSettingsPanel().setGameSettings(settings);
} }

View file

@ -67,6 +67,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
private List<Boolean> removeButtonsEnabled = Collections.emptyList(); private List<Boolean> removeButtonsEnabled = Collections.emptyList();
private List<Boolean> playerNamesEditable = Collections.emptyList(); private List<Boolean> playerNamesEditable = Collections.emptyList();
private SettingsMode settingsMode = SettingsMode.DEFAULT;
private JTabbedPane tabbedPane; private JTabbedPane tabbedPane;
private JPanel playerSetupPanel; private JPanel playerSetupPanel;
private JPanel playerSettingsViewport; private JPanel playerSettingsViewport;
@ -369,7 +371,8 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
private void addPlayerSettingsPanel(int i, PlayerSettings settings, private void addPlayerSettingsPanel(int i, PlayerSettings settings,
List<Type> choices) { List<Type> choices) {
PlayerSettingsPanel panel = new PlayerSettingsPanel(i, settings, choices); PlayerSettingsPanel panel = new PlayerSettingsPanel(i, settings, choices,
settingsMode != SettingsMode.NETWORK_OFFER);
playerSettingsPanels.add(panel); playerSettingsPanels.add(panel);
playerSettingsViewport.add(panel, playerSettingsViewport.add(panel,
playerSettingsViewport.getComponentCount() - 1); playerSettingsViewport.getComponentCount() - 1);
@ -742,6 +745,12 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
@Override @Override
public void setSettingsMode(SettingsMode mode) { public void setSettingsMode(SettingsMode mode) {
settingsMode = mode;
while (!playerSettingsPanels.isEmpty()) {
removePlayerSettingsPanel();
}
switch (mode) { switch (mode) {
case DEFAULT: case DEFAULT:
addDefaultButtons(); addDefaultButtons();
@ -774,26 +783,42 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
private JComboBox playerType; private JComboBox playerType;
private List<Type> playerTypeChoices; private List<Type> playerTypeChoices;
private JLabel nameLabel;
private JLabel typeLabel;
public void setSettings(PlayerSettings settings) { public void setSettings(PlayerSettings settings) {
if (!nameField.getText().equals(settings.getName())) { if (nameField != null && !nameField.getText().equals(settings.getName())) {
nameField.setText(settings.getName()); nameField.setText(settings.getName());
} }
if (nameLabel != null) {
nameLabel.setText(settings.getName());
}
if (playerType != null) {
int index = playerTypeChoices.indexOf(settings.getType()); int index = playerTypeChoices.indexOf(settings.getType());
if (index != playerType.getSelectedIndex() && index >= 0 if (index != playerType.getSelectedIndex() && index >= 0
&& index < playerType.getModel().getSize()) { && index < playerType.getModel().getSize()) {
playerType.setSelectedIndex(index); playerType.setSelectedIndex(index);
} }
}
if (typeLabel != null) {
typeLabel.setText(getTypeLabel(settings.getType()));
}
colorButton colorButton
.setIcon(ImageUtil.createColorIcon(settings.getColor(), 16, 2)); .setIcon(ImageUtil.createColorIcon(settings.getColor(), 16, 2));
} }
public void setPlayerNameEditable(boolean editable) { public void setPlayerNameEditable(boolean editable) {
if (nameField != null) {
nameField.setEditable(editable); nameField.setEditable(editable);
} }
}
public void enableRemoveButton(boolean enable) { public void enableRemoveButton(boolean enable) {
if (removeButton != null) {
removeButton.setEnabled(enable); removeButton.setEnabled(enable);
} }
}
class NameChangeListener implements DocumentListener { class NameChangeListener implements DocumentListener {
@Override @Override
@ -813,35 +838,47 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
} }
public PlayerSettingsPanel(int playerNumber, PlayerSettings settings, public PlayerSettingsPanel(int playerNumber, PlayerSettings settings,
List<Type> choices) { List<Type> choices, boolean editable) {
setLayout(new GridBagLayout()); setLayout(new GridBagLayout());
this.playerNumber = playerNumber; this.playerNumber = playerNumber;
if (editable) {
createControls(settings); createControls(settings);
} else {
createLabels();
}
setChoices(choices); setChoices(choices);
setSettings(settings); setSettings(settings);
} }
private String getTypeLabel(Type type) {
switch (type) {
case COMPUTER:
return "Computer";
case HUMAN:
return "Mensch";
case NETWORK:
return "Netzwerk";
}
return null;
}
public void setChoices(List<Type> playerTypeChoices) { public void setChoices(List<Type> playerTypeChoices) {
this.playerTypeChoices = playerTypeChoices; this.playerTypeChoices = playerTypeChoices;
Vector<String> choices = new Vector<String>(); Vector<String> choices = new Vector<String>();
for (Type t : playerTypeChoices) { for (Type t : playerTypeChoices) {
switch (t) { choices.add(getTypeLabel(t));
case COMPUTER:
choices.add("Computer");
break;
case HUMAN:
choices.add("Mensch");
break;
case NETWORK:
choices.add("Netzwerk");
break;
}
} }
if (playerType != null) {
playerType.setModel(new DefaultComboBoxModel(choices)); playerType.setModel(new DefaultComboBoxModel(choices));
} }
}
private void createControls(PlayerSettings settings) { private void createControls(PlayerSettings settings) {
GridBagConstraints c = new GridBagConstraints(); GridBagConstraints c = new GridBagConstraints();
@ -889,6 +926,36 @@ class SettingsPanel extends JPanel implements ISettingsPanel {
add(removeButton, c); add(removeButton, c);
} }
private void createLabels() {
GridBagConstraints c = new GridBagConstraints();
GridBagConstraints c2 = new GridBagConstraints();
colorButton = new JButton();
nameLabel = new JLabel();
nameLabel.setBorder(new EmptyBorder(3, 7, 3, 7));
colorButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new ColorMenu();
}
});
c.gridy = 0;
add(colorButton, c);
c2.gridy = 0;
c2.weightx = 1;
c2.fill = GridBagConstraints.HORIZONTAL;
add(nameLabel, c2);
typeLabel = new JLabel(" ");
typeLabel.setBorder(new EmptyBorder(3, 7, 3, 7));
typeLabel.setPreferredSize(new Dimension(120, typeLabel
.getPreferredSize().height));
typeLabel.setMinimumSize(new Dimension(120,
typeLabel.getMinimumSize().height));
add(typeLabel, c);
}
@Override @Override
public Dimension getPreferredSize() { public Dimension getPreferredSize() {
Dimension preferredSize = super.getPreferredSize(); Dimension preferredSize = super.getPreferredSize();