/// <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); }
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(); }
/// <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)); }
/// <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); }
public ForeignKeysDialog(DatabaseModelDesignerViewModel viewModel, ConnectionInfoViewModel selected = null) { InitializeComponent(); DatabaseModelDesignerViewModel = viewModel; int index = 0; if (selected != null) { index = DatabaseModelDesignerViewModel.ConnectionInfoViewModels.IndexOf(selected); } SetupListBoxData(index); SetupFlyout(); }
public DiagramFacade(DatabaseModelDesignerViewModel viewModel) { ViewModel = viewModel; }