public void makeSane() { descLbl.setText(desc); ImageIcon icon = null; if (race != null) { String imgRace = race; if (CrewType.HUMAN.getId().equals(race)) { // Human females have a distinct sprite (Other races look the same either way). if (!male) imgRace = "female"; } else if (CrewType.GHOST.getId().equals(race)) { // Ghosts look like translucent humans. if (male) imgRace = "human"; else imgRace = "female"; } icon = getCrewIcon(imgRace); } nameLbl.setIcon(icon); if (name != null) nameLbl.setText(name); else nameLbl.setText(""); scoreLbl.setText(Integer.toString(score)); }
public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (editMap.containsKey(source)) { final StatRow row = getRow(editMap.get(source)); JPanel popupPanel = new JPanel(new BorderLayout()); final FieldEditorPanel editorPanel = new FieldEditorPanel(true); editorPanel.addRow(RACE, FieldEditorPanel.ContentType.COMBO); editorPanel.addRow(MALE, FieldEditorPanel.ContentType.BOOLEAN); editorPanel.addRow(NAME, FieldEditorPanel.ContentType.STRING); editorPanel.addRow(SCORE, FieldEditorPanel.ContentType.INTEGER); if (row.race != null) { editorPanel.getCombo(RACE).addItem(CrewType.CRYSTAL.getId()); editorPanel.getCombo(RACE).addItem(CrewType.ENERGY.getId()); editorPanel.getCombo(RACE).addItem(CrewType.ENGI.getId()); editorPanel.getCombo(RACE).addItem(CrewType.GHOST.getId()); editorPanel.getCombo(RACE).addItem(CrewType.HUMAN.getId()); editorPanel.getCombo(RACE).addItem(CrewType.MANTIS.getId()); editorPanel.getCombo(RACE).addItem(CrewType.ROCK.getId()); editorPanel.getCombo(RACE).addItem(CrewType.SLUG.getId()); editorPanel.getCombo(RACE).setSelectedItem(row.race); editorPanel.setBoolAndReminder(MALE, row.male); } else { editorPanel.getCombo(RACE).setEnabled(false); editorPanel.getBoolean(MALE).setEnabled(false); } if (row.name != null) { editorPanel.setStringAndReminder(NAME, row.name); } else { editorPanel.getString(NAME).setEnabled(false); } editorPanel.setIntAndReminder(SCORE, row.score); popupPanel.add(new JLabel(row.desc), BorderLayout.NORTH); popupPanel.add(editorPanel, BorderLayout.CENTER); JPanel ctrlPanel = new JPanel(); ctrlPanel.setLayout(new BoxLayout(ctrlPanel, BoxLayout.X_AXIS)); ctrlPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); ctrlPanel.add(Box.createHorizontalGlue()); JButton popupOkBtn = new JButton("OK"); ctrlPanel.add(popupOkBtn); ctrlPanel.add(Box.createHorizontalGlue()); JButton popupCancelBtn = new JButton("Cancel"); ctrlPanel.add(popupCancelBtn); ctrlPanel.add(Box.createHorizontalGlue()); popupPanel.add(ctrlPanel, BorderLayout.SOUTH); popupOkBtn.setPreferredSize(popupCancelBtn.getPreferredSize()); final JDialog popup = new JDialog((java.awt.Frame) this.getTopLevelAncestor(), "Edit Score", true); popup.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); popup.getContentPane().add(popupPanel); popup.pack(); popup.setLocationRelativeTo(null); popupCancelBtn.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { popup.setVisible(false); popup.dispose(); } }); popupOkBtn.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { String newString = null; if (row.race != null) { newString = (String) editorPanel.getCombo(RACE).getSelectedItem(); if (CrewType.findById(newString) != null) { row.race = newString; row.male = editorPanel.getBoolean(MALE).isSelected(); } } if (row.name != null) row.name = editorPanel.getString(NAME).getText(); newString = editorPanel.getInt(SCORE).getText(); try { row.score = Integer.parseInt(newString); } catch (NumberFormatException f) { } row.makeSane(); popup.setVisible(false); popup.dispose(); } }); popup.setVisible(true); } }