public void displayData() {

        List<UnitType> unitTypes = getSpecification().getUnitTypeList();
        ArrayList<UnitType> colonists = new ArrayList<UnitType>();
        for (UnitType unitType : unitTypes) {
            if (unitType.hasSkill()) {
                colonists.add(unitType);
            }
        }

        reportPanel.setLayout(new MigLayout("wrap 9", "[]10[]10[]30[]10[]10[]30[]10[]10[]", ""));

        for (UnitType unitType : colonists) {
            if(!unitType.isAvailableTo(getMyPlayer())) {
                continue;
            }

            Role role = Role.DEFAULT;
            if (unitType.hasAbility(Ability.EXPERT_PIONEER)) {
                role = Role.PIONEER;
            } else if (unitType.hasAbility(Ability.EXPERT_MISSIONARY)) {
                role = Role.MISSIONARY;
            }

            int unitTypeCount = unitCount.getCount(unitType);
            if (unitTypeCount == 0) {
                JLabel unitIcon = new JLabel(getLibrary().getUnitImageIcon(unitType, role, true, 0.8));
                JLabel unitCount = new JLabel("0");
                JLabel unitName = localizedLabel(unitType.getNameKey());
                unitCount.setForeground(Color.GRAY);
                unitName.setForeground(Color.GRAY);
                reportPanel.add(unitIcon);
                reportPanel.add(unitCount);
                reportPanel.add(unitName);
            } else {
                JLabel unitIcon = new JLabel(getLibrary().getUnitImageIcon(unitType, role, false, 0.8));
                JLabel unitCount = new JLabel("" + unitTypeCount);
                JButton linkButton = getLinkButton(Messages.message(unitType.getNameKey()),
                                                   null, unitType.getId());
                linkButton.addActionListener(this);
                reportPanel.add(unitIcon);
                reportPanel.add(unitCount);
                reportPanel.add(linkButton);
            }
        }
    }