Exemplo n.º 1
0
        public object Serialize(System.Collections.ICollection objects)
        {
            ComponentSerializationService componentSerializationService = _serviceProvider.GetService(typeof(ComponentSerializationService)) as ComponentSerializationService;
            SerializationStore            returnObject = null;

            using (SerializationStore serializationStore = componentSerializationService.CreateStore())
            {
                foreach (object obj in objects)
                {
                    if (obj is Control control)
                    {
                        //if (control is SMGroup group)
                        //{
                        //    foreach (object obj2 in control.Controls)
                        //    {
                        //        componentSerializationService.Serialize(serializationStore, obj2);
                        //    }
                        //}
                        //if(control is SplitContainerControl split)
                        //{
                        //    componentSerializationService.SerializeAbsolute(serializationStore, split.Panel1.Controls[0]);
                        //    componentSerializationService.SerializeAbsolute(serializationStore, split.Panel2.Controls[0]);
                        //}
                        componentSerializationService.SerializeAbsolute(serializationStore, obj);
                    }
                    returnObject = serializationStore;
                }
            }
            return(returnObject);
        }
Exemplo n.º 2
0
        public static IDataObject SerializeActivitiesToDataObject(IServiceProvider serviceProvider, ICollection activities)
        {
            // get component serialization service
            ComponentSerializationService css = (ComponentSerializationService)serviceProvider.GetService(typeof(ComponentSerializationService));

            if (css == null)
            {
                throw new InvalidOperationException("Component Serialization Service is missing.");
            }

            // serialize all activities to the store
            SerializationStore store = css.CreateStore();

            using (store)
            {
                foreach (Activity activity in activities)
                {
                    css.Serialize(store, activity);
                }
            }

            // wrap it with clipboard style object
            Stream          stream    = new MemoryStream();
            BinaryFormatter formatter = new BinaryFormatter();

            formatter.Serialize(stream, store);
            stream.Seek(0, SeekOrigin.Begin);
            return(new DataObject(CF_DESIGNER, stream));
        }
Exemplo n.º 3
0
        public System.Collections.ICollection Deserialize(object obj)
        {
            // string data = File.ReadAllText("save.txt");
            MemoryStream fs = obj as MemoryStream;

            if (fs != null)
            {
                ComponentSerializationService componentSerializationService = _serviceProvider.GetService(typeof(ComponentSerializationService)) as ComponentSerializationService;

                SerializationStore serializationStore = componentSerializationService.LoadStore(fs);
                ICollection        collection         = componentSerializationService.Deserialize(serializationStore);
                fs.Close();
                return(collection);
            }
            else
            {
                SerializationStore serializationStore = obj as SerializationStore;

                if (serializationStore != null)
                {
                    ComponentSerializationService componentSerializationService = _serviceProvider.GetService(typeof(ComponentSerializationService)) as ComponentSerializationService;
                    ICollection collection = componentSerializationService.Deserialize(serializationStore);
                    return(collection);
                }
            }


            return(new object[] { });
        }
 public System.Collections.ICollection Deserialize ( object serializationData ) {
     SerializationStore serializationStore = serializationData as SerializationStore;
     if ( serializationStore != null ) {
         ComponentSerializationService componentSerializationService = _serviceProvider.GetService ( typeof ( ComponentSerializationService ) ) as ComponentSerializationService;
         ICollection collection = componentSerializationService.Deserialize ( serializationStore );
         return collection;
     }
     return new object[] {};
 }
        /// <summary>
        /// Deserializes the serialization data object and returns a
        /// collection of objects represented by that data.
        /// </summary>
        public ICollection Deserialize(object serializationData)
        {
            IDesignerHost host = (IDesignerHost)this.serviceProvider.GetService(typeof(IDesignerHost));

            if (host != null)
            {
                ComponentSerializationService serializationService = (ComponentSerializationService)serviceProvider.GetService(typeof(ComponentSerializationService));
                return(serializationService.Deserialize((SerializationStore)serializationData, host.Container));
            }
            return(null);
        }
        public ICollection Deserialize(object serializationData)
        {
            SerializationStore serializationStore = serializationData as SerializationStore;

            if (serializationStore != null)
            {
                ComponentSerializationService componentSerializationService = this.serviceProvider.GetService(typeof(ComponentSerializationService)) as ComponentSerializationService;
                return(componentSerializationService.Deserialize(serializationStore));
            }
            return(new object[0]);
        }
