private static string GetSpecificLayoutMacro(RelationshipView relationshipView) { var direction = relationshipView.GetDirection(out _); switch (direction) { case DirectionValues.Back: return("Rel_Back"); case DirectionValues.Neighbor: return("Rel_Neighbor"); // C4 PlantUml without u case DirectionValues.Neighbour: return("Rel_Neighbor"); // C4 PlantUml without u case DirectionValues.BackNeighbor: return("Rel_Back_Neighbor"); // C4 PlantUml without u case DirectionValues.BackNeighbour: return("Rel_Back_Neighbor"); // C4 PlantUml without u case DirectionValues.Up: return("Rel_Up"); case DirectionValues.Down: return("Rel_Down"); case DirectionValues.Left: return("Rel_Left"); case DirectionValues.Right: return("Rel_Right"); default: return("Rel"); } }
public void Test_GetRelationships_WhenTheOrderPropertyIsAString() { string characters = "abcdefghij"; containerA1.Uses(containerA2, "uses"); DynamicView view = Workspace.Views.CreateDynamicView(softwareSystemA, "key", "Description"); for (int i = 0; i < 10; i++) { RelationshipView relationshipView = view.Add(containerA1, containerA2); relationshipView.Order = "1" + characters.ToCharArray()[i]; } List <RelationshipView> relationships = new List <RelationshipView>(view.Relationships); Assert.Equal("1a", relationships[0].Order); Assert.Equal("1b", relationships[1].Order); Assert.Equal("1c", relationships[2].Order); Assert.Equal("1d", relationships[3].Order); Assert.Equal("1e", relationships[4].Order); Assert.Equal("1f", relationships[5].Order); Assert.Equal("1g", relationships[6].Order); Assert.Equal("1h", relationships[7].Order); Assert.Equal("1i", relationships[8].Order); Assert.Equal("1j", relationships[9].Order); }
/// <summary> /// Set a direction of the relation which should be used in a specific C4PlantUML views /// </summary> /// <param name="relationshipView"></param> /// <param name="direction">one of <see cref="DirectionValues"/></param> public static void SetDirection(this RelationshipView relationshipView, string direction) { if (string.IsNullOrWhiteSpace(direction)) // direction DirectionValues.NotSet { relationshipView.Properties.Remove(Properties.Direction); } else { relationshipView.Properties[Properties.Direction] = direction; } }
/// <summary> /// Get a direction of the relation which should be used in a specific C4PlantUML views /// </summary> /// <param name="relationshipView"></param> /// <param name="viewSpecific">returns true if it is defined via the view specific RelationshipView and false if it is defined via the underlying Relationship</param> /// <returns></returns> public static string GetDirection(this RelationshipView relationshipView, out bool viewSpecific) { string value = DirectionValues.NotSet; if (relationshipView.Properties?.TryGetValue(Properties.Direction, out value) == true) { viewSpecific = true; return(value); } viewSpecific = false; value = relationshipView.Relationship.GetDirection(); return(value); }
private static Link CreateLink(RelationshipView relationship) { var link = new Link { Source = relationship.Relationship.SourceId, Target = relationship.Relationship.DestinationId, }; if (string.IsNullOrWhiteSpace(relationship.Relationship.Description) == false) { link.Description = relationship.Relationship.Description; link.Label = MakeLabel(relationship.Relationship.Description); } return(link); }
protected virtual void Write(RelationshipView relationshipView, TextWriter writer, string advancedDescription = null) { var relationship = relationshipView.Relationship; string source = TokenizeName(relationship.Source), dest = TokenizeName(relationship.Destination), label = advancedDescription ?? relationship.Description ?? "", tech = !string.IsNullOrWhiteSpace(relationship.Technology) ? relationship.Technology : null; var macro = GetSpecificLayoutMacro(relationshipView); writer.Write($"{macro}({source}, {dest}, \"{EscapeText(label)}\""); if (tech != null) { writer.Write($", \"{EscapeText(tech)}\""); } writer.WriteLine(")"); }
protected virtual void WriteDynamicInteraction(RelationshipView relationshipView, TextWriter writer, string order, string label = null) { var relationship = relationshipView.Relationship; string source = TokenizeName(relationship.Source), dest = TokenizeName(relationship.Destination), tech = !string.IsNullOrWhiteSpace(relationship.Technology) ? relationship.Technology : null; var macro = GetSpecificLayoutMacro(relationshipView); macro = "Interact2" + macro.Substring("Rel".Length); writer.Write($"{macro}(\"{order}\", {source}, {dest}, \"{EscapeText(label)}\""); if (tech != null) { writer.Write($", \"{EscapeText(tech)}\""); } writer.WriteLine(")"); }
public void Test_GetRelationships_WhenTheOrderPropertyIsADecimal() { containerA1.Uses(containerA2, "uses"); DynamicView view = Workspace.Views.CreateDynamicView(softwareSystemA, "key", "Description"); for (int i = 0; i < 10; i++) { RelationshipView relationshipView = view.Add(containerA1, containerA2); relationshipView.Order = "1." + i; } List <RelationshipView> relationships = new List <RelationshipView>(view.Relationships); Assert.Equal("1.0", relationships[0].Order); Assert.Equal("1.1", relationships[1].Order); Assert.Equal("1.2", relationships[2].Order); Assert.Equal("1.3", relationships[3].Order); Assert.Equal("1.4", relationships[4].Order); Assert.Equal("1.5", relationships[5].Order); Assert.Equal("1.6", relationships[6].Order); Assert.Equal("1.7", relationships[7].Order); Assert.Equal("1.8", relationships[8].Order); Assert.Equal("1.9", relationships[9].Order); }
private void button1_Click(object sender, EventArgs e) { if (comboBox1.SelectedIndex != comboBox2.SelectedIndex && !parentWinwoWindow.isContainRelationship(comboBox1.SelectedIndex, comboBox2.SelectedIndex)) { try { Essenishial one = parentWinwoWindow.EssenshialViews[comboBox1.SelectedIndex]; Essenishial two = parentWinwoWindow.EssenshialViews[comboBox2.SelectedIndex]; ErRelationshipConnectType oneConnectType = new ErRelationshipConnectType(); if (radioButton5.Checked) oneConnectType.ModalType = ErRelationshipConnectType.ModalTypes.Can; else oneConnectType.ModalType = ErRelationshipConnectType.ModalTypes.Must; ErRelationshipConnectType twoConnectType = new ErRelationshipConnectType(); if (radioButton1.Checked) twoConnectType.ModalType = ErRelationshipConnectType.ModalTypes.Can; else twoConnectType.ModalType = ErRelationshipConnectType.ModalTypes.Must; RelationshipView view = new RelationshipView(parentWinwoWindow.draw_panel1.Controls, one, two, oneConnectType, twoConnectType, parentWinwoWindow._curentDiagram); parentWinwoWindow.ErRelationshipViews.Add(view); DialogResult = DialogResult.OK; Close(); } catch (ErDiagramNotCreateRelationshipExeption e1) { MessageBox.Show("Сущности не имеют общих полей!"); } } }