/** Creates the specific fields for this kind of entity. */ protected void createSpecificFields() { // has a sprite? withSpriteField = new JCheckBox("Display a sprite"); addField("Visibility", withSpriteField); // sprite name spriteField = new ResourceChooser(ResourceType.SPRITE, true); addField("Sprite name", spriteField); // behavior behaviorField = new RadioField("Show a message", "Call the map script", "Call an item script"); addField("Action", behaviorField); // message messageField = new JTextField(15); addField("Message to show", messageField); // item itemField = new ItemChooser(false, false); addField("Item script to call", itemField); // listeners withSpriteField.addChangeListener( new ChangeListener() { public void stateChanged(ChangeEvent ev) { spriteField.setEnabled(withSpriteField.isSelected()); } }); behaviorField.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { messageField.setEnabled(behaviorField.getSelectedIndex() == 0); itemField.setEnabled(behaviorField.getSelectedIndex() == 2); } }); subtypeField.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ev) { Subtype subtype = (Subtype) subtypeField.getValue(); withSpriteField.setEnabled(subtype != Subtype.NON_PLAYING_CHARACTER); } }); }