Exemplo n.º 7
0
 private void serializeSubControls(ComponentSerializationService componentSerializationService, SerializationStore serializationStore, Control c)
 {
     if (c.Controls.Count > 0)
     {
         foreach (Control c0 in c.Controls)
         {
             componentSerializationService.Serialize(serializationStore, c0);
             serializeSubControls(componentSerializationService, serializationStore, c0);
         }
     }
 }
Exemplo n.º 8
0
        /// <summary>
        /// Serializes a collection of objects and stores them in a
        /// serialization data object.
        /// </summary>
        public object Serialize(ICollection objects)
        {
            ComponentSerializationService serializationService = (ComponentSerializationService)serviceProvider.GetService(typeof(ComponentSerializationService));
            SerializationStore            store = serializationService.CreateStore();

            foreach (object value in objects)
            {
                serializationService.Serialize(store, value);
            }
            store.Close();
            return(store);
        }
Exemplo n.º 9
0
				public void SetModifiedState (UndoEngine engine, IComponent component, MemberDescriptor member)
				{
					// Console.WriteLine ("ComponentChangeAction.SetModifiedState (" + (_componentName != null ? (_componentName + ".") : "") +
					// 		   member.Name + "): " +
					// 		   (((PropertyDescriptor)member).GetValue (component) == null ? "null" :
					// 		   ((PropertyDescriptor)member).GetValue (component).ToString ()));
					ComponentSerializationService serializationService = engine.GetRequiredService (
						typeof (ComponentSerializationService)) as ComponentSerializationService;
					_afterChange = serializationService.CreateStore ();
					serializationService.SerializeMemberAbsolute (_afterChange, component, member);
					_afterChange.Close ();
				}
 public object Serialize ( System.Collections.ICollection objects ) {
     ComponentSerializationService componentSerializationService = _serviceProvider.GetService ( typeof ( ComponentSerializationService ) ) as ComponentSerializationService;
     SerializationStore returnObject = null;
     using ( SerializationStore serializationStore = componentSerializationService.CreateStore() ) {
         foreach ( object obj in objects ) {
             if ( obj is Control )
                 componentSerializationService.Serialize ( serializationStore, obj );
         }
         returnObject = serializationStore;
     }
     return returnObject;
 }
Exemplo n.º 11
0
				public ComponentAddRemoveAction (UndoEngine engine, IComponent component, bool added)
				{
					if (component == null)
						throw new ArgumentNullException ("component");
					// Console.WriteLine ((added ? "Component*Add*RemoveAction" : "ComponentAdd*Remove*Action") +
					// 		   " (" + component.Site.Name + ")");
					ComponentSerializationService serializationService = engine.GetRequiredService (
						typeof (ComponentSerializationService)) as ComponentSerializationService;

					_serializedComponent = serializationService.CreateStore ();
					serializationService.Serialize (_serializedComponent, component);
					_serializedComponent.Close ();

					_added = added;
					_componentName = component.Site.Name;
				}
        /// <summary>
        /// Serializes a collection of objects and stores them in a
        /// serialization data object.
        /// </summary>
        public object Serialize(ICollection objects)
        {
            if (objects == null)
            {
                throw new ArgumentNullException("objects");
            }
            ComponentSerializationService serializationService = (ComponentSerializationService)serviceProvider.GetService(typeof(ComponentSerializationService));
            SerializationStore            store = serializationService.CreateStore();

            foreach (object value in objects)
            {
                serializationService.Serialize(store, value);
            }
            store.Close();
            return(store);
        }
