/// <summary> /// Copies the given elements to the dataObject. /// </summary> /// <param name="elements">Elements to copy.</param> /// <param name="dataObject">DataObject to add the data to.</param> /// <returns>DataObjects with the added data.</returns> public static IDataObject Copy(ICollection <ModelElement> elements, IDataObject dataObject) { Guid guid = Guid.NewGuid(); ModelProtoGroup protoGroup = new ModelProtoGroup(elements, ModelProtoGroupOperation.Copy); dataObject.SetData(ModelProtoGroup.DefaultDataFormatName, protoGroup); dataObject.SetData(ModelProtoGroup.DefaultDataIdentifierName, guid); // update cached prototype cachedPrototype = new CachedModelProtoGroup(guid, protoGroup); return(dataObject); }
/// <summary> /// Retrieves a model proto group from the given data object if one exists. /// </summary> /// <param name="dataObject">Data objects to retrieve a model proto group from.</param> /// <returns>ModelProtoGroup instance or null.</returns> public static ModelProtoGroup GetModelProtoGroup(IDataObject dataObject) { ModelProtoGroup group = null; if (dataObject.GetDataPresent(ModelProtoGroup.DefaultDataFormatName)) { Guid guid = Guid.Empty; if (dataObject.GetDataPresent(ModelProtoGroup.DefaultDataIdentifierName)) { guid = (System.Guid)dataObject.GetData(ModelProtoGroup.DefaultDataIdentifierName); } if ((cachedPrototype != null) && guid == cachedPrototype.InstanceId) { return(cachedPrototype.Prototype); } object obj = dataObject.GetData(ModelProtoGroup.DefaultDataFormatName); group = obj as ModelProtoGroup; cachedPrototype = new CachedModelProtoGroup(guid, group); } return(group); }
/// <summary> /// Retrieves a model proto group from the given data object if one exists. /// </summary> /// <param name="dataObject">Data objects to retrieve a model proto group from.</param> /// <returns>ModelProtoGroup instance or null.</returns> public static ModelProtoGroup GetModelProtoGroup(IDataObject dataObject) { ModelProtoGroup group = null; if (dataObject.GetDataPresent(ModelProtoGroup.DefaultDataFormatName)) { Guid guid = Guid.Empty; if (dataObject.GetDataPresent(ModelProtoGroup.DefaultDataIdentifierName)) guid = (System.Guid)dataObject.GetData(ModelProtoGroup.DefaultDataIdentifierName); if ((cachedPrototype != null) && guid == cachedPrototype.InstanceId) return cachedPrototype.Prototype; object obj = dataObject.GetData(ModelProtoGroup.DefaultDataFormatName); group = obj as ModelProtoGroup; cachedPrototype = new CachedModelProtoGroup(guid, group); } return group; }
/// <summary> /// Copies the given elements to the dataObject. /// </summary> /// <param name="elements">Elements to copy.</param> /// <param name="dataObject">DataObject to add the data to.</param> /// <returns>DataObjects with the added data.</returns> public static IDataObject Copy(ICollection<ModelElement> elements, IDataObject dataObject) { Guid guid = Guid.NewGuid(); ModelProtoGroup protoGroup = new ModelProtoGroup(elements, ModelProtoGroupOperation.Copy); dataObject.SetData(ModelProtoGroup.DefaultDataFormatName, protoGroup); dataObject.SetData(ModelProtoGroup.DefaultDataIdentifierName, guid); // update cached prototype cachedPrototype = new CachedModelProtoGroup(guid, protoGroup); return dataObject; }