public void ProcessCreateNewDatabase() { var projectID = new ProjectTreeHelper().GetCurrentProjectID(); if (projectID == Guid.Empty) { throw new InvalidOperationException("No active project."); } // TODO: move to separate class dedicated to the object creation var newDatabase = new DatabaseDTO() { DBName = "<Enter name>", ProjectID = projectID }; newDatabase.DataTypes.Add(new DataTypeDTO() { DatabaseID = newDatabase.ID, TypeName = "Boolean" }); newDatabase.DataTypes.Add(new DataTypeDTO() { DatabaseID = newDatabase.ID, TypeName = "Int8" }); newDatabase.DataTypes.Add(new DataTypeDTO() { DatabaseID = newDatabase.ID, TypeName = "Int16" }); newDatabase.DataTypes.Add(new DataTypeDTO() { DatabaseID = newDatabase.ID, TypeName = "Int32" }); newDatabase.DataTypes.Add(new DataTypeDTO() { DatabaseID = newDatabase.ID, TypeName = "Int64" }); newDatabase.DataTypes.Add(new DataTypeDTO() { DatabaseID = newDatabase.ID, TypeName = "Real32" }); newDatabase.DataTypes.Add(new DataTypeDTO() { DatabaseID = newDatabase.ID, TypeName = "Real64" }); newDatabase.DataTypes.Add(new DataTypeDTO() { DatabaseID = newDatabase.ID, TypeName = "Char", HasLength = true }); newDatabase.DataTypes.Add(new DataTypeDTO() { DatabaseID = newDatabase.ID, TypeName = "NChar", HasLength = true }); newDatabase.DataTypes.Add(new DataTypeDTO() { DatabaseID = newDatabase.ID, TypeName = "VarChar", HasLength = true }); newDatabase.DataTypes.Add(new DataTypeDTO() { DatabaseID = newDatabase.ID, TypeName = "NVarChar", HasLength = true }); newDatabase.DataTypes.Add(new DataTypeDTO() { DatabaseID = newDatabase.ID, TypeName = "Guid" }); newDatabase.DataTypes.Add(new DataTypeDTO() { DatabaseID = newDatabase.ID, TypeName = "DateTime" }); var view = new DatabaseDetailsView(); view.Object = newDatabase; var popup = new PopupWindow(); popup.Title = "New Database"; popup.Validate = () => { return(new Validator().Validate(newDatabase)); }; popup.ViewPanel.Children.Add(view); if (popup.ShowDialog() == true) { new ObjectDataSource().SaveObject(newDatabase); ServiceLocator serviceLocator = ServiceLocator.GetActive(); serviceLocator.BasicController.ProcessProjectTreeRefresh(); } }
public void ProcessShowProjectTreeNodeDetails() { var serviceLocator = ServiceLocator.GetActive(); serviceLocator.SessionState.ValidationErrors.Clear(); serviceLocator.SessionState.ObjectInEditor = null; var node = new ProjectTreeHelper().GetCurrentNode(); if (node == null) { serviceLocator.SessionState.DetailsPanel.Children.Clear(); serviceLocator.SessionState.DetailsView = null; return; } IDetailsView view = null; var persistentObject = node.Object as PersistentObjectDTO; if (persistentObject != null) { if (persistentObject.PersistentType == typeof(Entity)) { view = new EntityDetailsView(); } else if (persistentObject.PersistentType == typeof(Project)) { view = new ProjectDetailsView(); } else if (persistentObject.PersistentType == typeof(Database)) { view = new DatabaseDetailsView(); } else if (persistentObject.PersistentType == typeof(ERModel.Attribute)) { view = new AttributeDetailsView(); } else if (persistentObject.PersistentType == typeof(DataType)) { view = new DataTypeDetailsView(); } else if (persistentObject.PersistentType == typeof(Relation)) { view = new RelationDetailsView(); } else if (persistentObject.PersistentType == typeof(RelationItem)) { view = new RelationItemDetailsView(); } else if (persistentObject.PersistentType == typeof(Diagram)) { view = new DiagramChartView(); } else if (persistentObject.PersistentType == typeof(DiagramEntity)) { view = new DiagramEntityDetailsView(); } else if (persistentObject.PersistentType == typeof(BaseEnum)) { view = new BaseEnumDetailsView(); } else if (persistentObject.PersistentType == typeof(BaseEnumValue)) { view = new BaseEnumValueDetailsView(); } if (view != null) { view.Object = persistentObject; } } serviceLocator.SessionState.DetailsPanel.Children.Clear(); serviceLocator.SessionState.DetailsView = view; serviceLocator.SessionState.ObjectInEditor = persistentObject; if (view != null) { serviceLocator.SessionState.DetailsPanel.Children.Add(view as UIElement); } }