Exemplo n.º 13
0
 public static ICollection CopyDragObjects(ICollection objects, IServiceProvider svcProvider)
 {
     if ((objects != null) && (svcProvider != null))
     {
         Cursor current = Cursor.Current;
         try
         {
             Cursor.Current = Cursors.WaitCursor;
             ComponentSerializationService service = svcProvider.GetService(typeof(ComponentSerializationService)) as ComponentSerializationService;
             IDesignerHost host = svcProvider.GetService(typeof(IDesignerHost)) as IDesignerHost;
             if ((service != null) && (host != null))
             {
                 SerializationStore store = null;
                 store = service.CreateStore();
                 foreach (IComponent component in GetCopySelection(objects, host))
                 {
                     service.Serialize(store, component);
                 }
                 store.Close();
                 ICollection is2  = service.Deserialize(store);
                 ArrayList   list = new ArrayList(objects.Count);
                 foreach (IComponent component2 in is2)
                 {
                     Control control = component2 as Control;
                     if ((control != null) && (control.Parent == null))
                     {
                         list.Add(component2);
                     }
                     else if (control == null)
                     {
                         ToolStripItem item = component2 as ToolStripItem;
                         if ((item != null) && (item.GetCurrentParent() == null))
                         {
                             list.Add(component2);
                         }
                     }
                 }
                 return(list);
             }
         }
         finally
         {
             Cursor.Current = current;
         }
     }
     return(null);
 }
Exemplo n.º 14
0
				public override void Undo (UndoEngine engine)
				{
					IDesignerHost host = engine.GetRequiredService (typeof (IDesignerHost)) as IDesignerHost;
					if (_added) {
						// Console.WriteLine ("Component*Add*RemoveAction.Undo (" + _componentName + ")");
						IComponent component = host.Container.Components[_componentName];
						if (component != null) // the component might have been destroyed already
							host.DestroyComponent (component);
						_added = false;
					} else {
						// Console.WriteLine ("ComponentAdd*Remove*Action.Undo (" + _componentName + ")");
						ComponentSerializationService serializationService = engine.GetRequiredService (
							typeof (ComponentSerializationService)) as ComponentSerializationService;

						serializationService.DeserializeTo (_serializedComponent, host.Container);
						_added = true;
					}
				}
Exemplo n.º 15
0
        public object Serialize(ICollection objects)
        {
            ComponentSerializationService componentSerializationService = this.serviceProvider.GetService(typeof(ComponentSerializationService)) as ComponentSerializationService;
            SerializationStore            result = null;

            using (SerializationStore serializationStore = componentSerializationService.CreateStore())
            {
                foreach (object obj in objects)
                {
                    if (obj is Control)
                    {
                        componentSerializationService.Serialize(serializationStore, obj);
                    }
                }
                result = serializationStore;
            }
            return(result);
        }
Exemplo n.º 16
0
				// Reminder: _component might no longer be a valid instance
				// so one should request a new one.
				// 
				public override void Undo (UndoEngine engine)
				{
					if (_beforeChange == null) {
						// Console.WriteLine ("ComponentChangeAction.Undo: ERROR: UndoUnit is not complete.");
						return;
					}

					// Console.WriteLine ("ComponentChangeAction.Undo (" + _componentName + "." + _member.Name + ")");
					IDesignerHost host = (IDesignerHost)engine.GetRequiredService (typeof(IDesignerHost));
					_component = host.Container.Components[_componentName];

					ComponentSerializationService serializationService = engine.GetRequiredService (
						typeof (ComponentSerializationService)) as ComponentSerializationService;
					serializationService.DeserializeTo (_beforeChange, host.Container);

					SerializationStore tmp = _beforeChange;
					_beforeChange = _afterChange;
					_afterChange = tmp;
				}
        public object Serialize(ICollection objects)
        {
            ComponentSerializationService componentSerializationService = this.serviceProvider.GetService(typeof(ComponentSerializationService)) as ComponentSerializationService;

            using (SerializationStore serializationStore = componentSerializationService.CreateStore())
            {
                foreach (object obj in objects)
                {
                    if (obj is Control)
                    {
                        ((Control)obj).Name = null;
                        ((Control)obj).Name = null;
                        ((Control)obj).Name = "";
                        ((Control)obj).Name = "fdhgh";
                        componentSerializationService.Serialize(serializationStore, obj);
                    }
                }
                return(serializationStore);
            }
        }
