Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / WebParts / WebPartConnection.cs / 1305376 / WebPartConnection.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls.WebParts {
using System;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
[
TypeConverter(typeof(ExpandableObjectConverter)),
ParseChildren(true, "Transformers")
]
public sealed class WebPartConnection {
private string _consumerConnectionPointID;
private string _consumerID;
private bool _deleted;
private string _id;
private bool _isActive;
private bool _isShared;
private bool _isStatic;
private string _providerConnectionPointID;
private string _providerID;
private WebPartTransformerCollection _transformers;
private WebPartManager _webPartManager;
public WebPartConnection() {
_isStatic = true;
_isShared = true;
}
// PERF: Consider caching
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
]
public WebPart Consumer {
get {
string consumerID = ConsumerID;
if (consumerID.Length == 0) {
throw new InvalidOperationException(SR.GetString(SR.WebPartConnection_ConsumerIDNotSet));
}
if (_webPartManager != null) {
return _webPartManager.WebParts[consumerID];
}
else {
return null;
}
}
}
// PERF: Consider caching
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
]
public ConsumerConnectionPoint ConsumerConnectionPoint {
get {
WebPart consumer = Consumer;
if (consumer != null && _webPartManager != null) {
return _webPartManager.GetConsumerConnectionPoint(consumer, ConsumerConnectionPointID);
}
else {
return null;
}
}
}
[
DefaultValue(ConnectionPoint.DefaultIDInternal)
]
public string ConsumerConnectionPointID {
get {
//
return (!String.IsNullOrEmpty(_consumerConnectionPointID)) ?
_consumerConnectionPointID : ConnectionPoint.DefaultID;
}
set {
_consumerConnectionPointID = value;
}
}
[
DefaultValue("")
]
public string ConsumerID {
get {
return (_consumerID != null) ? _consumerID : String.Empty;
}
set {
_consumerID = value;
}
}
// True if this connection has been disconnected, but can not actually be removed.
// Either a static or a shared connection.
internal bool Deleted {
get {
return _deleted;
}
set {
_deleted = value;
}
}
[
DefaultValue("")
]
public string ID {
get {
return (_id != null) ? _id : String.Empty;
}
set {
_id = value;
}
}
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
]
public bool IsActive {
get {
return _isActive;
}
}
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
]
public bool IsShared {
get {
return _isShared;
}
}
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
]
public bool IsStatic {
get {
return _isStatic;
}
}
// PERF: Consider caching
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
]
public WebPart Provider {
get {
string providerID = ProviderID;
if (providerID.Length == 0) {
throw new InvalidOperationException(SR.GetString(SR.WebPartConnection_ProviderIDNotSet));
}
if (_webPartManager != null) {
return _webPartManager.WebParts[providerID];
}
else {
return null;
}
}
}
// PERF: Consider caching
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
]
public ProviderConnectionPoint ProviderConnectionPoint {
get {
WebPart provider = Provider;
if (provider != null && _webPartManager != null) {
return _webPartManager.GetProviderConnectionPoint(provider, ProviderConnectionPointID);
}
else {
return null;
}
}
}
[
DefaultValue(ConnectionPoint.DefaultIDInternal)
]
public string ProviderConnectionPointID {
get {
//
return (!String.IsNullOrEmpty(_providerConnectionPointID)) ?
_providerConnectionPointID : ConnectionPoint.DefaultID;
}
set {
_providerConnectionPointID = value;
}
}
[
DefaultValue("")
]
public string ProviderID {
get {
return (_providerID != null) ? _providerID : String.Empty;
}
set {
_providerID = value;
}
}
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
]
public WebPartTransformer Transformer {
get {
if (_transformers == null || _transformers.Count == 0) {
return null;
}
else {
return _transformers[0];
}
}
}
///
[
Browsable(false),
EditorBrowsable(EditorBrowsableState.Never),
PersistenceMode(PersistenceMode.InnerDefaultProperty),
]
public WebPartTransformerCollection Transformers {
get {
if (_transformers == null) {
_transformers = new WebPartTransformerCollection();
}
return _transformers;
}
}
internal void Activate() {
// This method should only be called on WebPartConnections in the WebPartManager, so
// _webPartManager should never be null.
Debug.Assert(_webPartManager != null);
Transformers.SetReadOnly();
WebPart providerWebPart = Provider;
// Cannot be null because Activate() is only called on valid Connections
Debug.Assert(providerWebPart != null);
WebPart consumerWebPart = Consumer;
// Cannot be null because Activate() is only called on valid Connections
Debug.Assert(consumerWebPart != null);
Control providerControl = providerWebPart.ToControl();
Control consumerControl = consumerWebPart.ToControl();
ProviderConnectionPoint providerConnectionPoint = ProviderConnectionPoint;
// Cannot be null because Activate() is only called on valid Connections
Debug.Assert(providerConnectionPoint != null);
if (!providerConnectionPoint.GetEnabled(providerControl)) {
consumerWebPart.SetConnectErrorMessage(SR.GetString(
SR.WebPartConnection_DisabledConnectionPoint, providerConnectionPoint.DisplayName, providerWebPart.DisplayTitle));
return;
}
ConsumerConnectionPoint consumerConnectionPoint = ConsumerConnectionPoint;
// Cannot be null because Activate() is only called on valid Connections
Debug.Assert(consumerConnectionPoint != null);
if (!consumerConnectionPoint.GetEnabled(consumerControl)) {
consumerWebPart.SetConnectErrorMessage(SR.GetString(
SR.WebPartConnection_DisabledConnectionPoint, consumerConnectionPoint.DisplayName, consumerWebPart.DisplayTitle));
return;
}
// Do not activate connections involving closed WebParts
if (!providerWebPart.IsClosed && !consumerWebPart.IsClosed) {
WebPartTransformer transformer = Transformer;
if (transformer == null) {
if (providerConnectionPoint.InterfaceType == consumerConnectionPoint.InterfaceType) {
ConnectionInterfaceCollection secondaryInterfaces = providerConnectionPoint.GetSecondaryInterfaces(providerControl);
if (consumerConnectionPoint.SupportsConnection(consumerControl, secondaryInterfaces)) {
object dataObject = providerConnectionPoint.GetObject(providerControl);
consumerConnectionPoint.SetObject(consumerControl, dataObject);
_isActive = true;
}
else {
consumerWebPart.SetConnectErrorMessage(SR.GetString(
SR.WebPartConnection_IncompatibleSecondaryInterfaces, new string[] {
consumerConnectionPoint.DisplayName, consumerWebPart.DisplayTitle,
providerConnectionPoint.DisplayName, providerWebPart.DisplayTitle}));
}
}
else {
consumerWebPart.SetConnectErrorMessage(SR.GetString(
SR.WebPartConnection_NoCommonInterface, new string[] {
providerConnectionPoint.DisplayName, providerWebPart.DisplayTitle,
consumerConnectionPoint.DisplayName, consumerWebPart.DisplayTitle}));
}
}
else {
Type transformerType = transformer.GetType();
if (!_webPartManager.AvailableTransformers.Contains(transformerType)) {
string errorMessage;
if (_webPartManager.Context != null && _webPartManager.Context.IsCustomErrorEnabled) {
errorMessage = SR.GetString(SR.WebPartConnection_TransformerNotAvailable);
}
else {
errorMessage = SR.GetString(
SR.WebPartConnection_TransformerNotAvailableWithType, transformerType.FullName);
}
consumerWebPart.SetConnectErrorMessage(errorMessage);
//
}
// Check matching interfaces on connection points and transformer attribute
Type transformerConsumerType = WebPartTransformerAttribute.GetConsumerType(transformerType);
Type transformerProviderType = WebPartTransformerAttribute.GetProviderType(transformerType);
if (providerConnectionPoint.InterfaceType == transformerConsumerType &&
transformerProviderType == consumerConnectionPoint.InterfaceType) {
// A transformer never provides any secondary interfaces
if (consumerConnectionPoint.SupportsConnection(consumerControl, ConnectionInterfaceCollection.Empty)) {
object dataObject = providerConnectionPoint.GetObject(providerControl);
object transformedObject = transformer.Transform(dataObject);
consumerConnectionPoint.SetObject(consumerControl, transformedObject);
_isActive = true;
}
else {
consumerWebPart.SetConnectErrorMessage(SR.GetString(
SR.WebPartConnection_ConsumerRequiresSecondaryInterfaces,
consumerConnectionPoint.DisplayName, consumerWebPart.DisplayTitle));
}
}
else if (providerConnectionPoint.InterfaceType != transformerConsumerType) {
string errorMessage;
if (_webPartManager.Context != null && _webPartManager.Context.IsCustomErrorEnabled) {
errorMessage = SR.GetString(
SR.WebPartConnection_IncompatibleProviderTransformer,
providerConnectionPoint.DisplayName, providerWebPart.DisplayTitle);
}
else {
errorMessage = SR.GetString(
SR.WebPartConnection_IncompatibleProviderTransformerWithType,
providerConnectionPoint.DisplayName, providerWebPart.DisplayTitle, transformerType.FullName);
}
consumerWebPart.SetConnectErrorMessage(errorMessage);
}
else {
string errorMessage;
if (_webPartManager.Context != null && _webPartManager.Context.IsCustomErrorEnabled) {
errorMessage = SR.GetString(
SR.WebPartConnection_IncompatibleConsumerTransformer,
consumerConnectionPoint.DisplayName, consumerWebPart.DisplayTitle);
}
else {
errorMessage = SR.GetString(
SR.WebPartConnection_IncompatibleConsumerTransformerWithType,
transformerType.FullName, consumerConnectionPoint.DisplayName, consumerWebPart.DisplayTitle);
}
consumerWebPart.SetConnectErrorMessage(errorMessage);
}
}
}
}
internal bool ConflictsWith(WebPartConnection otherConnection) {
return (ConflictsWithConsumer(otherConnection) || ConflictsWithProvider(otherConnection));
}
internal bool ConflictsWithConsumer(WebPartConnection otherConnection) {
return (!ConsumerConnectionPoint.AllowsMultipleConnections &&
Consumer == otherConnection.Consumer &&
ConsumerConnectionPoint == otherConnection.ConsumerConnectionPoint);
}
internal bool ConflictsWithProvider(WebPartConnection otherConnection) {
return (!ProviderConnectionPoint.AllowsMultipleConnections &&
Provider == otherConnection.Provider &&
ProviderConnectionPoint == otherConnection.ProviderConnectionPoint);
}
internal void SetIsShared(bool isShared) {
_isShared = isShared;
}
internal void SetIsStatic(bool isStatic) {
_isStatic = isStatic;
}
internal void SetTransformer(WebPartTransformer transformer) {
if (Transformers.Count == 0) {
Transformers.Add(transformer);
}
else {
Transformers[0] = transformer;
}
}
internal void SetWebPartManager(WebPartManager webPartManager) {
_webPartManager = webPartManager;
}
// Return the short typename, to improve the look of the collection editor in the designer
public override string ToString () {
return GetType().Name;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CustomErrorsSectionWrapper.cs
- TextDecoration.cs
- ListViewGroup.cs
- FixedSOMGroup.cs
- UnsafeNativeMethodsPenimc.cs
- TaskFileService.cs
- InvalidPropValue.cs
- XsltSettings.cs
- UniformGrid.cs
- WebPartVerbCollection.cs
- CertificateElement.cs
- HandoffBehavior.cs
- ObjectContext.cs
- ToolStripGripRenderEventArgs.cs
- DataGridViewColumnCollectionEditor.cs
- CodeDirectoryCompiler.cs
- CodeTypeConstructor.cs
- ContentFilePart.cs
- XmlSerializationWriter.cs
- DeclaredTypeValidator.cs
- CodeNamespaceImport.cs
- FlowLayout.cs
- HtmlDocument.cs
- SearchForVirtualItemEventArgs.cs
- NativeMethods.cs
- MLangCodePageEncoding.cs
- CounterSetInstance.cs
- XmlQualifiedNameTest.cs
- SqlWriter.cs
- CoreSwitches.cs
- ProviderUtil.cs
- XNameTypeConverter.cs
- QilFunction.cs
- DataControlPagerLinkButton.cs
- ComPersistableTypeElementCollection.cs
- WebZoneDesigner.cs
- SoapIgnoreAttribute.cs
- SiteOfOriginPart.cs
- ReferenceEqualityComparer.cs
- CultureTableRecord.cs
- ForceCopyBuildProvider.cs
- EventListenerClientSide.cs
- __ComObject.cs
- PageHandlerFactory.cs
- SecurityState.cs
- Border.cs
- DependencyObjectCodeDomSerializer.cs
- XmlJsonReader.cs
- VBCodeProvider.cs
- BrowserCapabilitiesFactory.cs
- EnvelopedPkcs7.cs
- MdImport.cs
- NativeRecognizer.cs
- SchemaConstraints.cs
- ColumnWidthChangedEvent.cs
- transactioncontext.cs
- ContourSegment.cs
- PanelDesigner.cs
- PropertyConverter.cs
- WebScriptServiceHost.cs
- HandlerMappingMemo.cs
- AutoScrollHelper.cs
- XmlDocumentType.cs
- DataSet.cs
- TdsParserSessionPool.cs
- BindingsCollection.cs
- GridViewRowEventArgs.cs
- TcpProcessProtocolHandler.cs
- OleDbConnection.cs
- DataGridItemAttachedStorage.cs
- SrgsItemList.cs
- Config.cs
- DeadLetterQueue.cs
- Mapping.cs
- HostedElements.cs
- DecoderReplacementFallback.cs
- PointHitTestResult.cs
- SoapElementAttribute.cs
- ObjectSet.cs
- MetadataSource.cs
- LinqDataSourceValidationException.cs
- ExtensionWindowHeader.cs
- ZipIOLocalFileBlock.cs
- FloaterBaseParaClient.cs
- XmlTextAttribute.cs
- LoadedOrUnloadedOperation.cs
- DefaultBinder.cs
- Debug.cs
- AuthenticateEventArgs.cs
- Ref.cs
- CodeObject.cs
- DES.cs
- HandoffBehavior.cs
- XsltSettings.cs
- ServiceDescription.cs
- SqlResolver.cs
- ShaperBuffers.cs
- XmlNodeList.cs
- WebPartEditorCancelVerb.cs
- ContextStaticAttribute.cs