private void Branch_Click(object sender, RoutedEventArgs e) { #if DEBUG ElementWatcher.ClearRecording(); ElementWatcher.Recording = true; #endif Project branchProject; if (versionManager == null) { versionManager = new VersionManager(); branchProject = versionManager.BranchProject(project, MainWindow.PIMRepresentantsSet.ElementRepresentationOrder, true); cbBranches.DataContext = versionManager; } else { branchProject = versionManager.BranchProject(project, MainWindow.PIMRepresentantsSet.ElementRepresentationOrder, false); } branchProject.CreateModelController(); branchProject.GetModelController().getUndoStack().ItemsChanged += MainWindow.UndoStack_ItemsChanged; cbBranches.SelectedItem = branchProject.Version; MainWindow.HasUnsavedChanges = true; #if DEBUG Tests.ModelIntegrity.ModelConsistency.CheckEverything(project); Tests.ModelIntegrity.ModelConsistency.CheckEverything(branchProject); Tests.ModelIntegrity.ModelConsistency.CheckElementSchema(ElementWatcher.CreatedElements, branchProject.Schema, null); Tests.ModelIntegrity.VersionsConsistency.CheckVersionsConsistency(versionManager); foreach (Element element in ElementWatcher.CreatedElements) { if (element.Version != branchProject.Version && !(element is InstantiatedProperty) && !(element is StereotypeInstance)) { System.Diagnostics.Debug.WriteLine(String.Format("{0} element without version", element)); } } #endif }
/// <summary> /// Creates a new empty element. /// Adaptee is set to null, an empty comments collection is created. /// </summary> /// <param name="_schema"> /// Reference to the Schema instance that is the top /// of this model hierarchy. /// </param> /// <param name="_metaclass"> /// UML metaclass(es) that this element is instance of. /// Bitwise combination of StereotypeTarget values. /// </param> protected _Element(Schema _schema, StereotypeTarget _metaclass) { adaptedElement = default(NUmlType); comments = new ObservableCollection <Comment>(); comments.CollectionChanged += OnCommentsChanged; appliedStereotypes = new ObservableCollection <StereotypeInstance>(); schema = _schema; metaclass = _metaclass; if (schema.Model != null && schema.Model.VersionManager != null) { schema.Model.VersionManager.SetAsFirstVersion(this, schema.Model.Version); } #if DEBUG ElementWatcher.InvokeElementCreated(this); #endif Guid = XCaseGuid.NewGuid(); }