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:
parent
d2e65f4346
commit
f6b1c638a1
2 changed files with 90 additions and 22 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Reference in a new issue