示例#1
0
 private void populateViewIfObjectExists(DataVertexRegulator dvr)
 {
     lineTo.Text                 = dvr.Line_Segment_To.ToString();
     last_value                  = lineTo.Text;
     dynamicButton.Content       = "Update";
     dynamicButton2.IsEnabled    = true;
     MyTextBox.Text              = dvr.RegulatorID;
     bandwidthTextBox.Text       = dvr.Bandwidth.ToString();
     ptRatioTextBox.Text         = dvr.Ratio.ToString();
     primaryCTRatingTextBox.Text = dvr.PrimaryCTRating.ToString();
     rsettingA.Text              = dvr.R_SettingA.ToString();
     rsettingB.Text              = dvr.R_SettingB.ToString();
     xsettingA.Text              = dvr.X_SettingA.ToString();
     xsettingB.Text              = dvr.X_SettingB.ToString();
     voltage_level.Text          = dvr.VoltageLevelA.ToString();
     voltage_levelB.Text         = dvr.VoltageLevelB.ToString();
     foreach (DataEdge de in globalEdges[dvr.Line_Segment_From])
     {
         if (de.Target.Element_id == dvr.Line_Segment_To)
         {
             length.Text = de.Length.ToString();
             break;
         }
     }
 }
示例#2
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (!allFilled())
            {
                MessageBox.Show("You have to enter all data");
                return;
            }

            if ((_mn.graphView.DataContext as GraphViewModel).dvrp != null)
            {
                MessageBox.Show("Second part of regulator exists!");
                return;
            }

            if (globalVertices.ContainsKey(lineTo.Text) && lineTo.Text != last_value)
            {
                MessageBox.Show("Node with that ID already exists, change Line segment to input.");
                return;
            }


            DataVertexRegulator        dvr = setupDataVertexRegulatorObject();
            DataVertexRegulatorPartial dvrp;

            if ((_mn.graphView.DataContext as GraphViewModel).dvrp != null)
            {
                dvrp = (_mn.graphView.DataContext as GraphViewModel).dvrp;
                dynamicButton.Content = "Update";
            }
            else
            {
                dvrp = new DataVertexRegulatorPartial()
                {
                    typeOfVertex         = DataVertex.TypeOfVertex.REGULATOR_PARTIAL_VERTEX,
                    Text                 = "Synchronous machine second ending: " + dvr.Line_Segment_To,
                    RegulatorID          = dvr.Line_Segment_To,
                    Element_id           = dvr.Line_Segment_To,
                    CompensatorSettingsB = dvr.CompensatorSettingsB,
                    R_SettingB           = dvr.R_SettingB,
                    X_SettingB           = dvr.X_SettingB,
                    VoltageLevelB        = dvr.VoltageLevelB,
                };
                (_mn.graphView.DataContext as GraphViewModel).dvrp = dvrp;
            }



            if (dynamicButton.Content.ToString() == "Update")
            {
                (_mn.graphView.DataContext as GraphViewModel).UpdateVertices(dvr, dvrp, last_value, length.Text);
                last_value = dvr.Line_Segment_To;
            }
            else
            {
                (_mn.graphView.DataContext as GraphViewModel).CreateComplexVertexWithPartialType(dvr, dvrp, dv, length.Text);
            }

            _mn.CloseAllWindows();
        }
        private void CreateRegulatorVertex(DataVertex dv, double m = 0, double n = 0)
        {
            VertexControl vc;

            if (dvr != null)
            {
                MessageBox.Show("Regulator already created");
                return;
            }


            dvr = new DataVertexRegulator()
            {
                Text = dv.Text, Element_id = dv.Element_id
            };
            vc = new VertexControl(dvr);


            if (m == 0)
            {
                dvr.Text = "Synchronous machine first ending: " + dv.Element_id;
                vc.SetPosition(new Point(x, y));
            }
            else
            {
                vc.SetPosition(m, n);
            }



            dvr.typeOfVertex = DataVertex.TypeOfVertex.REGULATOR_VERTEX;


            vc.Background = Brushes.Red;

            mainWindow.GlobalVertices.Add(dvr.Element_id, dvr);
            mainWindow.graphView.Area.AddVertexAndData(dvr, vc, true);

            Point point = CreatePointBasedOn(vc);

            if (graphState == GraphState.NORMAL)
            {
                x += 30;
                y += 30;
            }


            return;
        }
示例#4
0
        public RegulatorView(DataVertex dv)
        {
            InitializeComponent();

            this.dv             = dv;
            this._mn            = App.Current.MainWindow as MainWindow;
            this.globalVertices = _mn.GlobalVertices;
            this.globalEdges    = _mn.GlobalEdges;


            DataVertexRegulator dvr = (DataVertexRegulator)dv;

            if (dvr.RegulatorID != null)
            {
                populateViewIfObjectExists(dvr);
            }

            setupViewDeafultValues();
        }
        public void PrepareComplexVertexForDelete(DataVertex dv)
        {
            VertexControl vc = GetVertexControlWithDataVertex(dv.Element_id);

            Point p = CreatePointBasedOn(vc);

            DeleteVertex(dv);


            if (dv.typeOfVertex == DataVertex.TypeOfVertex.REGULATOR_VERTEX)
            {
                dvr = (DataVertexRegulator)dv;
                if (dvr.Line_Segment_To != null)
                {
                    if (mainWindow.GlobalVertices.Keys.Contains(dvr.Line_Segment_To))
                    {
                        DeleteVertex(mainWindow.GlobalVertices[dvr.Line_Segment_To]);
                        mainWindow.GlobalVertices.Remove(dvr.Line_Segment_To);
                        dvrp = null;
                    }
                }

                dvr = null;
            }
            else if (dv.typeOfVertex == DataVertex.TypeOfVertex.TRANSFORMER_VERTEX)
            {
                dvt = (DataVertexTransformer)dv;
                if (dvt.Line_to != null)
                {
                    if (mainWindow.GlobalVertices.Keys.Contains(dvt.Line_to))
                    {
                        DeleteVertex(mainWindow.GlobalVertices[dvt.Line_to]);
                        mainWindow.GlobalVertices.Remove(dvt.Line_to);
                        dvtp = null;
                    }
                }

                dvt = null;
            }

            mainWindow.enableButtonIfEdgesExists();
            mainWindow.CloseAllWindows();
        }
