private IWorkingSet[] getSelectedWorkingSet(
      IStructuredSelection selection, IWorkbenchPart activePart) {
    IWorkingSet[] selected = getSelectedWorkingSet(selection);
    if (selected != null && selected.length > 0) {
      for (int i = 0; i < selected.length; i++) {
        if (!isValidWorkingSet(selected[i])) return EMPTY_WORKING_SET_ARRAY;
      }
      return selected;
    }

    if (!(activePart instanceof PackageExplorerPart)) return EMPTY_WORKING_SET_ARRAY;

    PackageExplorerPart explorerPart = (PackageExplorerPart) activePart;
    if (explorerPart.getRootMode() == PackageExplorerPart.PROJECTS_AS_ROOTS) {
      // Get active filter
      IWorkingSet filterWorkingSet = explorerPart.getFilterWorkingSet();
      if (filterWorkingSet == null) return EMPTY_WORKING_SET_ARRAY;

      if (!isValidWorkingSet(filterWorkingSet)) return EMPTY_WORKING_SET_ARRAY;

      return new IWorkingSet[] {filterWorkingSet};
    } else {
      // If we have been gone into a working set return the working set
      Object input = explorerPart.getViewPartInput();
      if (!(input instanceof IWorkingSet)) return EMPTY_WORKING_SET_ARRAY;

      IWorkingSet workingSet = (IWorkingSet) input;
      if (!isValidWorkingSet(workingSet)) return EMPTY_WORKING_SET_ARRAY;

      return new IWorkingSet[] {workingSet};
    }
  }