internal EntityType_AddFromDialog(NewEntityDialog dialog)
 {
     _dialog = dialog;
 }
        internal void AddNewEntityType(PointD dropPoint)
        {
            if ((Partition.GetLocks() & Locks.Add) == Locks.Add)
            {
                return;
            }

            var model = ModelElement.ModelXRef.GetExisting(ModelElement) as ConceptualEntityModel;
            Debug.Assert(model != null);

            using (var dialog = new NewEntityDialog(model))
            {
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        Arranger.Start(dropPoint);
                        Store.RuleManager.DisableRule(typeof(EntityType_AddRule));

                        using (var t = Store.TransactionManager.BeginTransaction(EntityDesignerResources.Tx_AddEntityType))
                        {
                            t.Context.Add(EfiTransactionOriginator.TransactionOriginatorDiagramId, DiagramId);
                            ViewModelChangeContext.GetNewOrExistingContext(t).ViewModelChanges.Add(new EntityType_AddFromDialog(dialog));
                            t.Commit();
                        }
                    }
                    finally
                    {
                        Store.RuleManager.EnableRule(typeof(EntityType_AddRule));
                        Arranger.End();
                        EnsureSelectionVisible();
                    }
                }
            }
        }