/**
  * Notifies <code>ActionListener</code>s that an option was chosen.
  *
  * @param optionModel the selected <code>OptionModel</code>
  */
 protected void fireActionPerformed(OptionModel optionModel) {
   if (!hasEventListenerList()) {
     return;
   }
   ActionEvent e = new ActionEvent(this, optionModel.getId());
   EventListener[] listeners = getEventListenerList().getListeners(ActionListener.class);
   for (int i = 0; i < listeners.length; ++i) {
     ((ActionListener) listeners[i]).actionPerformed(e);
   }
 }
 /**
  * Programmatically performs a menu action.
  *
  * @param optionModel the <code>OptionModel</code> whose action is to be invoked
  */
 public void doAction(OptionModel optionModel) {
   if (getStateModel() != null && !getStateModel().isEnabled(optionModel.getId())) {
     // Do nothing, item is disabled.
     return;
   }
   if (getStateModel() != null && optionModel instanceof ToggleOptionModel) {
     if (optionModel instanceof RadioOptionModel) {
       RadioOptionModel radioOptionModel = (RadioOptionModel) optionModel;
       deselectGroup(getModel(), radioOptionModel.getGroupId(), radioOptionModel.getId());
       getStateModel().setSelected(radioOptionModel.getId(), true);
     } else {
       ToggleOptionModel toggleOptionModel = (ToggleOptionModel) optionModel;
       getStateModel()
           .setSelected(
               toggleOptionModel.getId(), !getStateModel().isSelected(toggleOptionModel.getId()));
     }
     firePropertyChange(STATE_MODEL_CHANGED_PROPERTY, null, null);
   }
   fireActionPerformed(optionModel);
 }