示例#6
0
        private DataVertexRegulator setupDataVertexRegulatorObject()
        {
            DataVertexRegulator.enumPhases              ep   = (DataVertexRegulator.enumPhases)phaseEnum.SelectedItem;
            DataVertexRegulator.enumConnection          cn   = (DataVertexRegulator.enumConnection)connection.SelectedItem;
            DataVertexRegulator.enumMonitoring          em   = (DataVertexRegulator.enumMonitoring)monitoringPhase.SelectedItem;
            DataVertexRegulator.enumCompensatorSettings ecs  = (DataVertexRegulator.enumCompensatorSettings)compensatorSettingsA.SelectedItem;
            DataVertexRegulator.enumCompensatorSettings ecs2 = (DataVertexRegulator.enumCompensatorSettings)compensatorSettingsB.SelectedItem;

            DataVertexRegulator dvr = new DataVertexRegulator()
            {
                Text                 = dv.Text,
                Element_id           = dv.Element_id,
                typeOfVertex         = DataVertex.TypeOfVertex.REGULATOR_VERTEX,
                Location             = dv.Text,
                Line_Segment_From    = dv.Element_id,
                Line_Segment_To      = lineTo.Text,
                connected_nodes      = dv.connected_nodes,
                RegulatorID          = MyTextBox.Text,
                Bandwidth            = Double.Parse(bandwidthTextBox.Text),
                Ratio                = Double.Parse(ptRatioTextBox.Text),
                PrimaryCTRating      = Double.Parse(primaryCTRatingTextBox.Text),
                Phases               = ep,
                Connection           = cn,
                MonitoringPhase      = em,
                CompensatorSettingsA = ecs,
                CompensatorSettingsB = ecs2,
                R_SettingA           = Double.Parse(rsettingA.Text),
                R_SettingB           = Double.Parse(rsettingB.Text),
                X_SettingA           = Double.Parse(xsettingA.Text),
                X_SettingB           = Double.Parse(xsettingB.Text),
                VoltageLevelA        = Double.Parse(voltage_level.Text),
                VoltageLevelB        = Double.Parse(voltage_levelB.Text),
                //Length = Double.Parse(length.Text)
            };

            return(dvr);
        }
        public void DeleteVertex(DataVertex dv)
        {
            //Area.RemoveVertex(globalVertices[dv.Text]);
            mainWindow.GlobalVertices.Remove(dv.Element_id);
            Console.WriteLine(mainWindow.GlobalVertices);
            bool is_empty = true;
            bool has_edge = false;


            is_empty = CheckIfZeroEdgesExist();


            //if 0 edges exist we can remove it
            RemoveIfZeroEdgesExist(is_empty, dv.Element_id);

            //if more then 0 edges exist we look for them
            has_edge = RemoveIfMoreThenZeroEdgesExist(dv);

            //if its not empty and its has edges, its third case, we delete it
            if (!is_empty && !has_edge)
            {
                VertexControl vc = GetVertexControlWithDataVertex(dv.Element_id);

                if (vc == null)
                {
                    return;
                }

                mainWindow.graphView.Area.RemoveVertex((vc.Vertex as DataVertex));
            }


            if (dv.typeOfVertex == DataVertex.TypeOfVertex.REGULATOR_VERTEX)
            {
                dvr = null;

                if (dvrp != null)
                {
                    DeleteVertex(dvrp);
                    dvrp = null;
                }
            }


            if (dv.typeOfVertex == DataVertex.TypeOfVertex.TRANSFORMER_VERTEX)
            {
                dvt = null;
                if (dvtp != null)
                {
                    DeleteVertex(dvtp);
                    dvtp = null;
                }
            }


            //now we look for his edges and delete them
            foreach (string key in mainWindow.GlobalEdges.Keys)
            {
                foreach (DataEdge de in mainWindow.GlobalEdges[key])
                {
                    if (de.Target.Element_id == dv.Element_id)
                    {
                        mainWindow.GlobalEdges[key].Remove(de);

                        if (mainWindow.graphView.Area.EdgesList.ContainsKey(de))
                        {
                            mainWindow.graphView.Area.RemoveEdge(de);
                            break;
                        }
                    }
                }
            }


            if (dv.typeOfVertex == DataVertex.TypeOfVertex.REGULATOR_PARTIAL_VERTEX || dv.typeOfVertex == DataVertex.TypeOfVertex.TRANSFORMER_PARTIAL_VERTEX)
            {
                foreach (DataVertex temp in mainWindow.graphView.Area.VertexList.Keys)
                {
                    if (temp.Element_id == dv.Element_id)
                    {
                        mainWindow.graphView.Area.RemoveVertex(temp);
                        break;
                    }
                }
            }

            if (graphState == GraphState.NORMAL)
            {
                undoRedoCommander.addUndoCommand(new Command("DeleteVertex", dv));
            }
        }