package magic.ui.widget; import magic.model.MagicManaCost; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SpringLayout; import java.awt.BorderLayout; import java.awt.Dimension; import java.util.List; import magic.data.MagicIcon; import magic.ui.MagicImages; @SuppressWarnings("serial") public class CostPanel extends JPanel { private static final Dimension MANA_ICON_SIZE = new Dimension(17,17); public CostPanel(final MagicManaCost cost) { setOpaque(false); setLayout(new BorderLayout()); if (cost == null) { return; } final JPanel centerPanel=new JPanel(); centerPanel.setOpaque(false); final SpringLayout springLayout = new SpringLayout(); centerPanel.setLayout(springLayout); final List<MagicIcon> icons = cost.getIcons(); final JLabel[] manaLabels=new JLabel[icons.size()]; for (int i=0;i<manaLabels.length;i++) { manaLabels[i]=new JLabel(); manaLabels[i].setPreferredSize(MANA_ICON_SIZE); manaLabels[i].setMaximumSize(MANA_ICON_SIZE); manaLabels[i].setHorizontalAlignment(JLabel.CENTER); if (i > 0) { // previous (left) mana touches current one springLayout.putConstraint(SpringLayout.EAST, manaLabels[i-1], 0, SpringLayout.WEST, manaLabels[i]); } if (i == manaLabels.length - 1) { // last mana touches right side of panel springLayout.putConstraint(SpringLayout.EAST, manaLabels[i], 0, SpringLayout.EAST, centerPanel); } centerPanel.add(manaLabels[i]); } int index=0; for (final MagicIcon icon : icons) { manaLabels[index++].setIcon(MagicImages.getIcon(icon)); if (index==manaLabels.length) { break; } } add(centerPanel,BorderLayout.CENTER); } }