Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / CompMod / System / ComponentModel / Design / ObjectSelectorEditor.cs / 1 / ObjectSelectorEditor.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.ComponentModel.Design { using System.Design; using System.Runtime.Serialization.Formatters; using System.Runtime.InteropServices; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System; using System.Windows.Forms; using System.Drawing; using System.Windows.Forms.PropertyGridInternal; using System.Windows.Forms.Design; using System.Windows.Forms.ComponentModel; using Microsoft.Win32; using System.Drawing.Design; ////// /// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1012:AbstractTypesShouldNotHaveConstructors")] public abstract class ObjectSelectorEditor : UITypeEditor { ////// /// public bool SubObjectSelector = false; ///[To be supplied.] ////// /// protected object prevValue = null; ///[To be supplied.] ////// /// protected object currValue = null; private Selector selector = null; // ///[To be supplied.] ////// /// public ObjectSelectorEditor() { } // ///[To be supplied.] ////// /// public ObjectSelectorEditor(bool subObjectSelector) { this.SubObjectSelector = subObjectSelector; } ///[To be supplied.] ////// /// [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] // everything in this assembly is full trust. public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { if (null != provider) { IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (edSvc != null) { if (null == selector) { selector = new Selector(this); } prevValue = value; currValue = value; FillTreeWithData(selector, context, provider); selector.Start(edSvc, value); edSvc.DropDownControl(selector); selector.Stop(); if (prevValue != currValue) { value = currValue; } } } return value; } ////// /// [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] // everything in this assembly is full trust. public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) { return UITypeEditorEditStyle.DropDown; } // ////// /// public bool EqualsToValue(object value) { if (value == currValue) return true; else return false; } // ///[To be supplied.] ////// /// protected virtual void FillTreeWithData(Selector selector, ITypeDescriptorContext context, IServiceProvider provider) { selector.Clear(); } // // override this method to add validation code for new value // ///[To be supplied.] ////// /// public virtual void SetValue(object value) { this.currValue = value; } // // // ///[To be supplied.] ////// /// /// public class Selector : System.Windows.Forms.TreeView { // private ObjectSelectorEditor editor = null; private IWindowsFormsEditorService edSvc = null; ////// /// public bool clickSeen = false; // ///[To be supplied.] ////// /// public Selector(ObjectSelectorEditor editor) { CreateHandle(); this.editor = editor; this.BorderStyle = BorderStyle.None; this.FullRowSelect = !editor.SubObjectSelector; this.Scrollable = true; this.CheckBoxes = false; this.ShowPlusMinus = editor.SubObjectSelector; this.ShowLines = editor.SubObjectSelector; this.ShowRootLines = editor.SubObjectSelector; AfterSelect += new TreeViewEventHandler(this.OnAfterSelect); } // ///[To be supplied.] ////// /// public SelectorNode AddNode(string label, object value, SelectorNode parent) { SelectorNode newNode = new SelectorNode(label, value); if (parent != null) { parent.Nodes.Add(newNode); } else { Nodes.Add(newNode); } return newNode; } private bool ChooseSelectedNodeIfEqual() { if (editor != null && edSvc != null) { editor.SetValue(((SelectorNode)SelectedNode).value); if (editor.EqualsToValue(((SelectorNode)SelectedNode).value)) { edSvc.CloseDropDown(); return true; } } return false; } // ///[To be supplied.] ////// /// public void Clear() { clickSeen = false; Nodes.Clear(); } // ///[To be supplied.] ////// /// protected void OnAfterSelect(object sender, TreeViewEventArgs e) { if (clickSeen) { ChooseSelectedNodeIfEqual(); clickSeen = false; } } // ///[To be supplied.] ////// /// protected override void OnKeyDown(KeyEventArgs e) { Keys key = e.KeyCode; switch (key) { case Keys.Return: if (ChooseSelectedNodeIfEqual()) { e.Handled = true; } break; case Keys.Escape: editor.SetValue(editor.prevValue); e.Handled = true; edSvc.CloseDropDown(); break; } base.OnKeyDown(e); } ///[To be supplied.] ////// /// protected override void OnKeyPress(KeyPressEventArgs e) { switch (e.KeyChar) { case '\r': // Enter key e.Handled = true; break; } base.OnKeyPress(e); } ///[To be supplied.] ////// /// /// protected override void OnNodeMouseClick(TreeNodeMouseClickEventArgs e) { // we won't get an OnAfterSelect if it's already selected, so use this instead if (e.Node == SelectedNode) { ChooseSelectedNodeIfEqual(); } base.OnNodeMouseClick(e); } ///[To be supplied.] ////// /// public bool SetSelection(object value, System.Windows.Forms.TreeNodeCollection nodes) { TreeNode[] treeNodes; if (nodes == null) { treeNodes = new TreeNode[this.Nodes.Count]; this.Nodes.CopyTo(treeNodes, 0); } else { treeNodes = new TreeNode[nodes.Count]; nodes.CopyTo(treeNodes, 0); } int len = treeNodes.Length; if (len == 0) return false; for (int i=0; i[To be supplied.] ////// /// public void Start(IWindowsFormsEditorService edSvc, object value) { this.edSvc = edSvc; this.clickSeen = false; SetSelection(value, Nodes); } // ///[To be supplied.] ////// /// public void Stop() { this.edSvc = null; } // ///[To be supplied.] ////// /// [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] // everything in this assembly is full trust. protected override void WndProc(ref Message m) { switch (m.Msg) { case NativeMethods.WM_GETDLGCODE: m.Result = (IntPtr)((long)m.Result | NativeMethods.DLGC_WANTALLKEYS); return; case NativeMethods.WM_MOUSEMOVE: if (clickSeen) { clickSeen = false; } break; case NativeMethods.WM_REFLECT + NativeMethods.WM_NOTIFY: NativeMethods.NMTREEVIEW nmtv = (NativeMethods.NMTREEVIEW)Marshal.PtrToStructure(m.LParam, typeof(NativeMethods.NMTREEVIEW)); if (nmtv.nmhdr.code == NativeMethods.NM_CLICK) { clickSeen = true; } break; } base.WndProc(ref m); } } // ///[To be supplied.] ////// /// /// /// Suppressed because although the type implements ISerializable --its on the base class and this class /// is not modifying the stream to include its local information. Therefore, we should not publicly advertise this as /// Serializable unless explicitly required. [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2237:MarkISerializableTypesWithSerializable")] public class SelectorNode : System.Windows.Forms.TreeNode { ////// /// public object value = null; ///[To be supplied.] ////// /// public SelectorNode(string label, object value) : base (label) { this.value = value; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.[To be supplied.] ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ServicePointManagerElement.cs
- newinstructionaction.cs
- Crypto.cs
- TemplateFactory.cs
- Ticks.cs
- SqlDataSource.cs
- BroadcastEventHelper.cs
- BaseHashHelper.cs
- CompoundFileStorageReference.cs
- ByteAnimationBase.cs
- ArrayExtension.cs
- UnhandledExceptionEventArgs.cs
- AnnotationHighlightLayer.cs
- Vector.cs
- UDPClient.cs
- PathTooLongException.cs
- PolygonHotSpot.cs
- MiniModule.cs
- RegionIterator.cs
- PreProcessInputEventArgs.cs
- ChangesetResponse.cs
- SchemaMapping.cs
- EmptyImpersonationContext.cs
- OutputCacheSection.cs
- NumberFormatInfo.cs
- WebFaultException.cs
- PageWrapper.cs
- COM2Properties.cs
- WMIGenerator.cs
- Encoding.cs
- ConnectionConsumerAttribute.cs
- SBCSCodePageEncoding.cs
- GetWorkflowTree.cs
- DelegateHelpers.Generated.cs
- Stacktrace.cs
- ResXResourceReader.cs
- WebContext.cs
- EncoderExceptionFallback.cs
- HostingEnvironment.cs
- RuntimeConfigLKG.cs
- PasswordRecovery.cs
- PeerObject.cs
- RegexMatchCollection.cs
- GridView.cs
- Comparer.cs
- RoleGroupCollection.cs
- DetailsViewDeletedEventArgs.cs
- Comparer.cs
- SecureStringHasher.cs
- FrameworkContextData.cs
- ProxyWebPartConnectionCollection.cs
- cookieexception.cs
- GlobalProxySelection.cs
- TextViewBase.cs
- ControllableStoryboardAction.cs
- VarRefManager.cs
- KeyTimeConverter.cs
- RowCache.cs
- SafeNativeMethods.cs
- SafeNativeMethods.cs
- OperationResponse.cs
- ReaderWriterLock.cs
- SendContent.cs
- MiniParameterInfo.cs
- TypeBuilderInstantiation.cs
- SiblingIterators.cs
- messageonlyhwndwrapper.cs
- SchemaTypeEmitter.cs
- Imaging.cs
- TemplateColumn.cs
- ContextQuery.cs
- datacache.cs
- StringDictionaryWithComparer.cs
- QfeChecker.cs
- SchemaNamespaceManager.cs
- DataTableReader.cs
- ArrayWithOffset.cs
- WebPartDescription.cs
- RoleBoolean.cs
- TextPenaltyModule.cs
- AutoGeneratedField.cs
- Selection.cs
- EdgeProfileValidation.cs
- ActivityPropertyReference.cs
- ToolboxComponentsCreatingEventArgs.cs
- MessageEventSubscriptionService.cs
- RelationshipEnd.cs
- _ContextAwareResult.cs
- TimeSpanValidatorAttribute.cs
- BamlRecordReader.cs
- EvidenceBase.cs
- BamlTreeUpdater.cs
- BooleanFunctions.cs
- Command.cs
- EventManager.cs
- EntityContainerRelationshipSet.cs
- compensatingcollection.cs
- MediaCommands.cs
- XmlSortKey.cs
- CompilerErrorCollection.cs