Ejemplo n.º 1
0
        private void Save_Popup(object sender, RoutedEventArgs e)
        {
            var selectedAgArayuzInputItems   = new List <ConnectorViewModel>();
            var selectedGucArayuzInputItems  = new List <ConnectorViewModel>();
            var selectedAgArayuzOutputItems  = new List <ConnectorViewModel>();
            var selectedGucArayuzOutputItems = new List <ConnectorViewModel>();

            selectedAgArayuzInputItems.AddRange(GirdiAgArayuzListBox.SelectedItems.Cast <ConnectorViewModel>());
            selectedGucArayuzInputItems.AddRange(GirdiGucArayuzListBox.SelectedItems.Cast <ConnectorViewModel>());
            selectedAgArayuzOutputItems.AddRange(CiktiAgArayuzListBox.SelectedItems.Cast <ConnectorViewModel>());
            selectedGucArayuzOutputItems.AddRange(CiktiGucArayuzListBox.SelectedItems.Cast <ConnectorViewModel>());

            if (selectedAgArayuzInputItems.Count > 0 || selectedGucArayuzInputItems.Count > 0 || selectedAgArayuzOutputItems.Count > 0 || selectedGucArayuzOutputItems.Count > 0)
            {
                var agInputs = this.node.InputList.Where(x => x.TypeId == (int)TipEnum.AgAnahtariAgArayuzu || x.TypeId == (int)TipEnum.UcBirimAgArayuzu).ToList();
                agInputs = agInputs.Union(selectedAgArayuzInputItems).ToList();

                var gucInputs = this.node.InputList.Where(x => x.TypeId == (int)TipEnum.AgAnahtariGucArayuzu || x.TypeId == (int)TipEnum.UcBirimGucArayuzu || x.TypeId == (int)TipEnum.GucUreticiGucArayuzu).ToList();
                gucInputs = gucInputs.Union(selectedGucArayuzInputItems).ToList();

                var agOutputs = this.node.Transitions.Items.Where(x => x.TypeId == (int)TipEnum.AgAnahtariAgArayuzu || x.TypeId == (int)TipEnum.UcBirimAgArayuzu).ToList();
                agOutputs = agOutputs.Union(selectedAgArayuzOutputItems).ToList();

                var gucOutputs = this.node.Transitions.Items.Where(x => x.TypeId == (int)TipEnum.AgAnahtariGucArayuzu || x.TypeId == (int)TipEnum.UcBirimGucArayuzu || x.TypeId == (int)TipEnum.GucUreticiGucArayuzu).ToList();
                gucOutputs = gucOutputs.Union(selectedGucArayuzOutputItems).ToList();

                this.node.InputList   = new List <ConnectorViewModel>();
                this.node.OutputList  = new List <ConnectorViewModel>();
                this.node.Transitions = new SourceList <ConnectorViewModel>();

                NodeViewModel newNode = new NodeViewModel(this.node.NodesCanvas, this.node.Name, this.node.UniqueId, new Point(), 0, 9);

                var inputList        = new List <ConnectorViewModel>();
                var outputList       = new List <ConnectorViewModel>();
                var connctesToDelete = new List <ConnectViewModel>();
                var connctesToAdd    = new List <ConnectViewModel>();

                int i = 0;
                foreach (var input in agInputs)
                {
                    var inputMain = new ConnectorViewModel(input.NodesCanvas, newNode, input.Name, newNode.Point1.Addition(0, 30 + (i * 20)), input.UniqueId, input.KapasiteId, input.MinKapasite, input.MaxKapasite, input.FizikselOrtamId, null, input.KullanimAmaciId, null, null, null, null, null, null, null, null, input.Label, input.TypeId, input.Id, input.Port, null);
                    inputMain.AgAkisList = input.AgAkisList;
                    inputList.Add(inputMain);
                    i++;

                    var oldConnect = this.node.NodesCanvas.Connects.Where(x => x.ToConnector == input).FirstOrDefault();
                    if (oldConnect != null)
                    {
                        connctesToDelete.Add(oldConnect);
                        ConnectViewModel newConnect = new ConnectViewModel(this.node.NodesCanvas, oldConnect.FromConnector);
                        newConnect.AgYuku            = oldConnect.AgYuku;
                        newConnect.KabloKesitOnerisi = oldConnect.KabloKesitOnerisi;
                        newConnect.GucMiktari        = oldConnect.GucMiktari;
                        newConnect.Uzunluk           = oldConnect.Uzunluk;
                        newConnect.ToConnector       = inputMain;
                        connctesToAdd.Add(newConnect);
                    }
                }

                int count = i;
                i = 0;
                foreach (var input in gucInputs)
                {
                    var inputMain = new ConnectorViewModel(input.NodesCanvas, newNode, input.Name, newNode.Point1.Addition(0, 30 + ((i + count) * 20)), input.UniqueId, null, null, null, null, input.GerilimTipiId, input.KullanimAmaciId,
                                                           input.GirdiDuraganGerilimDegeri1, input.GirdiDuraganGerilimDegeri2, input.GirdiDuraganGerilimDegeri3, input.GirdiMinimumGerilimDegeri, input.GirdiMaksimumGerilimDegeri, input.GirdiTukettigiGucMiktari,
                                                           input.CiktiDuraganGerilimDegeri, input.CiktiUrettigiGucKapasitesi, input.Label, input.TypeId, input.Id, input.Port, null);

                    inputList.Add(inputMain);
                    i++;

                    var oldConnect = this.node.NodesCanvas.Connects.Where(x => x.ToConnector == input).FirstOrDefault();
                    if (oldConnect != null)
                    {
                        connctesToDelete.Add(oldConnect);
                        ConnectViewModel newConnect = new ConnectViewModel(this.node.NodesCanvas, oldConnect.FromConnector);
                        newConnect.AgYuku            = oldConnect.AgYuku;
                        newConnect.KabloKesitOnerisi = oldConnect.KabloKesitOnerisi;
                        newConnect.GucMiktari        = oldConnect.GucMiktari;
                        newConnect.Uzunluk           = oldConnect.Uzunluk;
                        newConnect.ToConnector       = inputMain;
                        connctesToAdd.Add(newConnect);
                    }
                }

                i = 0;
                foreach (var output in agOutputs)
                {
                    var outputMain = new ConnectorViewModel(output.NodesCanvas, newNode, output.Name, newNode.Point1.Addition(80, 54 + (i * 20)), output.UniqueId, output.KapasiteId, output.MinKapasite, output.MaxKapasite, output.FizikselOrtamId, null, output.KullanimAmaciId, null, null, null, null, null, null, null, null, output.Label, output.TypeId, output.Id, output.Port)
                    {
                        Visible = null
                    };

                    outputMain.AgAkisList    = output.AgAkisList;
                    outputMain.KalanKapasite = output.KalanKapasite;
                    i++;
                    outputList.Add(outputMain);

                    var oldConnect = this.node.NodesCanvas.Connects.Where(x => x.FromConnector == output).FirstOrDefault();
                    if (oldConnect != null)
                    {
                        connctesToDelete.Add(oldConnect);
                        ConnectViewModel newConnect = new ConnectViewModel(this.node.NodesCanvas, outputMain);
                        newConnect.AgYuku            = oldConnect.AgYuku;
                        newConnect.KabloKesitOnerisi = oldConnect.KabloKesitOnerisi;
                        newConnect.GucMiktari        = oldConnect.GucMiktari;
                        newConnect.Uzunluk           = oldConnect.Uzunluk;
                        newConnect.ToConnector       = oldConnect.ToConnector;
                        connctesToAdd.Add(newConnect);
                    }
                }

                count = i;
                i     = 0;
                foreach (var output in gucOutputs)
                {
                    var outputMain = new ConnectorViewModel(output.NodesCanvas, newNode, output.Name, newNode.Point1.Addition(80, 54 + ((i + count) * 20)), output.UniqueId, null, null, null, null, output.GerilimTipiId, output.KullanimAmaciId,
                                                            output.GirdiDuraganGerilimDegeri1, output.GirdiDuraganGerilimDegeri2, output.GirdiDuraganGerilimDegeri3, output.GirdiMinimumGerilimDegeri, output.GirdiMaksimumGerilimDegeri, output.GirdiTukettigiGucMiktari,
                                                            output.CiktiDuraganGerilimDegeri, output.CiktiUrettigiGucKapasitesi, output.Label, output.TypeId, output.Id, output.Port)
                    {
                        Visible = null
                    };

                    if (output.TypeId == (int)TipEnum.GucUreticiGucArayuzu && output.KullanimAmaciId == (int)KullanimAmaciEnum.Cikti)
                    {
                        outputMain.KalanKapasite = output.KalanKapasite;
                    }

                    i++;
                    outputList.Add(outputMain);

                    var oldConnect = this.node.NodesCanvas.Connects.Where(x => x.FromConnector == output).FirstOrDefault();
                    if (oldConnect != null)
                    {
                        connctesToDelete.Add(oldConnect);
                        ConnectViewModel newConnect = new ConnectViewModel(this.node.NodesCanvas, outputMain);
                        newConnect.AgYuku            = oldConnect.AgYuku;
                        newConnect.KabloKesitOnerisi = oldConnect.KabloKesitOnerisi;
                        newConnect.GucMiktari        = oldConnect.GucMiktari;
                        newConnect.Uzunluk           = oldConnect.Uzunluk;
                        newConnect.ToConnector       = oldConnect.ToConnector;
                        connctesToAdd.Add(newConnect);
                    }
                }

                this.node.NodesCanvas.Connects.Remove(connctesToDelete);
                this.node.NodesCanvas.Connects.Add(connctesToAdd);

                newNode.InputList  = inputList;
                newNode.OutputList = outputList;
                newNode.AddEmptyConnector();

                this.node.NodesCanvas.Nodes.Remove(this.node);
                this.node.NodesCanvas.Nodes.Add(newNode);
                this.group.InputList  = newNode.InputList;
                this.group.OutputList = newNode.OutputList;
                ClosePopup();
            }
            else
            {
                NotifyInfoPopup nfp = new NotifyInfoPopup();
                nfp.msg.Text = "Lütfen, en az bir arayüz seçiniz.";
                nfp.Owner    = Owner;
                nfp.Show();
            }
        }