File: ProxyWebPart.cs

package info (click to toggle)
mono 6.8.0.105%2Bdfsg-3.3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,284,512 kB
  • sloc: cs: 11,172,132; xml: 2,850,069; ansic: 671,653; cpp: 122,091; perl: 59,366; javascript: 30,841; asm: 22,168; makefile: 20,093; sh: 15,020; python: 4,827; pascal: 925; sql: 859; sed: 16; php: 1
file content (157 lines) | stat: -rw-r--r-- 5,915 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
//------------------------------------------------------------------------------
// <copyright file="ProxyWebPart.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------

namespace System.Web.UI.WebControls.WebParts {

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Globalization;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.Util;

    [
    ToolboxItem(false)
    ]
    public abstract class ProxyWebPart : WebPart {

        private string _originalID;
        private string _originalTypeName;
        private string _originalPath;
        private string _genericWebPartID;

        protected ProxyWebPart(WebPart webPart) {
            if (webPart == null) {
                throw new ArgumentNullException("webPart");
            }

            GenericWebPart genericWebPart = webPart as GenericWebPart;
            if (genericWebPart != null) {
                Control childControl = genericWebPart.ChildControl;
                if (childControl == null) {
                    throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNull, "ChildControl"), "webPart");
                }

                _originalID = childControl.ID;
                if (String.IsNullOrEmpty(_originalID)) {
                    throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNullOrEmptyString, "ChildControl.ID"), "webPart");
                }

                Type originalType;
                UserControl childUserControl = childControl as UserControl;
                if (childUserControl != null) {
                    originalType = typeof(UserControl);
                    _originalPath = childUserControl.AppRelativeVirtualPath;
                }
                else {
                    originalType = childControl.GetType();
                }
                _originalTypeName = WebPartUtil.SerializeType(originalType);
                _genericWebPartID = genericWebPart.ID;
                if (String.IsNullOrEmpty(_genericWebPartID)) {
                    throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNullOrEmptyString, "ID"), "webPart");
                }
                ID = _genericWebPartID;
            }
            else {
                _originalID = webPart.ID;
                if (String.IsNullOrEmpty(_originalID)) {
                    throw new ArgumentException(SR.GetString(SR.PropertyCannotBeNullOrEmptyString, "ID"), "webPart");
                }
                _originalTypeName = WebPartUtil.SerializeType(webPart.GetType());
                ID = _originalID;
            }
        }

        protected ProxyWebPart(string originalID, string originalTypeName, string originalPath, string genericWebPartID) {
            if (String.IsNullOrEmpty(originalID)) {
                throw ExceptionUtil.ParameterNullOrEmpty("originalID");
            }
            if (String.IsNullOrEmpty(originalTypeName)) {
                throw ExceptionUtil.ParameterNullOrEmpty("originalTypeName");
            }

            // If you specify a path, this must be a GenericWebPart so genericWebPartID should not be null
            if (!String.IsNullOrEmpty(originalPath) && String.IsNullOrEmpty(genericWebPartID)) {
                throw ExceptionUtil.ParameterNullOrEmpty("genericWebPartID");
            }

            _originalID = originalID;
            _originalTypeName = originalTypeName;
            _originalPath = originalPath;
            _genericWebPartID = genericWebPartID;
            if (!String.IsNullOrEmpty(genericWebPartID)) {
                ID = _genericWebPartID;
            }
            else {
                ID = _originalID;
            }
        }

        public string GenericWebPartID {
            get {
                return (_genericWebPartID != null) ? _genericWebPartID : String.Empty;
            }
        }

        // Seal the ID property so we can set it in the constructor without an FxCop violation.
        public sealed override string ID {
            get {
                return base.ID;
            }
            set {
                base.ID = value;
            }
        }

        public string OriginalID {
            get {
                return (_originalID != null) ? _originalID : String.Empty;
            }
        }

        public string OriginalTypeName {
            get {
                return (_originalTypeName != null) ? _originalTypeName : String.Empty;
            }
        }

        public string OriginalPath {
            get {
                return (_originalPath != null) ? _originalPath : String.Empty;
            }
        }

        // Accept any ControlState, but do nothing with it, since it is actually the ControlState
        // for the WebPart we are replacing.
        protected internal override void LoadControlState(object savedState) {
        }

        // Accept any ViewState, but do nothing with it, since it is actually the ViewState
        // for the WebPart we are replacing.
        protected override void LoadViewState(object savedState) {
        }

        // Do not save any ControlState, since the ProxyWebPart itself does not need to save state
        // between requests.
        protected internal override object SaveControlState() {
            // Call base in case it has some side-effects that the control relies on
            base.SaveControlState();
            return null;
        }

        // Do not save any ViewState, since the ProxyWebPart itself does not need to save state
        // between requests.
        protected override object SaveViewState() {
            // Call base in case it has some side-effects that the control relies on
            base.SaveViewState();
            return null;
        }

    }
}