Code:
/ DotNET / DotNET / 8.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
- TemplateBindingExpression.cs
- TextReader.cs
- QilFactory.cs
- RegistryExceptionHelper.cs
- SqlDelegatedTransaction.cs
- SystemColorTracker.cs
- PlainXmlDeserializer.cs
- ProfileSettingsCollection.cs
- LocalFileSettingsProvider.cs
- DictionaryEntry.cs
- IdleTimeoutMonitor.cs
- Pen.cs
- TransformedBitmap.cs
- WebPartVerbsEventArgs.cs
- CompilationLock.cs
- DesignBindingPicker.cs
- UrlMappingsModule.cs
- ContentPosition.cs
- XmlMembersMapping.cs
- RoutedEventValueSerializer.cs
- ParseElementCollection.cs
- WebControl.cs
- ProtectedConfiguration.cs
- SchemaTypeEmitter.cs
- Compiler.cs
- SafeRightsManagementQueryHandle.cs
- DocumentPaginator.cs
- XmlSchemaSimpleTypeRestriction.cs
- x509utils.cs
- Int32EqualityComparer.cs
- PointAnimationBase.cs
- DataShape.cs
- TextContainerChangedEventArgs.cs
- OneOf.cs
- PermissionToken.cs
- ToolStripRenderEventArgs.cs
- WorkflowRuntimeService.cs
- ResetableIterator.cs
- HtmlControl.cs
- HttpModuleCollection.cs
- ReadOnlyObservableCollection.cs
- Pair.cs
- PolygonHotSpot.cs
- DataControlButton.cs
- ParserStreamGeometryContext.cs
- InteropAutomationProvider.cs
- CategoryGridEntry.cs
- RelationshipEntry.cs
- PathTooLongException.cs
- TypeUtil.cs
- SectionVisual.cs
- SchemaExporter.cs
- InnerItemCollectionView.cs
- RSAOAEPKeyExchangeDeformatter.cs
- TypeDescriptor.cs
- TreeWalker.cs
- XmlQuerySequence.cs
- WebPartDeleteVerb.cs
- IntegerCollectionEditor.cs
- TextRangeEditTables.cs
- TraceInternal.cs
- CfgArc.cs
- Dictionary.cs
- PartitionerQueryOperator.cs
- ObjectStateManager.cs
- NamespaceEmitter.cs
- MasterPageBuildProvider.cs
- ColorConvertedBitmap.cs
- PublisherMembershipCondition.cs
- ScriptingSectionGroup.cs
- ComboBoxAutomationPeer.cs
- safex509handles.cs
- UnsafeMethods.cs
- CustomValidator.cs
- QfeChecker.cs
- ZoomingMessageFilter.cs
- PopupEventArgs.cs
- AdapterUtil.cs
- TrustLevelCollection.cs
- EventlogProvider.cs
- ModelFunctionTypeElement.cs
- ValidatingPropertiesEventArgs.cs
- SizeChangedEventArgs.cs
- NamedElement.cs
- CodePrimitiveExpression.cs
- PackageProperties.cs
- Nullable.cs
- ProfileGroupSettings.cs
- DurationConverter.cs
- AutomationPatternInfo.cs
- LoginName.cs
- ConfigXmlText.cs
- PasswordBoxAutomationPeer.cs
- FixedTextView.cs
- NotCondition.cs
- SystemWebExtensionsSectionGroup.cs
- ProfilePropertyMetadata.cs
- TemplateNodeContextMenu.cs
- FormsAuthenticationTicket.cs
- LocalServiceSecuritySettings.cs