Esempio n. 1
0
        /// <summary>
        /// Create new diagram panel in Main Window
        /// </summary>
        /// <param name="window">App window</param>
        /// <param name="title">Title of diagram</param>
        public static void CreateNewDiagram(MainWindow window, string title)
        {
            LayoutAnchorable anchorable = new LayoutAnchorable()
            {
                CanClose    = true,
                CanHide     = false,
                CanFloat    = true,
                CanAutoHide = false,
                Title       = title,
                ContentId   = $"{title}_ID"
            };

            DatabaseModelDesignerViewModel designerViewModel = new DatabaseModelDesignerViewModel()
            {
                DiagramTitle = title
            };

            window.MainWindowViewModel.DatabaseModelDesignerViewModels.Add(designerViewModel);

            DatabaseModelDesigner designer = new DatabaseModelDesigner()
            {
                ViewModel = designerViewModel,
            };

            designer.TableCreated      += window.CreateTableHandler;
            anchorable.Content          = designer;
            anchorable.IsActiveChanged += window.AnchorableDesignerActiveChangedHandler;
            window.MainDocumentPane.Children.Add(anchorable);
            int indexOf = window.MainDocumentPane.Children.IndexOf(anchorable);

            window.MainDocumentPane.SelectedContentIndex = indexOf;
            Output.WriteLine(DiagramCreated);
        }
Esempio n. 2
0
        public ForeignKeyCreatorDialog(string relationShipName, TableViewModel source, TableViewModel dest, DatabaseModelDesignerViewModel designerViewModel, DesignerCanvas canvas)
        {
            InitializeComponent();
            RelationshipName   = relationShipName;
            SourceTableVm      = source;
            DestinationTableVm = dest;
            DesignerViewModel  = designerViewModel;
            Canvas             = canvas;

            PrimaryAttributes.ItemsSource       = SourceTableVm.Model.Attributes.Where(t => t.PrimaryKey);
            PrimaryAttributes.DisplayMemberPath = "Name";

            ForeignAttributes.ItemsSource       = DestinationTableVm.Model.Attributes;
            ForeignAttributes.DisplayMemberPath = "Name";

            switch (SessionProvider.Instance.ConnectionType)
            {
            case ConnectionType.None:
                break;

            case ConnectionType.SqlServer:
                ReferentialAction = new string[] { "NO ACTION", "CASCADE", "SET NULL", "SET DEFAULT" };
                break;

            case ConnectionType.Oracle:
                OnUpdateVisibility = Visibility.Collapsed;
                ReferentialAction  = new string[] { "NO ACTION", "CASCADE", "SET NULL" };
                break;
            }
        }
        /// <summary>
        /// Save diagram to DB and refresh treeview in panel
        /// </summary>
        /// <param name="vm"></param>
        private async void SaveDiagramAndRefresh(DatabaseModelDesignerViewModel vm)
        {
            var facade = new DiagramFacade(vm);
            var res    = facade.SaveDiagram();

            Output.WriteLine(DiagramFacade.DiagramSaved);
            await DatabaseConnectionSidebar.RefreshTreeData();
        }
Esempio n. 4
0
        /// <summary>
        /// Create smaller grid for pathfinding - for non-async calls
        /// </summary>
        /// <param name="designer">From this viewmodel is grid created</param>
        /// <param name="step">Grid row/col step</param>
        /// <returns>Created grid</returns>
        public static Grid CreateMinifiedGridForPathFindingSync(DatabaseModelDesignerViewModel designer, int step)
        {
            var rects = GetTableRectangles(designer.TableViewModels, step).Select(s =>
            {
                var t = s.Y / step;
                var l = s.X / step;
                var r = s.Right / step;
                var b = s.Bottom / step;
                return(new Rectangle(l, t, r - l, b - t));
            });

            return(PathFinderHelper.CreateGrid((int)(designer.CanvasWidth / step), (int)designer.CanvasHeight / step, rects));
        }
Esempio n. 5
0
        /// <summary>
        /// Create smaller grid for pathfinding
        /// </summary>
        /// <param name="designer">From this viewmodel is grid created</param>
        /// <param name="step">Grid row/col step</param>
        /// <returns>Task for async execution => Created grid</returns>
        public static async Task <Grid> CreateMinifiedGridForPathFinding(DatabaseModelDesignerViewModel designer, int step)
        {
            var rects = GetTableRectangles(designer.TableViewModels, step).Select(s =>
            {
                var t = s.Y / step;
                var l = s.X / step;
                var r = s.Right / step;
                var b = s.Bottom / step;
                return(new Rectangle(l, t, r - l, b - t));
            });
            var res = await Task.Factory.StartNew(() => PathFinderHelper.CreateGrid((int)(designer.CanvasWidth / step), (int)designer.CanvasHeight / step, rects));

            return(res);
        }
Esempio n. 6
0
        public ForeignKeysDialog(DatabaseModelDesignerViewModel viewModel, ConnectionInfoViewModel selected = null)
        {
            InitializeComponent();
            DatabaseModelDesignerViewModel = viewModel;

            int index = 0;

            if (selected != null)
            {
                index = DatabaseModelDesignerViewModel.ConnectionInfoViewModels.IndexOf(selected);
            }

            SetupListBoxData(index);
            SetupFlyout();
        }
Esempio n. 7
0
 public DiagramFacade(DatabaseModelDesignerViewModel viewModel)
 {
     ViewModel = viewModel;
 }