コード例 #1
0
        public void CreateNewProject()
        {
            CompositionInstance mainComposition = new CompositionInstance();

            mainComposition.Name = CompositionInstancesList.MainCompositionName;
            ActiveComposition    = mainComposition;
            compositions.Add(mainComposition);
            BaseDataTypes.CheckBaseDataTypes();
        }
コード例 #2
0
        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;
                    }
                }
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 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);
     }
 }
コード例 #5
0
        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;
        }
コード例 #6
0
        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;
        }
コード例 #7
0
        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);
                }
            }
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
            }
        }
コード例 #10
0
        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;
                            }
                        }
                    }
                }
            }
        }