/**
  * @param aContentService
  * @param descriptor
  * @return True if the descriptor is visible to the given content service.
  */
 private boolean isVisible(
     INavigatorContentService aContentService, CommonWizardDescriptor descriptor) {
   return !WorkbenchActivityHelper.filterItem(descriptor)
       && (aContentService == null
           || (descriptor.getId() == null
               || (aContentService.isVisible(descriptor.getId())
                   && aContentService.isActive(descriptor.getId()))));
 }
 /** Constructor */
 public ContentMRUAction(
     int order,
     INavigatorContentDescriptor contentDescriptor,
     INavigatorContentService contentService,
     CommonViewer commonViewer) {
   super(
       "" + order + " " + contentDescriptor.getName(), AS_CHECK_BOX); // $NON-NLS-1$//$NON-NLS-2$
   this.contentDescriptor = contentDescriptor;
   this.contentService = contentService;
   this.commonViewer = commonViewer;
   setChecked(contentService.isActive(contentDescriptor.getId()));
 }
 /*
  * (non-Javadoc)
  * @see org.eclipse.jface.action.Action#run()
  */
 @Override
 public void run() {
   Set<String> activeIds = new HashSet<String>();
   String[] visibleIds = contentService.getVisibleExtensionIds();
   if (visibleIds != null) {
     for (String visibleId : visibleIds) {
       if (contentService.isActive(visibleId)) activeIds.add(visibleId);
     }
   }
   if (isChecked()) activeIds.add(contentDescriptor.getId());
   else activeIds.remove(contentDescriptor.getId());
   String[] idsToActivate = activeIds.toArray(new String[activeIds.size()]);
   UpdateActiveExtensionsOperation updateExtensions =
       new UpdateActiveExtensionsOperation(commonViewer, idsToActivate);
   updateExtensions.execute(null, null);
 }
  /** {@inheritDoc} */
  public Object execute(ExecutionEvent event) throws ExecutionException {
    if (getCommonNavigator() == null || getCommonNavigator().getCommonViewer() == null) {
      return null; // The model explorer is not displayed (The editor is closed?)
    }

    CommonViewer viewer = getCommonNavigator().getCommonViewer();

    String[] newContents = null;

    Object trigger = event.getTrigger();

    if (trigger instanceof Event) {
      // State based on the widget
      Event triggerEvent = (Event) trigger;
      if (triggerEvent.widget instanceof ToolItem) {
        if (((ToolItem) triggerEvent.widget).getSelection()) {
          newContents = new String[] {DIAGRAM_CONTENTS};
        } else {
          newContents = new String[] {UML_MODEL_CONTENTS};
        }
      }
    }

    if (newContents == null) {
      // Revert the current state
      INavigatorContentService navigatorContent = viewer.getNavigatorContentService();

      if (navigatorContent.isActive(DIAGRAM_CONTENTS)) {
        newContents = new String[] {UML_MODEL_CONTENTS};
      } else {
        newContents = new String[] {DIAGRAM_CONTENTS};
      }
    }

    UpdateActiveExtensionsOperation updateExtensions =
        new UpdateActiveExtensionsOperation(viewer, newContents);
    updateExtensions.execute(null, null);

    return null;
  }