void AddNewEntitiesToSubModel(string submodelName) { Submodel subModel = Model.Submodels.Submodel.FirstOrDefault(submodel => submodel.Name == submodelName); if (subModel == null) { throw new ArgumentNullException($"Submodel '{submodelName}' does not exist in the current model."); } IEnumerable <string> mainModelNodeLabels = subModel.Node.Select(node => node.Label).OrderBy(label => label); IEnumerable <string> entityLabels = Model.Entities.Entity.Select(entity => entity.Label).OrderBy(label => label); List <Entity> entitiesToAddToMainModel = new List <Entity>(); foreach (var entityLabel in entityLabels.Except(mainModelNodeLabels)) { entitiesToAddToMainModel.Add(Model.Entities.Entity.FirstOrDefault(label => label.Label == entityLabel)); } subModel.AddEntities(entitiesToAddToMainModel, 0, 0); Model.CaptureCoordinates(); if (this.entityEditor.IsEditable) { entityEditor.Reload(); } }
void GraphEditor_InsertNode(object sender, NodeEventArgs e) { Submodel.NodeLocalType model = e.Node?.UserData as Submodel.NodeLocalType; if (model == null) { Entity entity = new Schemas.Entity(Model); entity.Label = GetNewId(newNodeTypeEntity); entity.Name = entity.Label; Model.Entities.Entity.Add(entity); model = new Submodel.NodeLocalType(Model); model.Label = entity.Label; model.Xcoordinate = e.Center.X; model.Ycoordinate = e.Center.Y; model.EntityGuid = entity.Guid; if (Model.DisplayedSubmodel != mainSubmodel) { mainSubmodel.Node.Add(model.Clone()); } Model.DisplayedSubmodel.Node.Add(model); RefreshNodeCombobox(); //ResetLayout(); Model.RebindControl(); } // Auto select newly created entity selectedNode = model; selectedNode.Select(); entityEditor.Show(model.Entity, Model); EnableDisableButtons(); }
public EntityTreeNode(Model model, Entity entity) : base(entity.Label) { Model = model; Entity = entity; Guid = Guid.Parse(entity.Guid); relationship = new Lazy <List <Relationship> >(() => entity.GetRelationships(RelationshipDirection.In, true).ToList()); }
void GraphEditor_EdgeAdded(object sender, EdgeEventArgs e) { if (tsbEdgeInsertion.Checked == false || removingEdge == true) { return; } using (EdgeEditor editor = new EdgeEditor()) { editor.Model = Model; editor.SourceName = e.Edge.Source; editor.TargetName = e.Edge.Target; if (editor.ShowDialog() == DialogResult.OK) { Model.InsertRelationship(editor.SourceName, editor.TargetName, editor.Relationship, e.Edge); entityEditor.CloseEditor(); graphEditor.ClearSelection(); } else { Model.GraphEditor.Viewer.Undo(); } } Model.Invalidate(); }
void GraphEditor_EdgeRemoved(object sender, EdgeEventArgs e) { removingEdge = true; if (e?.Edge?.UserData is Relationship rel && rel.ContainsDrawingEdge && rel.DeleteIncludeRelationshipModel) { DialogResult dialogResult = MessageBox.Show($@"Are you sure you want to delete the relationship ""{rel.Source.Label}->[{rel.Name}]->{rel.Target.Label}"" from storage?", "WARNING!", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dialogResult == DialogResult.Yes) { Model.RemoveRelationship(rel); } else { Model.GraphEditor.Viewer.Undo(); } } if (entityEditor.IsEditable) { entityEditor.UpdateRelationshipGridView(); } removingEdge = false; Model.Invalidate(); }
public ManageEntityStaticDataForm(Model model, Entity entity) { InitializeComponent(); Model = model; Entity = entity; }
public RelationshipTreeNode(Model model, Relationship rel) : base(rel.Name) { inEntity = new Lazy <Entity>(() => model.Entities.Entity.Where(x => x.Label == rel.Source.Label).FirstOrDefault()); outEntity = new Lazy <Entity>(() => model.Entities.Entity.Where(x => x.Label == rel.Target?.Label).FirstOrDefault()); Checked = true; Relationship = rel; Guid = Guid.Parse(rel.Guid); }
public ManageSubmodelForm(Model modeller, Submodel submodel) { InitializeComponent(); Model = modeller; Submodel = submodel; IsMainModel = submodel.Name == Constants.MainModel; IsNewModel = submodel.Name == null; AssignToUi(); Text = "Edit Submodel"; }
public ManageFunctionalId(Model model) { InitializeComponent(); this.Model = model; cmbType.Items.Clear(); cmbType.Items.AddRange(Enum.GetNames(typeof(IdFormat))); cmbType.SelectedIndex = 0; InitializeDataBindings(); SetupForSelection(); }
void GraphEditor_EditSubmodelClick(object sender, EventArgs e) { ManageSubmodelForm form = new Modeller.ManageSubmodelForm(Model, Model.DisplayedSubmodel); if (form.ShowDialog() == DialogResult.OK) { Model.CaptureCoordinates(); Model.RebindControl(); RefreshNodeCombobox(); FillSubmodelComboBox(form.Submodel); } }
private void SugiyamaToolStripMenuItem_CheckedChanged(object sender, EventArgs e) { AddOrClearViewModeCheckEvents(false); sugiyamaToolStripMenuItem.Checked = sugiyamaToolStripMenuItem.Checked; mdsToolStripMenuItem.Checked = false; originalSettingsToolStripMenuItem.Checked = sugiyamaToolStripMenuItem.Checked == false; AddOrClearViewModeCheckEvents(true); SetGraphViewModel(originalSettingsToolStripMenuItem.Checked ? LayoutMethod.UseSettingsOfTheGraph : LayoutMethod.SugiyamaScheme); Model.RebindControl(); }
public UpdateFunctionalIdForm(Model model, EntityEditor parentControl) { InitializeComponent(); this.Model = model; this.ParentControl = parentControl; cmbType.Items.Clear(); cmbType.Items.AddRange(Enum.GetNames(typeof(IdFormat))); cmbType.SelectedIndex = 0; txtName.Text = parentControl.Entity.Label; }
private void OriginalSettingsToolStripMenuItem_CheckedChanged(object sender, EventArgs e) { AddOrClearViewModeCheckEvents(false); originalSettingsToolStripMenuItem.Checked = true; mdsToolStripMenuItem.Checked = false; sugiyamaToolStripMenuItem.Checked = false; AddOrClearViewModeCheckEvents(true); Model.ViewMode = LayoutMethod.UseSettingsOfTheGraph; Model.RebindControl(); }
void GraphEditor_ExcludeEntity(object sender, NodeEventArgs e) { if (e.Node.UserData is Submodel.NodeLocalType model) { Model.ExcludeFromCurrentModel(model); } ReloadGraph(); Model.Invalidate(); RefreshNodeCombobox(); CloseNodeEditor(); EnableDisableButtons(); }
private void btnSave_Click(object sender, EventArgs e) { string type = cmbType.SelectedItem.ToString(); string prefix = txtPrefix.Text.Trim(); string name = txtName.Text.Trim(); if (string.IsNullOrEmpty(name)) { MessageBox.Show("Name cannot be empty.", "Cannot Save Functiond Id", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtName.Focus(); return; } if (string.IsNullOrEmpty(prefix)) { MessageBox.Show("Prefix cannot be empty.", "Cannot Save Functiond Id", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtPrefix.Focus(); return; } if (this.Model.FunctionalIds.FunctionalId.Any(functionalId => functionalId.Name == name)) { MessageBox.Show($"Name \"{name}\" already exists.", "Cannot Save Functiond Id", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtName.Focus(); return; } if (this.Model.FunctionalIds.FunctionalId.Any(functionalId => functionalId.Value == prefix)) { MessageBox.Show($"Prefix \"{prefix}\" already exists.", "Cannot Save Functiond Id", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtPrefix.Focus(); return; } FunctionalId funcId = new FunctionalId(Model); funcId.Type = type; funcId.Value = prefix; funcId.Name = name; funcId.Guid = Model.GenerateGuid(name).ToString(); this.Model.FunctionalIds.FunctionalId.Add(funcId); string displayName = string.Concat(string.Concat(name, " - "), prefix); ParentControl.RefreshEntity(); ParentControl.FunctionalIdComboBox.SelectedIndex = ParentControl.FunctionalIdComboBox.FindStringExact(displayName); this.Close(); MessageBox.Show("Functional Id saved in memory.", "Saved", MessageBoxButtons.OK, MessageBoxIcon.Information); }
private void BtnSave_Click(object sender, EventArgs e) { if (File.Exists(StoragePath) == false && SaveAs() == DialogResult.Cancel) { return; } Model.HasChanges = false; Model.CaptureCoordinates(); Model.Save(StoragePath); MessageBox.Show("Diagram saved successfully.", "Confirmation", MessageBoxButtons.OK, MessageBoxIcon.Information); if (this.entityEditor.IsEditable) { entityEditor.Reload(); } }
void GraphEditor_DeleteEntity(object sender, NodeEventArgs e) { if (e.Node.UserData is Submodel.NodeLocalType node) { DialogResult dialogResult = MessageBox.Show($@"Are you sure you want to delete the {EntityNodeName.ToLower()} ""{node.Label}"" from storage?", "WARNING!", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dialogResult == DialogResult.Yes) { Model.DeleteEntity(node); ReloadGraph(); Model.Invalidate(); RefreshNodeCombobox(); CloseNodeEditor(); EnableDisableButtons(); } } }
void InitializeModel(ModellerType modellerType) { if ((object)Model != null) { Model.UnRegisterEvents(); } Model = new Model(); try { if (File.Exists(StoragePath)) { Model = new Model(StoragePath); } } catch (XmlException) { MessageBox.Show($"The path {StoragePath} is an invalid xml file", "Invalid Xml File", MessageBoxButtons.OK, MessageBoxIcon.Error); RegistryHandler.LastOpenedFile = string.Empty; if (Model == null) { Model = new Model(); } } Model.Type = Model.Type ?? modellerType.ToString(); Model.HasChanges = false; Model.BeforeReBind = ClearEvents; Model.AfterReBind = AddEvents; Model.ShowRelationshipLabels = showLabels; Model.ShowInheritedRelationships = showInherited; string editorName = Model.ModellerType == ModellerType.Blueprint41 ? B41_EDITOR : NEO4J_EDITOR; this.Text = $"{FORMNAME} - ({editorName})"; graphEditor.ModellerType = Model.ModellerType; //CheckGuidDiscrepancies(); }
private async void Timer_ElapsedAsync(object sender, ElapsedEventArgs e) { //Run on background await Task.Run(() => { if (form.Model != null) { try { Model newModel = new Model(null, (modeller)form.Model.Xml.Clone()); newModel.Save(RecoveryFile); newModel = null; Console.WriteLine($"Saved to {RecoveryFile}"); } catch { } } }); saveComplete?.Invoke(); }
DialogResult CheckForChangesAndSaveIfPossible() { if (Model == null || Model.HasChanges == false) { return(DialogResult.No); } string fileName = Path.GetFileName(StoragePath); DialogResult result = MessageBox.Show($@"Do you want to save changes to ""{fileName}"" ?", "Save Changes", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (result == DialogResult.Yes) { Model.HasChanges = false; Model.CaptureCoordinates(); Model.Save(StoragePath); } return(result); }
private void CmbNodes_SelectedIndexChanged(object sender, EventArgs e) { if (cmbNodes.SelectedItem == null) { return; } RemoveHighlightNodes(); if (cmbNodes.SelectedIndex == 0) { entityEditor.CloseEditor(); Model.GraphReset(); return; } selectedNode = cmbNodes.SelectedItem as Submodel.NodeLocalType; entityEditor.Show(selectedNode.Entity, Model); selectedNode.Highlight(); }
private void GenerateUpdateScriptToolStripMenuItem_Click(object sender, EventArgs e) { ModuleLoader module = ModuleLoader.GetModule("Compare"); if (module == null) { MessageBox.Show("The comparer is not available.", "Info", System.Windows.Forms.MessageBoxButtons.OK); return; } else { // Save it before generating update script Model.CaptureCoordinates(); Model.Save(StoragePath); module.RunModule(Model.Xml, StoragePath); // Re initalize model after generating update script // this will reload the xml InitializeXmlModeller(); } }
public ManageSubmodelForm(Model modeller) : this(modeller, new Submodel(modeller)) { Text = "Add Submodel"; }
public InheritedEntityTreeNode(Model model, Entity entity) : base(entity.Label) { Model = model; Entity = entity; Checked = true; }
private void TsbHome_Click(object sender, EventArgs e) { Model.GraphReset(); }
void SetGraphViewModel(LayoutMethod method) { Model.ViewMode = method; Model.RedoLayout(); }