Inheritance: System.ApplicationException
        protected void BuildResultScreen(RestoreException rex)
        {
            ClearControls();

            if (this.RestoreResult == RestoreResultType.Nonedefined)
                return;

            var trashBag = GetContextNode() as TrashBag;
            if (trashBag == null)
                return;

            var view = this.InfoViewPath;
            var messageTitle = string.Empty;
            var messageDesc = string.Empty;

            switch (this.RestoreResult)
            {
                case RestoreResultType.UnknownError:
                    view = this.ErrorViewPath;
                    break;
            }

            var c = Page.LoadControl(view);
            if (c == null)
                return;

            this.Controls.Add(c);

            if (rex != null)
            {
                //build UI info from the exception
                var folderName = string.IsNullOrEmpty(rex.ContentPath) ?
                    "{folder}" : RepositoryPath.GetFileNameSafe(RepositoryPath.GetParentPath(rex.ContentPath));
                var contentName = string.IsNullOrEmpty(rex.ContentPath) ?
                    "{content}" : RepositoryPath.GetFileNameSafe(rex.ContentPath);

                switch (rex.ResultType)
                {
                    case RestoreResultType.Nonedefined:
                    case RestoreResultType.UnknownError:
                        messageTitle = rex.Message;
                        messageDesc = rex.ToString();
                        break;
                    case RestoreResultType.PermissionError:
                        messageTitle = "Not enough permissions to complete the operation";
                        messageDesc = rex.Message;
                        break;
                    case RestoreResultType.ForbiddenContentType:
                        messageTitle = "Cannot restore this type of content to the selected target";
                        break;
                    case RestoreResultType.ExistingName:
                        messageTitle = "Content with this name already exists in the folder " + folderName;
                        messageDesc =
                            string.Format(
                                "You can restore it with a new name (<strong>{0}</strong>) or please choose a different destination",
                                contentName);
                        break;
                    case RestoreResultType.NoParent:
                        messageTitle = "Destination folder is missing";
                        messageDesc = "Please choose a different destination";
                        break;
                }
            }

            if (this.MessageControl != null)
            {
                this.MessageControl.ButtonsAction += MessageControl_ButtonsAction;

                if (this.NewNameButton != null)
                    this.NewNameButton.Command += MessageControl_ButtonsAction;

                if (this.MessageLabel != null)
                    this.MessageLabel.Text = messageTitle;

                if (this.MessageDescLabel != null)
                    this.MessageDescLabel.Text = messageDesc;
            }

            if (this.ContentLabel != null)
            {
                var lc = trashBag.DeletedContent;
                if (lc != null)
                    this.ContentLabel.Text = lc.DisplayName;
            }

            ShowHideControls();
        }