public void CreateNewProject() { CompositionInstance mainComposition = new CompositionInstance(); mainComposition.Name = CompositionInstancesList.MainCompositionName; ActiveComposition = mainComposition; compositions.Add(mainComposition); BaseDataTypes.CheckBaseDataTypes(); }
public void Viewport_MouseDown(MouseButtonEventArgs e, Point sceneCursorPosition) { if (e.LeftButton == MouseButtonState.Pressed) { /* Add Connection Line command started */ if (this.AddConnectionLineActive == true) { Object selectedObject = null; bool clicked; clicked = AutosarApplication.GetInstance().ActiveComposition.GetClickedObject(sceneCursorPosition, out selectedObject); /* if we check in main composition */ if (!clicked) { CompositionInstance mainComposition = AutosarApplication.GetInstance().Compositions.GetMainComposition(); foreach (CompositionInstance composition in AutosarApplication.GetInstance().Compositions) { if (!composition.Equals(mainComposition)) { clicked = composition.IsClicked(sceneCursorPosition, out selectedObject); if (clicked == true) { break; } } } } if (clicked == true) { /* Check that PortPainter has been selected first */ if (selectedObject is PortPainter) { firstPort = selectedObject as PortPainter; connectionPainter = PortConnectionFabric.GetInstance().CreatePortConnection(); connectionPainter.Port1 = firstPort; connectionPainter.SecondPoint = sceneCursorPosition; leftMouseDown = true; return; } else { AddConnectionLineActive = false; } } else { AddConnectionLineActive = false; } } } }
public void CreateNewComposition() { CompositionInstance newComposition = new CompositionInstance(); newComposition.Painter.Width = 100; newComposition.Painter.Height = 100; newComposition.UpdateAnchorsPositions(); newComposition.Name = FindNewNameForComposition(); AutosarApplication.GetInstance().Compositions.Add(newComposition); tree.UpdateAutosarTreeView(newComposition); }
public void Delete(CompositionInstance composition) { if (!composition.Name.Equals(CompositionInstancesList.MainCompositionName)) { /* Delete all connections to the composition */ PortsConnectionsList connections = composition.GetConnections(); foreach (PortConnection connection in connections) { Delete(connection); } compositions.Remove(composition); } }
private void Window_Loaded(object sender, RoutedEventArgs e) { /* Get main composition and open it */ CompositionInstance mainComposition = AutosarApplication.GetInstance().Compositions.GetMainComposition(); compositionInstanceController.Composition = mainComposition; CompositionProperties_TabItem.IsEnabled = true; SelectElement(mainComposition); tabHideHelper.SelectTab(CompositionTab); tabHideHelper.ProcessTabs(); Render(null, null); changeViewportScaleController.FitWorldToImage(ViewPortImage.ActualWidth, ViewPortImage.ActualHeight); AutosarApplication.GetInstance().UpdateFontAccordingScale(scene.Context.Scale); Render(null, null); //loaded = true; }
public void Viewport_MouseLeftButtonUp(Point sceneCoordinates) { /* Add Connection Line command started */ if (this.AddConnectionLineActive == true) { Object newSelectedObject; bool clicked = AutosarApplication.GetInstance().ActiveComposition.GetClickedObject(sceneCoordinates, out newSelectedObject); /* if we check in main composition */ if (!clicked) { CompositionInstance mainComposition = AutosarApplication.GetInstance().Compositions.GetMainComposition(); foreach (CompositionInstance composition in AutosarApplication.GetInstance().Compositions) { if (!composition.Equals(mainComposition)) { clicked = composition.IsClicked(sceneCoordinates, out newSelectedObject); if (clicked) { break; } } } } if (newSelectedObject is PortPainter) { PortPainter startPort = connectionPainter.Port1; PortPainter endPort = newSelectedObject as PortPainter; /* Check that we can assign another port to this */ if (CouldPortsBeAssigned(startPort, endPort)) { connectionPainter.Port2 = endPort; connectionPainter.UpdateLines(); connectionPainter.UpdateName(); CompositionInstance currentComposition = AutosarApplication.GetInstance().ActiveComposition; currentComposition.Connections.AddConnection(connectionPainter); connectionPainter = null; treeView.UpdateAutosarTreeView(null); } } AddConnectionLineActive = false; } leftMouseDown = false; }
public void ViewPortImage_Drop(DragEventArgs e, double worldCoordX, double worldCoordY) { object obj = e.Data.GetData(typeof(ComponentDefenition)); if (obj is ComponentDefenition) { ComponentDefenition realDefenition = (ComponentDefenition)obj; int count = AutosarApplication.GetInstance().GetComponentDefenitionCount(realDefenition); if (realDefenition.MultipleInstantiation || ((count == 0) && (!realDefenition.MultipleInstantiation))) { ComponentInstance compInstance = ComponentFabric.GetInstance().CreateComponent(realDefenition, worldCoordX, worldCoordY); compInstance.UpdateAnchorsPositions(); CompositionInstance activeComposition = AutosarApplication.GetInstance().ActiveComposition; activeComposition.ComponentInstances.Add(compInstance); } } }
public List <PortConnection> GetComponentConnections(object obj) { List <PortConnection> connections = new List <PortConnection>(); if (obj is ComponentInstance) { ComponentInstance compInstance = (ComponentInstance)obj; foreach (CompositionInstance composition in Compositions) { foreach (PortConnection connection in composition.Connections) { if ((compInstance.Ports.IndexOf(connection.Port1) != -1) || (compInstance.Ports.IndexOf(connection.Port2) != -1)) { connections.Add(connection); } } } } else if (obj is CompositionInstance) { CompositionInstance composition = (CompositionInstance)obj; if (!composition.Name.Equals(CompositionInstancesList.MainCompositionName)) { CompositionInstance mainComposition = compositions.GetMainComposition(); if (mainComposition != null) { foreach (PortConnection connection in mainComposition.Connections) { if ((composition.Ports.IndexOf(connection.Port1) != -1) || (composition.Ports.IndexOf(connection.Port2) != -1)) { connections.Add(connection); } } } else { throw new Exception("There is no main composition!"); } } } return(connections); }
protected void TestComposition(CompositionInstance elem) { bool withoutErrors = true; /* Check if there is an fields with similar names */ withoutErrors &= CheckSimilarNames(elem.Ports.ConvertAll(x => x as IGUID), elem.Name + ": ports"); /* Ports */ foreach (PortDefenition port in elem.PortsDefenitions) { if (port.InterfaceName.Equals(AutosarApplication.ErrorDataType)) { AppendText("Composition: " + elem.Name + ", Port : " + port.Name + " doesn't have specified datatype ", Error: true); withoutErrors = false; } } if (withoutErrors) { AppendText(elem.Name); } }
public void GetOppositePortAndComponent(PortPainter portPainter, out ComponentInstance oppositeComponent, out PortPainter oppositePort) { oppositeComponent = null; oppositePort = null; if (portPainter.PortDefenition.InterfaceName == "isrDesiredForce") { } PortsConnectionsList portConnections = GetPortConnections(portPainter); if (portConnections.Count != 0) { oppositePort = portConnections[0].GetOppositePort(portPainter); if (oppositePort != null) { IElementWithPorts elem = FindComponentInstanceByPort(oppositePort); if (elem is ComponentInstance) { /* No problem just return the component*/ oppositeComponent = elem as ComponentInstance; } /* the port belongs to the composition */ else if (elem is CompositionInstance) { CompositionInstance composition = elem as CompositionInstance; PortPainter middlePort; /* Is it composition's external port?*/ int externalPortIndex = composition.Ports.IndexOf(oppositePort); if (externalPortIndex >= 0) { /* get internal index */ middlePort = composition.InternalPortsInstances[externalPortIndex]; } else /* It was internal port */ { /* get external port */ int internalPortIndex = composition.InternalPortsInstances.IndexOf(oppositePort); middlePort = composition.Ports[internalPortIndex]; } /* Get middle port connections */ portConnections = GetPortConnections(middlePort); if (portConnections.Count > 0) { PortConnection connection = portConnections[0]; oppositePort = connection.GetOppositePort(middlePort); Object oppositeObject = FindComponentInstanceByPort(oppositePort); /* Check if another port belongs to composition */ if (oppositeObject is CompositionInstance) { CompositionInstance oppositeComposition = oppositeObject as CompositionInstance; PortPainter middlePort2; int externalPortIndex2 = oppositeComposition.Ports.IndexOf(oppositePort); /* get internal index */ middlePort2 = oppositeComposition.InternalPortsInstances[externalPortIndex2]; /* Get middle port connections */ PortsConnectionsList portConnections2 = GetPortConnections(middlePort2); if (portConnections2.Count > 0) { PortConnection connection3 = portConnections2[0]; oppositePort = connection3.GetOppositePort(middlePort2); oppositeComponent = FindComponentInstanceByPort(oppositePort) as ComponentInstance; } } else { oppositeComponent = oppositeObject as ComponentInstance; } } } } } }