Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WinForms / System / WinForms / Design / DesignerContextDescriptor.cs / 1 / DesignerContextDescriptor.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.Windows.Forms.Design { using System; using System.Design; using System.ComponentModel; using System.Windows.Forms; using System.ComponentModel.Design; using System.Drawing; using System.Windows.Forms.Design.Behavior; using System.Drawing.Design; using System.Diagnostics; using System.Collections; using System.Runtime.InteropServices; using System.Diagnostics.CodeAnalysis; ////// // --------------------------------------------------------------------------------- // Class Implemented for opening the ImageEditor ... // // This class is replaces the ContextDescriptor in ToolStripItem designer. // // DesignerContextDescriptor implements the IWindowsFormsEditorService which is required // to open the ImageEditor .. Hence the need for this Implementation //----------------------------------------------------------------------------------- /// internal class DesignerContextDescriptor : IWindowsFormsEditorService, ITypeDescriptorContext { private Component _component; private PropertyDescriptor _propertyDescriptor; private IDesignerHost _host; // // Constructor // ///[SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] public DesignerContextDescriptor(Component component, PropertyDescriptor imageProperty, IDesignerHost host) { _component = component; _propertyDescriptor = imageProperty; _host = host; } /// /// /// Gets called thru the TemplateNode to open the ImageEditor. /// ///// Called through reflection [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] public Image OpenImageCollection() { object propertyValue = _propertyDescriptor.GetValue(_component); if (_propertyDescriptor != null) { Image image = null; UITypeEditor itemsEditor = _propertyDescriptor.GetEditor(typeof(UITypeEditor)) as UITypeEditor; Debug.Assert(itemsEditor != null, "Didn't get a collection editor for type '" + _propertyDescriptor.PropertyType.FullName + "'"); if (itemsEditor != null) { image = (Image)itemsEditor.EditValue(this, (IServiceProvider)this, propertyValue); } if (image != null) { return image; } } // Always Return old Image if Image is not changed... return (Image)propertyValue; } IContainer ITypeDescriptorContext.Container { get { return null; } } object ITypeDescriptorContext.Instance { get { return _component; } } PropertyDescriptor ITypeDescriptorContext.PropertyDescriptor { get { return _propertyDescriptor; } } void ITypeDescriptorContext.OnComponentChanged() { } bool ITypeDescriptorContext.OnComponentChanging() { return false; } /// /// Self-explanitory interface impl. /// object IServiceProvider.GetService(Type serviceType) { if (serviceType == typeof(IWindowsFormsEditorService)) { return this; } else { return _host.GetService(serviceType); } } ////// Self-explanitory interface impl. /// void IWindowsFormsEditorService.CloseDropDown() { // we'll never be called to do this. // Debug.Fail("NOTIMPL"); return; } ////// Self-explanitory interface impl. /// void IWindowsFormsEditorService.DropDownControl(Control control) { // nope, sorry // Debug.Fail("NOTIMPL"); return; } ////// Self-explanitory interface impl. /// System.Windows.Forms.DialogResult IWindowsFormsEditorService.ShowDialog(Form dialog) { IntPtr priorFocus = UnsafeNativeMethods.GetFocus(); DialogResult result; IUIService uiSvc = (IUIService)((IServiceProvider)this).GetService(typeof(IUIService)); if (uiSvc != null) { result = uiSvc.ShowDialog(dialog); } else { result = dialog.ShowDialog(_component as IWin32Window); } if (priorFocus != IntPtr.Zero) { UnsafeNativeMethods.SetFocus(new HandleRef(null, priorFocus)); } return result; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RightNameExpirationInfoPair.cs
- filewebresponse.cs
- HandleExceptionArgs.cs
- DataGridColumnCollection.cs
- KeyedHashAlgorithm.cs
- XmlLoader.cs
- ToolboxItemFilterAttribute.cs
- ScrollItemPattern.cs
- ClientConfigurationSystem.cs
- HandoffBehavior.cs
- Emitter.cs
- ReflectTypeDescriptionProvider.cs
- ServiceProviders.cs
- PersonalizationAdministration.cs
- MenuAdapter.cs
- EntityDataSourceChangingEventArgs.cs
- DoubleLinkList.cs
- PtsContext.cs
- CodeAccessPermission.cs
- SerialPort.cs
- Deserializer.cs
- MatrixValueSerializer.cs
- NameSpaceEvent.cs
- TextDecoration.cs
- DatatypeImplementation.cs
- HTTPRemotingHandler.cs
- AndCondition.cs
- TcpSocketManager.cs
- ObjectPropertyMapping.cs
- SpeechEvent.cs
- BinaryFormatter.cs
- SqlUtil.cs
- JavascriptCallbackResponseProperty.cs
- BulletedListEventArgs.cs
- TableRowGroup.cs
- SoapFormatterSinks.cs
- XmlDataFileEditor.cs
- ListViewGroup.cs
- ConnectionAcceptor.cs
- PageParserFilter.cs
- CalendarDateRange.cs
- GetPolicyDetailsRequest.cs
- BaseCollection.cs
- ConnectionConsumerAttribute.cs
- _ConnectionGroup.cs
- ZipIOModeEnforcingStream.cs
- NavigationHelper.cs
- InlineCollection.cs
- ApplicationSecurityManager.cs
- PagePropertiesChangingEventArgs.cs
- Int16Storage.cs
- SQLChars.cs
- HttpRequestCacheValidator.cs
- ButtonFieldBase.cs
- CapiSymmetricAlgorithm.cs
- XmlDataCollection.cs
- HttpListenerResponse.cs
- SimpleWorkerRequest.cs
- SafeProcessHandle.cs
- BaseDataBoundControlDesigner.cs
- SocketException.cs
- ProxyWebPartManager.cs
- Message.cs
- DataControlFieldHeaderCell.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- _ChunkParse.cs
- SrgsGrammar.cs
- TagPrefixInfo.cs
- SqlServices.cs
- SimpleType.cs
- FreezableOperations.cs
- UnicodeEncoding.cs
- StringAnimationBase.cs
- ProgramPublisher.cs
- InvalidComObjectException.cs
- ObjectStateEntry.cs
- TypeConverterHelper.cs
- followingsibling.cs
- TransformValueSerializer.cs
- Array.cs
- NativeMethods.cs
- FixedSOMFixedBlock.cs
- SamlAuthorizationDecisionClaimResource.cs
- ControlCollection.cs
- SeparatorAutomationPeer.cs
- cookiecontainer.cs
- ProgressBar.cs
- DataBoundControlAdapter.cs
- Blend.cs
- GroupItemAutomationPeer.cs
- MappingItemCollection.cs
- HtmlElementCollection.cs
- RegistrySecurity.cs
- ConditionChanges.cs
- AudienceUriMode.cs
- XmlChoiceIdentifierAttribute.cs
- LoginStatusDesigner.cs
- UpdateCommand.cs
- NavigationEventArgs.cs
- Label.cs