Exemplo n.º 18
0
        public object Serialize(ICollection objects)
        {
            ComponentSerializationService componentSerializationService = serviceProvider.GetService(typeof(ComponentSerializationService)) as ComponentSerializationService;
            SerializationStore            returnObject = null;

            using (SerializationStore serializationStore = componentSerializationService.CreateStore())
            {
                foreach (object obj in objects)
                {
                    Control c = obj as Control;
                    if (c != null)
                    {
                        componentSerializationService.Serialize(serializationStore, obj);
                        serializeSubControls(componentSerializationService, serializationStore, c);
                    }
                }
                returnObject = serializationStore;
            }
            return(returnObject);
        }
 protected UndoEngine(IServiceProvider provider)
 {
     if (provider == null)
     {
         throw new ArgumentNullException("provider");
     }
     this._provider  = provider;
     this._unitStack = new Stack();
     this._enabled   = true;
     this._host      = this.GetRequiredService(typeof(IDesignerHost)) as IDesignerHost;
     this._componentChangeService   = this.GetRequiredService(typeof(IComponentChangeService)) as IComponentChangeService;
     this._serializationService     = this.GetRequiredService(typeof(ComponentSerializationService)) as ComponentSerializationService;
     this._host.TransactionOpening += new EventHandler(this.OnTransactionOpening);
     this._host.TransactionClosed  += new DesignerTransactionCloseEventHandler(this.OnTransactionClosed);
     this._componentChangeService.ComponentAdding   += new ComponentEventHandler(this.OnComponentAdding);
     this._componentChangeService.ComponentChanging += new ComponentChangingEventHandler(this.OnComponentChanging);
     this._componentChangeService.ComponentRemoving += new ComponentEventHandler(this.OnComponentRemoving);
     this._componentChangeService.ComponentAdded    += new ComponentEventHandler(this.OnComponentAdded);
     this._componentChangeService.ComponentChanged  += new ComponentChangedEventHandler(this.OnComponentChanged);
     this._componentChangeService.ComponentRemoved  += new ComponentEventHandler(this.OnComponentRemoved);
     this._componentChangeService.ComponentRename   += new ComponentRenameEventHandler(this.OnComponentRename);
 }
