package mapmaker; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ZoneDialog extends StandardDialog { JTextField mNameField = new JTextField(); ColorComboBox mColorComboBox = new ColorComboBox(); Zone mZone = null; public ZoneDialog(JFrame aFrame) { super(aFrame, "Zone"); JLabel nameLabel = new JLabel("Name: "); JLabel colorLabel = new JLabel("Colour: "); DialogPanel dialogPanel = (DialogPanel)getContentPane(); dialogPanel.addComponentPair(nameLabel, mNameField); dialogPanel.addComponentPair(colorLabel, mColorComboBox); ZoneOkayAction okayAction = new ZoneOkayAction(); mNameField.addActionListener(okayAction); setOkayAction(okayAction); pack(); setLocationRelativeTo(aFrame); } public void setZone(Zone aZone) { mZone = aZone; } public Zone getZone() { if (mZone == null) { mZone = new Zone(); } mZone.setName(mNameField.getText()); mZone.setColor((Color)mColorComboBox.getSelectedItem()); return mZone; } class ZoneOkayAction extends OkayAction { public void actionPerformed(ActionEvent e) { if (!Utils.isFilledIn(mNameField)) { JOptionPane.showMessageDialog(ZoneDialog.this, "Please enter a name for this zone in the name field.\n", "Error", JOptionPane.ERROR_MESSAGE); return; } super.actionPerformed(e); } } public static Zone showEditDialog(JFrame aFrame, Zone aZone) { ZoneDialog zoneDialog = new ZoneDialog(aFrame); zoneDialog.setZone(aZone); if (aZone != null) { zoneDialog.mNameField.setText(aZone.getName()); zoneDialog.mColorComboBox.setSelectedItem(aZone.getColor()); } zoneDialog.setVisible(true); if (zoneDialog.isOkay()) { return zoneDialog.getZone(); } return null; } public static Zone showNewDialog(JFrame aFrame) { ZoneDialog zoneDialog = new ZoneDialog(aFrame); zoneDialog.setVisible(true); if (zoneDialog.isOkay()) { return zoneDialog.getZone(); } return null; } }