package games.strategy.triplea.ui; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.util.Vector; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import games.strategy.engine.data.GameData; import games.strategy.triplea.delegate.Die; import games.strategy.triplea.delegate.dataObjects.TechResults; public class TechResultsDisplay extends JPanel { private static final long serialVersionUID = -8303376983862918107L; public TechResultsDisplay(final TechResults msg, final IUIContext uiContext, final GameData data) { final IUIContext m_uiContext = uiContext; setLayout(new GridBagLayout()); add(new JLabel("You got " + msg.getHits() + " hit" + (msg.getHits() != 1 ? "s" : "") + "."), new GridBagConstraints( 0, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 5, 0), 0, 0)); if (msg.getHits() != 0) { add(new JLabel("Technologies discovered:"), new GridBagConstraints(0, 1, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0)); final JList<String> list = new JList<>(new Vector<>(msg.getAdvances())); add(list, new GridBagConstraints(0, 2, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 5, 0), 0, 0)); list.setBackground(this.getBackground()); } final JPanel dice = new JPanel(); dice.setLayout(new BoxLayout(dice, BoxLayout.X_AXIS)); final int remainder = msg.getRemainder(); for (int i = 0; i < msg.getRolls().length; i++) { // add 1 since dice are 0 based final int roll = msg.getRolls()[i] + 1; JLabel die; if (remainder > 0) { die = new JLabel( m_uiContext.getDiceImageFactory().getDieIcon(roll, roll <= remainder ? Die.DieType.HIT : Die.DieType.MISS)); } else { die = new JLabel(m_uiContext.getDiceImageFactory().getDieIcon(roll, roll == data.getDiceSides() ? Die.DieType.HIT : Die.DieType.MISS)); } dice.add(die); dice.add(Box.createHorizontalStrut(2)); dice.setMaximumSize(new Dimension(200, (int) dice.getMaximumSize().getHeight())); } final JScrollPane diceScroll = new JScrollPane(dice); diceScroll.setBorder(null); add(diceScroll, new GridBagConstraints(0, 3, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 5, 0), 0, 0)); } }