Exemplo n.º 20
0
        public static Activity[] DeserializeActivitiesFromDataObject(IServiceProvider serviceProvider, IDataObject dataObj, bool addReference)
        {
            IDesignerHost designerHost = (IDesignerHost)serviceProvider.GetService(typeof(IDesignerHost));

            if (designerHost == null)
            {
                throw new InvalidOperationException("IDesignerHost is missing.");
            }

            if (dataObj == null)
            {
                return new Activity[] { }
            }
            ;

            object      data       = dataObj.GetData(CF_DESIGNER);
            ICollection activities = null;

            if (data is Stream)
            {
                BinaryFormatter formatter = new BinaryFormatter();

                ((Stream)data).Seek(0, SeekOrigin.Begin);
                object serializationData = formatter.Deserialize((Stream)data);
                if (serializationData is SerializationStore)
                {
                    // get component serialization service
                    ComponentSerializationService css = serviceProvider.GetService(typeof(ComponentSerializationService)) as ComponentSerializationService;
                    if (css == null)
                    {
                        throw new Exception("ComponentSerializationService is missing.");
                    }

                    // deserialize data
                    activities = css.Deserialize((SerializationStore)serializationData);
                }
            }
            else
            {
                // Now check for a toolbox item.
                IToolboxService ts = (IToolboxService)serviceProvider.GetService(typeof(IToolboxService));
                if (ts != null && ts.IsSupported(dataObj, designerHost))
                {
                    ToolboxItem toolBoxItem = ts.DeserializeToolboxItem(dataObj, designerHost);
                    if (toolBoxItem != null)
                    {
                        // this will make sure that we add the assembly reference to project
                        if (addReference && toolBoxItem.AssemblyName != null)
                        {
                            ITypeResolutionService trs = serviceProvider.GetService(typeof(ITypeResolutionService)) as ITypeResolutionService;
                            if (trs != null)
                            {
                                trs.ReferenceAssembly(toolBoxItem.AssemblyName);
                            }
                        }

                        ActivityToolboxItem ActivityToolboxItem = toolBoxItem as ActivityToolboxItem;
                        if (addReference && ActivityToolboxItem != null)
                        {
                            activities = ActivityToolboxItem.CreateComponentsWithUI(designerHost);
                        }
                        else
                        {
                            activities = toolBoxItem.CreateComponents(designerHost);
                        }
                    }
                }
            }

            return((activities != null) ? (Activity[])(new ArrayList(activities).ToArray(typeof(Activity))) : new Activity[] { });
        }
