<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def reload_components_ui(self):
 """ Reloads user selected Components. :return: Method success. :rtype: bool :note: May require user interaction. """


        selected_components = self.get_selected_components()

        self.__engine.start_processing("Reloading Components ...", len(selected_components))
        reload_failed_components = []
        for component in selected_components:
            if component.interface.deactivatable:
                success = self.reload_component(component.name) or False
                if not success:
                    reload_failed_components.append(component)
            else:
                self.__engine.notifications_manager.warnify(
                    "{0} | '{1}' Component cannot be deactivated and won't be reloaded!".format(self.__class__.__name__,
                                                                                                component.name))
            self.__engine.step_processing()
        self.__engine.stop_processing()

        if not reload_failed_components:
            return True
        else:
            raise manager.exceptions.ComponentReloadError(
                "{0} | Exception(s) raised while reloading '{1}' Component(s)!".format(self.__class__.__name__,
                                                                                       ", ".join(
                                                                                           (reload_failed_component.name
                                                                                            for reload_failed_component
                                                                                            in
                                                                                            reload_failed_components))))