Example #1
0
        public MainWindowViewModel()
        {
            MainWindowSingleton = this;
            ClassViewModels     = new ObservableCollection <ClassViewModel>();
            ClassViewModels.Add(new ClassViewModel()
            {
                Name       = "Test",
                Attributes = new ObservableCollection <FieldViewModel>()
                {
                    new FieldViewModel()
                    {
                        Name = "TestAt", Type = VisibilityType.Public
                    }
                },
                Methods = new ObservableCollection <FieldViewModel>()
                {
                    new FieldViewModel()
                    {
                        Name = "TestMet", Type = VisibilityType.Private
                    }
                },
                Id       = 0,
                Position = new Point(100, 100),
                Height   = 160,
                Width    = 200
            });
            ClassViewModels.Add(new ClassViewModel()
            {
                Name       = "Test",
                Attributes = new ObservableCollection <FieldViewModel>()
                {
                    new FieldViewModel()
                    {
                        Name = "TestAt", Type = VisibilityType.Public
                    }
                },
                Methods = new ObservableCollection <FieldViewModel>()
                {
                    new FieldViewModel()
                    {
                        Name = "TestMet", Type = VisibilityType.Private
                    }
                },
                Id       = 1,
                Position = new Point(700, 100),
                Height   = 160,
                Width    = 200
            });

            LineaViewModels = new ObservableCollection <LineViewModel>();
            LineaViewModels.Add(new LineViewModel(ClassViewModels[0], ClassViewModels[1]));

            AddClass = new Command(() =>
            {
                var att = new ObservableCollection <FieldViewModel>();
                att.Add(new FieldViewModel()
                {
                    Name = "New Attribute"
                });
                var met = new ObservableCollection <FieldViewModel>();
                met.Add(new FieldViewModel()
                {
                    Name = "New Method"
                });
                ClassViewModels.Add(new ClassViewModel()
                {
                    Id         = ClassViewModels.GetMaxId() + 1,
                    Name       = "Class",
                    Position   = MainWindow.MousePosition,
                    Attributes = att,
                    Methods    = met,
                    Height     = 160,
                    Width      = 200
                });
            });
            Load = new Command(() =>
            {
                OpenFileDialog openFileDialog = new OpenFileDialog();
                if (openFileDialog.ShowDialog() == true)
                {
                    XmlParser xmlParser = new XmlParser(openFileDialog.FileName);
                    ClassViewModels.Clear();
                    foreach (var classViewModel in xmlParser.GetClasses().ToClassViewModels())
                    {
                        ClassViewModels.Add(classViewModel);
                    }
                    LineaViewModels.Clear();
                    foreach (var line in xmlParser.GetLines())
                    {
                        LineaViewModels.Add(new LineViewModel(ClassViewModels.GetById(line.First), ClassViewModels.GetById(line.Second)));
                    }
                }
            });
            Save = new Command(() =>
            {
                OpenFileDialog openFileDialog = new OpenFileDialog();
                if (openFileDialog.ShowDialog() == true)
                {
                    XmlSaver xmlSaver = new XmlSaver(openFileDialog.FileName);
                    xmlSaver.SetClasses(ClassViewModels.ToClass());
                    xmlSaver.SetLines(LineaViewModels.ToLine());
                }
            });
        }