Exemplo n.º 21
0
        internal virtual System.Windows.Forms.ToolStripItem MorphCurrentItem(System.Type t)
        {
            System.Windows.Forms.ToolStripItem component = null;
            IDesignerHost host = (IDesignerHost)this.GetService(typeof(IDesignerHost));

            if (host != null)
            {
                DesignerTransaction transaction     = host.CreateTransaction(System.Design.SR.GetString("ToolStripMorphingItemTransaction"));
                ToolStrip           immediateParent = (ToolStrip)this.ImmediateParent;
                if (immediateParent is ToolStripOverflow)
                {
                    immediateParent = this.ToolStripItem.Owner;
                }
                ToolStripMenuItemDesigner designer = null;
                int    index = immediateParent.Items.IndexOf(this.ToolStripItem);
                string name  = this.ToolStripItem.Name;
                System.Windows.Forms.ToolStripItem ownerItem = null;
                if (this.ToolStripItem.IsOnDropDown)
                {
                    ToolStripDropDown down = this.ImmediateParent as ToolStripDropDown;
                    if (down != null)
                    {
                        ownerItem = down.OwnerItem;
                        if (ownerItem != null)
                        {
                            designer = (ToolStripMenuItemDesigner)host.GetDesigner(ownerItem);
                        }
                    }
                }
                try
                {
                    ToolStripDesigner._autoAddNewItems = false;
                    ComponentSerializationService service = this.GetService(typeof(ComponentSerializationService)) as ComponentSerializationService;
                    SerializationStore            store   = null;
                    if (service != null)
                    {
                        store = service.CreateStore();
                        service.Serialize(store, base.Component);
                        SerializationStore    store2        = null;
                        ToolStripDropDownItem toolStripItem = this.ToolStripItem as ToolStripDropDownItem;
                        if ((toolStripItem != null) && typeof(ToolStripDropDownItem).IsAssignableFrom(t))
                        {
                            toolStripItem.HideDropDown();
                            store2 = service.CreateStore();
                            this.SerializeDropDownItems(toolStripItem, ref store2, service);
                            store2.Close();
                        }
                        store.Close();
                        IComponentChangeService service2 = (IComponentChangeService)this.GetService(typeof(IComponentChangeService));
                        if (service2 != null)
                        {
                            if (immediateParent.Site != null)
                            {
                                service2.OnComponentChanging(immediateParent, TypeDescriptor.GetProperties(immediateParent)["Items"]);
                            }
                            else if (ownerItem != null)
                            {
                                service2.OnComponentChanging(ownerItem, TypeDescriptor.GetProperties(ownerItem)["DropDownItems"]);
                                service2.OnComponentChanged(ownerItem, TypeDescriptor.GetProperties(ownerItem)["DropDownItems"], null, null);
                            }
                        }
                        this.FireComponentChanging(toolStripItem);
                        immediateParent.Items.Remove(this.ToolStripItem);
                        host.DestroyComponent(this.ToolStripItem);
                        System.Windows.Forms.ToolStripItem item4 = (System.Windows.Forms.ToolStripItem)host.CreateComponent(t, name);
                        if ((item4 is ToolStripDropDownItem) && (store2 != null))
                        {
                            service.Deserialize(store2);
                        }
                        service.DeserializeTo(store, host.Container, false, true);
                        component = (System.Windows.Forms.ToolStripItem)host.Container.Components[name];
                        if ((component.Image == null) && (component is ToolStripButton))
                        {
                            Image image = null;
                            try
                            {
                                image = new Bitmap(typeof(ToolStripButton), "blank.bmp");
                            }
                            catch (Exception exception)
                            {
                                if (System.Windows.Forms.ClientUtils.IsCriticalException(exception))
                                {
                                    throw;
                                }
                            }
                            PropertyDescriptor descriptor = TypeDescriptor.GetProperties(component)["Image"];
                            if ((descriptor != null) && (image != null))
                            {
                                descriptor.SetValue(component, image);
                            }
                            PropertyDescriptor descriptor2 = TypeDescriptor.GetProperties(component)["DisplayStyle"];
                            if (descriptor2 != null)
                            {
                                descriptor2.SetValue(component, ToolStripItemDisplayStyle.Image);
                            }
                            PropertyDescriptor descriptor3 = TypeDescriptor.GetProperties(component)["ImageTransparentColor"];
                            if (descriptor3 != null)
                            {
                                descriptor3.SetValue(component, Color.Magenta);
                            }
                        }
                        immediateParent.Items.Insert(index, component);
                        if (service2 != null)
                        {
                            if (immediateParent.Site != null)
                            {
                                service2.OnComponentChanged(immediateParent, TypeDescriptor.GetProperties(immediateParent)["Items"], null, null);
                            }
                            else if (ownerItem != null)
                            {
                                service2.OnComponentChanging(ownerItem, TypeDescriptor.GetProperties(ownerItem)["DropDownItems"]);
                                service2.OnComponentChanged(ownerItem, TypeDescriptor.GetProperties(ownerItem)["DropDownItems"], null, null);
                            }
                        }
                        this.FireComponentChanged(toolStripItem);
                        if (component.IsOnDropDown && (designer != null))
                        {
                            designer.RemoveItemBodyGlyph(component);
                            designer.AddItemBodyGlyph(component);
                        }
                        ToolStripDesigner._autoAddNewItems = true;
                        if (component != null)
                        {
                            if (component is ToolStripSeparator)
                            {
                                immediateParent.PerformLayout();
                            }
                            BehaviorService service3 = (BehaviorService)component.Site.GetService(typeof(BehaviorService));
                            if (service3 != null)
                            {
                                service3.Invalidate();
                            }
                            ISelectionService service4 = (ISelectionService)component.Site.GetService(typeof(ISelectionService));
                            if (service4 != null)
                            {
                                service4.SetSelectedComponents(new object[] { component }, SelectionTypes.Replace);
                            }
                        }
                    }
                    return(component);
                }
                catch
                {
                    host.Container.Add(this.ToolStripItem);
                    immediateParent.Items.Insert(index, this.ToolStripItem);
                    if (transaction != null)
                    {
                        transaction.Cancel();
                        transaction = null;
                    }
                }
                finally
                {
                    if (transaction != null)
                    {
                        transaction.Commit();
                        transaction = null;
                    }
                }
            }
            return(component);
        }
