Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / CompMod / System / ComponentModel / Design / DesignerActionList.cs / 1 / DesignerActionList.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.ComponentModel.Design { using System; using System.Collections; using System.Collections.Generic; using System.Reflection; ////// /// DesignerActionList is the abstract base class which control authors inherit from to create a task sheet. /// Typical usage is to add properties and methods and then implement the abstract /// GetSortedActionItems method to return an array of DesignerActionItems in the order they are to be displayed. /// public class DesignerActionList { private bool _autoShow = false; private IComponent _component; ////// /// takes the related component as a parameter /// public DesignerActionList(IComponent component) { _component = component; } ////// /// [to be provvided] /// public virtual bool AutoShow { get { return _autoShow; } set { if(_autoShow != value) { _autoShow = value; } } } ////// /// this will be null for list created from upgraded verbs collection... /// public IComponent Component { get { return _component; } } ////// /// [to be provvided] /// public object GetService(Type serviceType) { if (_component != null && _component.Site != null) { return _component.Site.GetService(serviceType); } else { return null; } } private object GetCustomAttribute(MemberInfo info, Type attributeType) { object[] attributes = info.GetCustomAttributes(attributeType, true); if (attributes.Length > 0) { return attributes[0]; } else { return null; } } private void GetMemberDisplayProperties(MemberInfo info, out string displayName, out string description, out string category) { displayName = description = category = ""; DescriptionAttribute descAttr = GetCustomAttribute(info, typeof(DescriptionAttribute)) as DescriptionAttribute; if(descAttr != null) { description = descAttr.Description; } DisplayNameAttribute dispNameAttr = GetCustomAttribute(info, typeof(DisplayNameAttribute)) as DisplayNameAttribute; if(dispNameAttr != null) { displayName = dispNameAttr.DisplayName; } CategoryAttribute catAttr = GetCustomAttribute(info, typeof(CategoryAttribute)) as CategoryAttribute; if(dispNameAttr != null) { category = catAttr.Category; } if (string.IsNullOrEmpty(displayName)) { displayName = info.Name; } } ////// /// [to be provvided] /// public virtual DesignerActionItemCollection GetSortedActionItems() { string dispName, desc, cat; SortedListitems = new SortedList (); // we want to ignore the public methods and properties for THIS class (only take the inherited ones) IList originalMethods = Array.AsReadOnly(typeof(DesignerActionList).GetMethods(BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public)); IList originalProperties = Array.AsReadOnly(typeof(DesignerActionList).GetProperties(BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public)); // Do methods MethodInfo[] methods = this.GetType().GetMethods(BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public); foreach (MethodInfo info in methods) { if(originalMethods.Contains(info)) continue; // Make sure there are only methods that take no parameters if (info.GetParameters().Length == 0 && !info.IsSpecialName ) { GetMemberDisplayProperties(info, out dispName, out desc, out cat); items.Add(info.Name, new DesignerActionMethodItem(this, info.Name, dispName, cat, desc)); } } // Do properties PropertyInfo [] properties = this.GetType().GetProperties(BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.DeclaredOnly | BindingFlags.Public); foreach (PropertyInfo info in properties) { if(originalProperties.Contains(info)) continue; GetMemberDisplayProperties(info, out dispName, out desc, out cat); items.Add(dispName, new DesignerActionPropertyItem(info.Name, dispName, cat, desc)); } DesignerActionItemCollection returnValue = new DesignerActionItemCollection(); foreach (DesignerActionItem dai in items.Values) { returnValue.Add(dai); } return returnValue; } } } // 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
- HashSetDebugView.cs
- WsdlInspector.cs
- DataServicePagingProviderWrapper.cs
- BufferedReadStream.cs
- WebSysDisplayNameAttribute.cs
- DomainUpDown.cs
- AnnotationService.cs
- SQLRoleProvider.cs
- SqlRecordBuffer.cs
- DmlSqlGenerator.cs
- EntityDataSourceColumn.cs
- ByeOperationAsyncResult.cs
- NetworkAddressChange.cs
- RawUIStateInputReport.cs
- PaginationProgressEventArgs.cs
- SmiMetaData.cs
- ComPersistableTypeElement.cs
- PageAdapter.cs
- ToolStripItemDesigner.cs
- ObjectView.cs
- XPathBinder.cs
- PersonalizationProviderCollection.cs
- SID.cs
- GifBitmapDecoder.cs
- BinaryCommonClasses.cs
- ContextStack.cs
- ListenerConfig.cs
- Color.cs
- WinEventWrap.cs
- HierarchicalDataBoundControl.cs
- WebRequest.cs
- BitmapPalette.cs
- WeakReferenceEnumerator.cs
- PersistChildrenAttribute.cs
- ServiceOperation.cs
- FormatException.cs
- ParserHooks.cs
- StrongNameKeyPair.cs
- TemplateContainer.cs
- HttpModulesSection.cs
- BuildProviderCollection.cs
- OleDbErrorCollection.cs
- ImageAnimator.cs
- DynamicDocumentPaginator.cs
- DirectoryRootQuery.cs
- SharedDp.cs
- MembershipAdapter.cs
- invalidudtexception.cs
- VideoDrawing.cs
- IncrementalCompileAnalyzer.cs
- EmptyEnumerator.cs
- FieldCollectionEditor.cs
- QueryCursorEventArgs.cs
- TrackBar.cs
- ProfessionalColors.cs
- FileBasedResourceGroveler.cs
- XmlnsPrefixAttribute.cs
- ListItemCollection.cs
- WriteableBitmap.cs
- Timer.cs
- CodeIndexerExpression.cs
- HttpGetProtocolImporter.cs
- FixedSOMTableRow.cs
- TdsRecordBufferSetter.cs
- CleanUpVirtualizedItemEventArgs.cs
- SchemaImporterExtension.cs
- DoubleAnimationUsingKeyFrames.cs
- ELinqQueryState.cs
- CodeObjectCreateExpression.cs
- DBCommandBuilder.cs
- TextServicesContext.cs
- IISMapPath.cs
- BooleanConverter.cs
- ZipIORawDataFileBlock.cs
- HighlightComponent.cs
- RegexCompiler.cs
- DataObjectAttribute.cs
- TimeSpanValidator.cs
- LinkLabel.cs
- DataKey.cs
- RegexParser.cs
- DynamicFilterExpression.cs
- SqlRowUpdatedEvent.cs
- CompleteWizardStep.cs
- HttpBindingExtension.cs
- DocumentSequenceHighlightLayer.cs
- PinProtectionHelper.cs
- bidPrivateBase.cs
- OleDbRowUpdatedEvent.cs
- PieceNameHelper.cs
- XpsS0ValidatingLoader.cs
- MultipleViewPatternIdentifiers.cs
- SspiNegotiationTokenProviderState.cs
- HideDisabledControlAdapter.cs
- WindowsScrollBarBits.cs
- SchemaObjectWriter.cs
- OdbcException.cs
- XPathEmptyIterator.cs
- QualificationDataItem.cs
- LinearGradientBrush.cs