コード例 #1
0
        /// <summary>
        /// Inserts the data object into the context</summary>
        /// <param name="insertingObject">Data to insert; e.g., System.Windows.Forms.IDataObject</param>
        public void Insert(object insertingObject)
        {
            IDataObject dataObject = (IDataObject)insertingObject;

            object[] items = dataObject.GetData(typeof(object[])) as object[];
            if (items == null)
            {
                return;
            }

            object[] itemCopies = DomNode.Copy(items.AsIEnumerable <DomNode>());

            // create a new prototype
            DomNode   node      = new DomNode(Schema.prototypeType.Type);
            Prototype prototype = node.As <Prototype>();

            prototype.Name = "Prototype".Localize("Statechart prototype");
            foreach (StateBase state in itemCopies.AsIEnumerable <StateBase>())
            {
                prototype.States.Add(state);
            }
            foreach (Transition transition in itemCopies.AsIEnumerable <Transition>())
            {
                prototype.Transitions.Add(transition);
            }

            PrototypeFolder folder = m_activeItem.As <PrototypeFolder>();

            if (folder == null)
            {
                folder = PrototypeFolder;
            }

            folder.Prototypes.Add(prototype);
        }
コード例 #2
0
        /// <summary>
        /// Obtains enumeration of the children of the given parent object</summary>
        /// <param name="parent">Parent object</param>
        /// <returns>Enumeration of children of the parent object</returns>
        IEnumerable <object> ITreeView.GetChildren(object parent)
        {
            PrototypeFolder folder = parent.As <PrototypeFolder>();

            if (folder != null)
            {
                foreach (PrototypeFolder childFolder in folder.Folders)
                {
                    yield return(childFolder);
                }
                foreach (Prototype prototype in folder.Prototypes)
                {
                    yield return(prototype);
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// Sets the item's name</summary>
        /// <param name="item">Item to name</param>
        /// <param name="name">New item name</param>
        void INamingContext.SetName(object item, string name)
        {
            Prototype prototype = item.As <Prototype>();

            if (prototype != null)
            {
                prototype.Name = name;
            }
            else
            {
                PrototypeFolder folder = item.As <PrototypeFolder>();
                if (folder != null)
                {
                    folder.Name = name;
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// Gets the item's name in the context, or null if none</summary>
        /// <param name="item">Item</param>
        /// <returns>Item's name in the context, or null if none</returns>
        string INamingContext.GetName(object item)
        {
            Prototype prototype = item.As <Prototype>();

            if (prototype != null)
            {
                return(prototype.Name);
            }

            PrototypeFolder folder = item.As <PrototypeFolder>();

            if (folder != null)
            {
                return(folder.Name);
            }

            return(null);
        }
コード例 #5
0
        /// <summary>
        /// Fills in or modifies the given display info for the item</summary>
        /// <param name="item">Item</param>
        /// <param name="info">Display info to update</param>
        public void GetInfo(object item, ItemInfo info)
        {
            PrototypeFolder category = item.As <PrototypeFolder>();

            if (category != null)
            {
                info.Label = category.Name;
            }
            else
            {
                Prototype prototype = item.As <Prototype>();
                if (prototype != null)
                {
                    info.Label      = prototype.Name;
                    info.ImageIndex = info.GetImageList().Images.IndexOfKey(Resources.StatechartDocImage);
                    info.IsLeaf     = true;
                }
            }
        }
コード例 #6
0
        /// <summary>
        /// Gets the IDataObject for the items being dragged from a prototype lister, for
        /// use in a drag-and-drop operation</summary>
        /// <param name="items">Objects being dragged</param>
        /// <returns>IDataObject representing the dragged items</returns>
        public IDataObject GetInstances(IEnumerable <object> items)
        {
            List <object> instances = new List <object>();

            foreach (object item in items)
            {
                Prototype prototype = item.As <Prototype>();
                if (prototype != null)
                {
                    instances.AddRange(prototype.States.AsIEnumerable <object>());
                    instances.AddRange(prototype.Transitions.AsIEnumerable <object>());
                    continue;
                }

                PrototypeFolder folder = item.As <PrototypeFolder>();
                if (folder != null)
                {
                    instances.Add(folder);
                }
            }
            return(new DataObject(instances.ToArray()));
        }