Exemplo n.º 22
0
        public void ComponentSerializationServiceCreated()
        {
            ComponentSerializationService serializationService = (ComponentSerializationService)loaderHost.GetService(typeof(ComponentSerializationService));

            Assert.IsTrue(serializationService is ComponentSerializationService);
        }
Exemplo n.º 23
0
 private void SerializeDropDownItems(ToolStripDropDownItem parent, ref SerializationStore _serializedDataForDropDownItems, ComponentSerializationService _serializationService)
 {
     foreach (System.Windows.Forms.ToolStripItem item in parent.DropDownItems)
     {
         if (!(item is DesignerToolStripControlHost))
         {
             _serializationService.Serialize(_serializedDataForDropDownItems, item);
             ToolStripDropDownItem item2 = item as ToolStripDropDownItem;
             if (item2 != null)
             {
                 this.SerializeDropDownItems(item2, ref _serializedDataForDropDownItems, _serializationService);
             }
         }
     }
 }
Exemplo n.º 24
0
        /// <summary>
        /// Used to create copies of the objects that we are dragging in a drag operation
        /// </summary>
        public static ICollection CopyDragObjects(ICollection objects, IServiceProvider svcProvider)
        {
            if (objects == null || svcProvider == null)
            {
                Debug.Fail("Invalid parameter passed to DesignerUtils.CopyObjects.");
                return(null);
            }

            Cursor oldCursor = Cursor.Current;

            try
            {
                Cursor.Current = Cursors.WaitCursor;
                ComponentSerializationService css = svcProvider.GetService(typeof(ComponentSerializationService)) as ComponentSerializationService;
                IDesignerHost host = svcProvider.GetService(typeof(IDesignerHost)) as IDesignerHost;

                Debug.Assert(css != null, "No component serialization service -- we cannot copy the objects");
                Debug.Assert(host != null, "No host -- we cannot copy the objects");
                if (css != null && host != null)
                {
                    SerializationStore store = null;

                    store = css.CreateStore();

                    // Get all the objects, meaning we want the children too
                    ICollection copyObjects = GetCopySelection(objects, host);

                    // The serialization service does not (yet) handle serializing collections
                    foreach (IComponent comp in copyObjects)
                    {
                        css.Serialize(store, comp);
                    }
                    store.Close();
                    copyObjects = css.Deserialize(store);

                    // Now, copyObjects contains a flattened list of all the controls contained in the original drag objects, that's not what we want to return.
                    // We only want to return the root drag objects, so that the caller gets an identical copy - identical in terms of objects.Count
                    ArrayList newObjects = new ArrayList(objects.Count);
                    foreach (IComponent comp in copyObjects)
                    {
                        Control c = comp as Control;
                        if (c != null && c.Parent == null)
                        {
                            newObjects.Add(comp);
                        }
                        else if (c == null)
                        { // this happens when we are dragging a toolstripitem
                            // TODO: Can we remove the ToolStrip specific code?
                            if (comp is ToolStripItem item && item.GetCurrentParent() == null)
                            {
                                newObjects.Add(comp);
                            }
                        }
                    }
                    Debug.Assert(newObjects.Count == objects.Count, "Why is the count of the copied objects not the same?");
                    return(newObjects);
                }
            }
            finally
            {
                Cursor.Current = oldCursor;
            }
            return(null);
        }
Exemplo n.º 25
0
        /// <summary>
        /// Deserializes the serialization data object and returns a
        /// collection of objects represented by that data.
        /// </summary>
        public ICollection Deserialize(object serializationData)
        {
            ComponentSerializationService serializationService = (ComponentSerializationService)serviceProvider.GetService(typeof(ComponentSerializationService));

            return(serializationService.Deserialize((SerializationStore)serializationData));
        }