public void selectionChanged(SelectionChangedEvent event) {
   Iterator e = fActions.values().iterator();
   while (e.hasNext()) {
     Object next = e.next();
     if (next instanceof MergeViewerAction) {
       MergeViewerAction action = (MergeViewerAction) next;
       if (action.isSelectionDependent()) action.update();
     }
   }
 }
  public IAction getAction(String actionId) {
    IAction action = (IAction) fActions.get(actionId);
    if (action == null) {
      action = createAction(actionId);
      if (action == null) return null;
      if (action instanceof MergeViewerAction) {
        MergeViewerAction mva = (MergeViewerAction) action;
        if (mva.isContentDependent()) getSourceViewer().addTextListener(this);
        if (mva.isSelectionDependent()) getSourceViewer().addSelectionChangedListener(this);

        Utilities.initAction(
            action, fResourceBundle, "action." + actionId + "."); // $NON-NLS-1$ //$NON-NLS-2$
      }
      addAction(actionId, action);
    }
    if (action instanceof MergeViewerAction) {
      MergeViewerAction mva = (MergeViewerAction) action;
      if (mva.isEditableDependent() && !getSourceViewer().isEditable()) return null;
    }
    return action;
  }